バイオインフォをやっている大学院生です。プログラミングのことなどを書きます。

Rで標本分散、標準偏差、CVを計算する

Rでvarやsdで計算されるのは標本分散、標本標準偏差ではなくそれぞれ不偏分散と不偏標準偏差になります。 nをサンプル数、\overline{x}を平均値とします。

標本分散

f:id:feb_march:20200123155543p:plain

標本標準偏差

f:id:feb_march:20200123155555p:plain

不偏分散

f:id:feb_march:20200123155603p:plain

不偏標準偏差

f:id:feb_march:20200123155615p:plain

標本分散と標準偏差、ついでにCV(coefficient of variation, 標準偏差/平均)を求める関数は下のようになります。

# 標本分散
sample_var <- function(x,...){
    return(var(x,...) * (length(x)-1) / length(x))
}

# 標本標準偏差
sample_sd <-function(x,...){
    return(sd(x,...) * sqrt((length(x)-1)/length(x)))
}

# 変動係数
cv <- function(x,...){
    return(sample_sd(x,...)/mean(x))
}

参考
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/59.html