相関データと非相関データの平均の分散


7

私はこのパラグラフをJames et al、Introduction to Statistical Learning、p183-184 [1]で読みました:

高度に相関している多くの量の平均は、高度に相関していない多くの量の平均よりも分散が大きいため、LOOCVから得られるテスト誤差推定は、k倍CVから生じるテスト誤差推定よりも分散が大きくなる傾向があります。

この主張の有効性をチェックするために、例えばRの数値例を教えてもらえますか?

私は次のコードを使用してそれをチェックしようとしました:

x = 1:100 #highly correlated data
y = sample(100) #same data without correlation
var(x) == var(y) # TRUE

このコードの何が問題になっていますか?

  • LOOCVは「1つを残さない相互検証」を表します

[1]:James、G.、Witten、D.、Hastie、T.、Tibshirani、R。(2013)、
Rでのアプリケーションを使用した統計学習の概要
Springer Texts in Statistics、Springer Science + Business Media、ニューヨーク


あなたならばsort(sample(100))それは同じですが表示されます1:100ので、その分散が同一です。あなたの投稿の最初のビットであなたを助けることはできません-私は相関量がより低い分散(例えばクラスター内相関)を持っていると思いましたが、LOOCVが何であるかわかりません。
マシュー

私はそれらが同じであり、順序だけが変更されていることを知っています。ただし、1:100は相関数ですが、sample(100)はそうではありません。
Farid Cheraghi 16

ベクトル1:100は、ベクトルよりも相関がありませんsample(100)。これらは異なる方法で生成された可能性がありますが、順序は別として同じです。確かに、分散の計算では順序は考慮されません。相関データをシミュレートする方法の例がオンラインであり、おそらく必要なものです。
マシュー

試してみてくださいacf(x)acf(y)、自分を参照してください!
Farid Cheraghi 2016

ああ、私は自己相関については考えていませんでした。それでも、分散が等しい理由は、分散varを計算した場合と同じように、順序付けが関数に無関係であるためです。また、おそらくより役立つリンクを
Matthew

回答:


12

コードで計算された分散は、各配列を100個の個別の値の1つのサンプルであるかのように表示します。配列とその置換されたバージョンの両方に同じ100の値が含まれているため、それらの分散は同じです。

見積もりの​​状況をシミュレートする正しい方法は、繰り返しが必要です。 値のサンプルを生成します。その平均を計算します。(これは「テストエラー推定」の役割を果たします。)何度も繰り返します。収集すべてのこれらの手段とどのくらい見彼らは異なります。これは、引用で言及されている「差異」です。

私たちは何が起こるかを予測するかもしれません:

  • このプロセスの各サンプルの要素が正の相関がある場合、1つの値が高いと、他の値も高くなる傾向があります。その場合、平均は高くなります。1つの値が低い場合、他の値も低くなる傾向があります。その場合、平均は低くなります。したがって、平均は高くなるか低くなる傾向があります。

  • 各サンプルの要素が相関していない場合、一部の要素が高い量は、他の低い要素によってバランスが取られる(または「取り消される」)ことがよくあります。全体の平均は、サンプルが抽出された母集団の平均に非常に近くなる傾向があり、めったにそれ以上またはそれ以下になることはまれです。

Rこれを実行するのが簡単になります。 主なトリックは、相関サンプルを生成することです。1つの方法は、標準の正規変数を使用することです。それらの線形結合を使用して、任意の量の相関を誘導できます。

ここでは、たとえば、サイズサンプルを使用して5,000回実行されたときのこの繰り返し実験の結果です。1つのケースでは、サンプルは標準正規分布から取得されました。もう1つは、平均と単位分散がゼロの場合と同様の方法で得られたものですが、それらから得られた分布の相関係数はでした。n=290%

図

上の行は、すべての5,000平均の頻度分布を示しています。下の行は、5,000ペアのすべてのデータによって生成された散布図を示しています。ヒストグラムの広がりの違いから、非相関サンプルからの平均のセットは相関サンプルからの平均のセットよりも分散が少なく、「キャンセル」の引数の例です。

拡散量の違いは、相関が高く、サンプルサイズが大きいほど顕著になります。Rコードは、あなたがこれらを指定することができますrhoし、nあなたが試すことができますので、それぞれ。問題のコードと同様に、その目的はxy(非相関サンプルから)および(相関サンプルから)配列を作成して、さらに比較することです。

n <- 2
rho <- 0.9
n.sim <- 5e3
#
# Create a data structure for making correlated variables.
#
Sigma <- outer(1:n, 1:n, function(i,j) rho^abs(i-j))
S <- svd(Sigma)
Q <- S$v %*% diag(sqrt(S$d))
#
# Generate two sets of sample means, one uncorrelated (x) and the other correlated (y).
#
Z <- matrix(rnorm(n*n.sim), nrow=n)
x <- colMeans(Z)
y <- colMeans(Q %*% Z)
#
# Display the histograms of both.
#
par(mfrow=c(2,2))
h.y <- hist(y, breaks=50, plot=FALSE)
h.x <- hist(x, breaks=h.y$breaks, plot=FALSE)
ylim <- c(0, max(h.x$density))
hist(x, main="Uncorrelated", freq=FALSE, breaks=h.y$breaks, ylim=ylim)
hist(y, main="Correlated", freq=FALSE, breaks=h.y$breaks, ylim=ylim)
#
# Show scatterplots of the first two elements of the samples.
#
plot(t(Z)[, 1:2], pch=19, col="#00000010", xlab="x.1", ylab="x.2", asp=1)
plot(t(Q%*%Z)[, 1:2], pch=19, col="#00000010", xlab="x.1", ylab="x.2", asp=1)

ここで、平均との配列の分散を計算するxy、それらの値は異なります。

> var(x)
[1] 0.5035174
> var(y)
[1] 0.9590535

理論から、これらの分散はおよび近いことがわかります。5,000回の繰り返しが行われただけなので、理論値とは異なります。繰り返しが多いほど、との分散は理論値に近づきます。(1+1)/22=0.5(1+2×0.9+1)/22=0.95xy


3
PDFのテキスト検索を使用してESLII(10番目の印刷)で見積もりを見つけることができませんでしたが、ISLRで一語一句異なります(そのため、私が今質問に挿入した参照です)
Glen_b -Reinstate Monica

@whuber、ありがとうございました。以前は、mvtnormpackage を使用して2次元の相関数量を作成していました。相関量につながるSigma <- outer(1:n, 1:n, function(i,j) rho^abs(i-j)) xy = mvtnorm::rmvnorm(5000,mean=c(0,0),sigma = Sigma)方法をどのように理解できQ %*% Zますか?本、参考文献?
Farid Cheraghi 16

2
最も簡単な方法は計算です:の代わりにこの方法を選択しました。これにより、シミュレートされた両方のデータセットまったく同じ値を使用できるようになり、結果が乱数生成のアーティファクトではないことを強制的に示しました。(@glen_b、参照を訂正していただきありがとうございます。)
Cov(QZ)=QCov(Z)Q=QQ=VDDV=VDV=S.
mvtnormZ
whuber
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.