Hatena::ブログ(Diary)

My Life as a Mock Quant このページをアンテナに追加 RSSフィード Twitter

2017-09-28

"相関係数の標準誤差"の計算について

| 00:18 | "相関係数の標準誤差"の計算についてを含むブックマーク

掲題の件、そういうことです。

ここのCrossValidated 、及び参照されている論文を見ると、相関係数の標準誤差は


 ¥frac{1-¥rho^2}{n}


として計算されるらしい。記号の意味はお察し。

これをRで愚直にシミュレーションした結果とチェックしたら大体あってた(下図)ので、これでいいんだろうと。

f:id:teramonagi:20170929001831p:image

Reproducibleなコード

library(MASS)
# 指定した相関係数の標準誤差をシミュレーションから出す
simulate <- function(size_unit, size_iter, correlation)
{
  cors <- numeric(size_iter)
  for(i in seq_len(size_iter)){
    x <- mvrnorm(size_unit, c(0, 0), matrix(c(1, correlation, correlation, 1.0), ncol=2))
    cors[i] <- cor(x)[2]
  }
  sd(cors)
}

# 理論値とシミュレーションでーたを生成
set.seed(71)
result <- list()
# 一回の試行で引っ張るサンプル数
size_unit <- 10^4
for(correlation in (0.1*c(3, 5, 7, 9))){
  title <- sprintf("Cor=%s", correlation)
  value <- c((1-correlation^2)/sqrt(size_unit), simulate(size_unit, 10^3, correlation))
  type <- c("theoritical", "simulation")
  result[[length(result)+1]] <- data.frame(title, type, value)
}
result <- Reduce(rbind, result)

# 可視化
library(ggplot2)
ggplot(result, aes(title, value, fill=type)) + 
  geom_bar(stat="identity", position = "dodge") + 
  scale_fill_brewer(palette = "Set1")
トラックバック - http://d.hatena.ne.jp/teramonagi/20170928/1506611938