相關和不相關數據均值的方差
我在 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]:James, G.、Witten, D.、Hastie, T.、Tibshirani, R. (2013),
R 中應用的統計學習簡介,
Springer Texts in Statistics,Springer Science+Business Media,紐約
代碼中計算的方差將每個數組視為 100 個單獨值的一個樣本。因為數組及其置換版本都包含相同的 100 個值,所以它們具有相同的方差。
模擬報價中情況的正確方法需要重複。 生成值樣本。計算它的平均值。(這起到“測試誤差估計”的作用。)重複多次。收集所有這些手段,看看它們的變化有多大。這就是引文中提到的“差異”。
我們可以預見會發生什麼:
- 當此過程中每個樣本的元素呈正相關時,當一個值高時,其他值也趨於高。他們的平均值會很高。當一個值較低時,其他值也往往較低。那麼他們的平均值就會很低。因此,均值往往要么高要么低。
- 當每個樣本的元素不相關時,某些元素的高量通常會被其他低元素平衡(或“抵消”)。總體而言,平均值往往非常接近從中抽取樣本的總體的平均值——而且很少比這個值大得多或小得多。
R
使它很容易付諸行動。 主要技巧是生成相關樣本。一種方法是使用標準正態變量:它們的線性組合可用於誘導您可能喜歡的任何數量的相關性。例如,這裡是這個重複實驗的結果,當它使用大小樣本進行 5,000 次時. 在一種情況下,樣品是從標準正態分佈中獲得的。在另一種情況下,它們以類似的方式獲得——均值和單位方差均為零——但它們從中提取的分佈具有相關係數.
頂行顯示所有 5,000 個均值的頻率分佈。底行顯示了所有 5,000 對數據生成的散點圖。從直方圖的散佈差異可以看出,來自不相關樣本的均值集比來自相關樣本的均值集的分散性更小,這就是“取消”論點的例證。
隨著相關性越高和样本量越大,傳播量的差異變得更加明顯。該
R
代碼允許您將它們分別指定為rho
和n
,以便您進行實驗。就像問題中的代碼一樣,它的目的是生成數組x
(來自不相關的樣本)和y
(來自相關的樣本)以進行進一步比較。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)
現在,當您計算均值 和 數組的方差時
x
,y
它們的值會有所不同:> var(x) [1] 0.5035174 > var(y) [1] 0.9590535
理論告訴我們這些差異將接近和. 它們與理論值的不同只是因為只進行了 5,000 次重複。隨著更多的重複, 和 的方差
x
將y
趨於接近它們的理論值。