Rstudioにおいて、scale関数を使わずにベクトルの正規化をしようと思い、取得したベクトルの平均と標準偏差を使って
センタリングとスケーリングを行っているのですが、分散が1ぴったりにならなくて困っています。
(ソースコード)
data_11<-c(2,2,2,3,3,3,4,4,4)
seikika<-function(x)
{
av<-mean(x)
y<-x-av
ss<-sqrt(sum((x-av)^2)/length(x))
yy<-y/ss
print(mean(yy))
print(var(yy))
return(yy)
}
seikika(data_11)
(実行結果)
data_11<-c(2,2,2,3,3,3,4,4,4)
seikika<-function(x)
- {
- av<-mean(x)(平均の算出)
- y<-x-av(センタリング)
- ss<-sqrt(sum((x-av)^2)/length(x))(標準偏差の算出)
- yy<-y/ss(スケーリング)
- print(mean(yy))
- print(var(yy))
- return(yy)
- }
seikika(data_11)
[1] 0
[1] 1.125(ここがどうしても1になりません)
[1] -1.224745 -1.224745 -1.224745 0.000000 0.000000
[6] 0.000000 1.224745 1.224745 1.224745
(試したこと)
標準偏差の算出において、(length(x)-1)に置き換えると分散が1ちょうどになるのですが、仕組みが分かりません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。