Ich habe diesen Absatz in James et al., Einführung in das statistische Lernen , S. 183-184 [1] gelesen:
Da der Mittelwert vieler stark korrelierter Größen eine höhere Varianz aufweist als der Mittelwert vieler nicht so stark korrelierter Größen, weist die aus LOOCV resultierende Testfehlerschätzung tendenziell eine höhere Varianz auf als die aus k-fachem CV resultierende Testfehlerschätzung.
Können Sie mir ein numerisches Beispiel geben, z. B. in R, um die Gültigkeit dieser Behauptung zu überprüfen?
Ich habe versucht, es mit dem folgenden Code zu überprüfen:
x = 1:100 #highly correlated data
y = sample(100) #same data without correlation
var(x) == var(y) # TRUE
Was ist los mit diesem Code?
- LOOCV steht für "eine Kreuzvalidierung weglassen"
[1]: James, G., Witten, D., Hastie, T., Tibshirani, R. (2013),
Eine Einführung in das statistische Lernen mit Anwendungen in R ,
Springer-Texte in Statistik, Springer Science + Business Media, New York
quelle
sort(sample(100))
sehen, ist es identisch mit1:100
und daher sind ihre Abweichungen identisch. Ich kann Ihnen beim ersten Teil Ihres Beitrags nicht helfen - ich hätte gedacht, dass korrelierte Größen eine geringere Varianz haben (z. B. Intra-Cluster-Korrelationen), aber dann weiß ich nicht, was LOOCV ist.1:100
ist nicht korrelierter als der Vektorsample(100)
. Sie wurden möglicherweise unterschiedlich generiert, sind jedoch bis auf die Bestellung identisch. Sicherlich berücksichtigt die Varianzberechnung die Bestellung nicht. Es gibt Online-Beispiele für die Simulation korrelierter Daten, die Sie wahrscheinlich benötigen.acf(x)
und Sieacf(y)
und sehen Sie selbst!var
Funktion irrelevant ist, genau wie es wäre, wenn Sie die Varianz nach had berechnet hätten. Auch und möglicherweise hilfreicher, siehe LinkAntworten:
Die im Code berechnete Varianz zeigt jedes Array so an, als wäre es eine Stichprobe von 100 separaten Werten. Da sowohl das Array als auch seine permutierte Version dieselben 100 Werte enthalten, weisen sie dieselbe Varianz auf.
Der richtige Weg, um die Situation im Angebot zu simulieren, erfordert Wiederholungen. Generieren Sie eine Stichprobe von Werten. Berechnen Sie den Mittelwert. (Dies spielt die Rolle der "Testfehlerschätzung".) Wiederholen Sie dies viele Male. Sammeln Sie all diese Mittel und sehen Sie sich an, wie stark sie variieren. Dies ist die "Varianz", auf die sich das Zitat bezieht.
Wir können vorhersehen, was passieren wird:
Wenn die Elemente jeder Probe in diesem Prozess positiv korreliert sind und ein Wert hoch ist, sind auch die anderen tendenziell hoch. Ihr Mittelwert wird dann hoch sein. Wenn ein Wert niedrig ist, sind auch die anderen niedrig. Ihr Mittelwert wird dann niedrig sein. Somit neigen die Mittel dazu, entweder hoch oder niedrig zu sein.
Wenn Elemente jeder Stichprobe nicht korreliert sind, wird der Betrag, um den einige Elemente hoch sind, häufig durch andere niedrige Elemente ausgeglichen (oder "aufgehoben"). Insgesamt liegt der Mittelwert tendenziell sehr nahe am Durchschnitt der Population, aus der die Stichproben gezogen werden - und selten viel größer oder viel kleiner.
R
macht es einfach, dies in die Tat umzusetzen. Der Haupttrick besteht darin, korrelierte Stichproben zu generieren. Eine Möglichkeit besteht darin, normale Standardvariablen zu verwenden: Linearkombinationen davon können verwendet werden, um eine beliebige Korrelation zu induzieren.Hier sind zum Beispiel die Ergebnisse dieses wiederholten Experiments, als es 5.000 Mal unter Verwendung von Proben der Größe . In einem Fall wurden die Proben aus einer Standardnormalverteilung erhalten. In der anderen wurden sie auf ähnliche Weise erhalten - sowohl mit Nullmitteln als auch mit Einheitsvarianzen -, aber die Verteilung, aus der sie gezogen wurden, hatte einen Korrelationskoeffizienten von .n = 2 90 %
Die obere Reihe zeigt die Häufigkeitsverteilungen aller 5.000 Mittelwerte. Die untere Zeile zeigt die Streudiagramme, die von allen 5.000 Datenpaaren generiert wurden. Aus dem Unterschied in den Spreads der Histogramme geht hervor, dass die Menge der Mittelwerte aus den nicht korrelierten Proben weniger gestreut ist als die Menge der Mittelwerte aus den korrelierten Proben, was das Argument "Aufheben" veranschaulicht.
Der Unterschied in der Ausbreitungsmenge wird bei höherer Korrelation und bei größeren Stichproben größer. Mit dem
R
Code können Sie diese alsrho
bzw. angebenn
, damit Sie experimentieren können. Wie der fragliche Code besteht sein Ziel darin, Arrays (aus den nicht korrelierten Stichproben)x
undy
(aus den korrelierten Stichproben) zum weiteren Vergleich zu erstellen .Wenn Sie nun die Varianzen der Arrays von Mittelwerten
x
undy
berechnen, unterscheiden sich ihre Werte:Die Theorie sagt uns, dass diese Abweichungen nahe beieinander liegen werden( 1 + 1 ) /22= 0,5 und ( 1 + 2 × 0,9 + 1 ) /22= 0,95 . Sie unterscheiden sich nur deshalb von den theoretischen Werten, weil nur 5.000 Wiederholungen durchgeführt wurden. Mit mehr Wiederholungen tendieren die Varianzen von
x
undy
näher zu ihren theoretischen Werten.quelle
mvtnorm
Paket zweidimensional korrelierte Größen erstellt.Sigma <- outer(1:n, 1:n, function(i,j) rho^abs(i-j)) xy = mvtnorm::rmvnorm(5000,mean=c(0,0),sigma = Sigma)
Wie kann ich verstehen, wieQ %*% Z
zu korrelierten Mengen führt? Bücher, Referenzen?mvtnorm
, weil ich damit genau die gleichen Werte von verwenden konnte