No.00108 任意の分散値を持たせたい  【にっしー】 2006/05/22(Mon) 14:49

ある1/f雑音があります。
これを任意の分散値をもつようにしたいのですが,
どのようにしたらよいでしょうか?
平均0,分散1には標準化を用いて設定することができるのですが。。。

No.00110 Re: 任意の分散値を持たせたい  【青木繁伸】 06/05/22(Mon) 16:01

標準化したデータを a 倍すれば,新しいデータの分散は a^2 になりますが?
標準化の作業を省いて,任意のデータを任意の分散を持つように変更するには,以下のような R 関数を使えばよいでしょう。

# データベクトル x を,任意の分散 v を持つように変換する
> conv <- function(x, v) return(sqrt(v/var(x))*x)
> x <- c(1,4,2,8,13)
> var(x)
[1] 24.3
> z <- conv(x, 3.14159)
> var(z)
[1] 3.14159

次に来る質問が見えそうなので,

# 任意のデータベクトル x を,任意の平均値 m と 分散 v を持つように変換する
> conv2 <- function(x, m=0, v=1) return((x-mean(x))/sd(x)*sqrt(v)+m)
> z <- conv2(x); mean(z); var(z) # m=0, v=1 がデフォルト
[1] 7.771561e-17
[1] 1
> z2 <- conv2(x, m=100, v=10); mean(z2); var(z2)
[1] 100
[1] 10

● 「統計学関連なんでもあり」の過去ログ--- 038 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る