Ich habe mehrere multivariate Beobachtungen und möchte die Wahrscheinlichkeitsdichte über alle Variablen bewerten. Es wird angenommen, dass die Daten normal verteilt sind. Bei einer geringen Anzahl von Variablen funktioniert alles so, wie ich es erwarten würde. Wenn Sie jedoch zu einer höheren Zahl wechseln, wird die Kovarianzmatrix nicht mehr positiv.
Ich habe das Problem in Matlab auf Folgendes reduziert:
load raw_data.mat; % matrix number-of-values x number of variables
Sigma = cov(data);
[R,err] = cholcov(Sigma, 0); % Test for pos-def done in mvnpdf.
Wenn err> 0 ist, ist Sigma nicht eindeutig positiv.
Kann ich etwas tun, um meine experimentellen Daten in höheren Dimensionen auszuwerten? Verrät es mir irgendetwas Nützliches über meine Daten?
Ich bin ein bisschen ein Anfänger in diesem Bereich, also entschuldige mich, wenn ich etwas Offensichtliches verpasst habe.
Antworten:
Die Kovarianzmatrix ist nicht eindeutig positiv, weil sie singulär ist. Dies bedeutet, dass mindestens eine Ihrer Variablen als lineare Kombination der anderen Variablen ausgedrückt werden kann. Sie brauchen nicht alle Variablen, da der Wert von mindestens einer aus einer Teilmenge der anderen ermittelt werden kann. Ich würde vorschlagen, Variablen nacheinander hinzuzufügen und die Kovarianzmatrix bei jedem Schritt zu überprüfen. Wenn eine neue Variable eine Singularität erzeugt, löschen Sie sie und fahren Sie mit der nächsten fort. Schließlich sollten Sie eine Untergruppe von Variablen mit einer postiven definitiven Kovarianzmatrix haben.
quelle
regress
Befehl von Stata löscht beispielsweise automatisch zusätzliche Variablen, wenn einige kollinear sind (und die Ausgabe kann in einer Form gespeichert werden, die diese Variablen identifiziert und eine nicht kollineare Teilmenge für die zukünftige Verwendung markiert). Eine wahrscheinliche Komplikation besteht jedoch darin, dass die Variablen nicht unbedingt kollinear sein müssen, sondern nahe genug, dass die Ausbreitung von Gleitkommafehlern bei der Cholesky-Zerlegung negative Eigenwertschätzungen hervorruft, wodurch die Variablen für alle praktischen Zwecke kollinear werden.R
- Regressionsmodelle löschen automatisch Variablen aus dem linearen Prädiktor, wenn es eine exakte Kollinearität gibt.g
Ihr lineares Modell ist,colnames(model.matrix(g))[-which(is.na(coef(g))==TRUE)][-1]
sollten die Namen der in das Modell eingegebenen Prädiktoren zurückgegeben werden, die nicht genau kollinear sind. Dies funktioniert, indem überprüft wird, welche Koeffizienten vorhanden warenNA
(dies zeigt an, dassR
eine Variable gelöscht wurde) und die entsprechenden Spaltennamen der Modellmatrix gefunden werden (Löschen der Intercept-Spalte). Übrigens funktioniert das nicht, wenn es keine kollinearen Terme gibt. Daher ist eine if-Anweisung erforderlich,which(is.na(coef(g))==TRUE)
um zu überprüfen, ob sie nicht leer ist :)Es ist ein gültiges Ergebnis. Die Schätzung für diese Komponente der Kovarianzmatrix ist Null, was durchaus zutreffen kann! Dies kann zu Berechnungsschwierigkeiten führen, aber einige Algorithmen in R (ich weiß nicht, wie Matlab funktioniert) können dies bewältigen. Ich verstehe nicht, warum sich die Leute darüber aufregen und darauf bestehen, sparsamere Modelle zu finden.
quelle
Ein Punkt, von dem ich glaube, dass er oben nicht angesprochen wird, ist, dass es möglich ist, eine nicht positive definitive Kovarianzmatrix aus empirischen Daten zu berechnen, selbst wenn Ihre Variablen nicht perfekt linear zusammenhängen. Wenn Sie nicht über ausreichende Daten verfügen (insbesondere, wenn Sie versuchen, eine hochdimensionale Kovarianzmatrix aus einer Reihe paarweiser Vergleiche zu erstellen) oder wenn Ihre Daten keiner multivariaten Normalverteilung folgen, kann dies zu paradoxen Beziehungen führen unter Variablen wie cov (A, B)> 0; cov (A, C)> 0; cov (B, C) <0.
In einem solchen Fall kann ein multivariates normales PDF nicht angepasst werden, da es keine multivariate Normalverteilung gibt, die diese Kriterien erfüllt - cov (A, B)> 0 und cov (A, C)> 0 implizieren notwendigerweise, dass cov (B, C) )> 0.
Das heißt, eine nicht positive definite Matrix bedeutet nicht immer, dass Sie kollineare Variablen einschließen. Es könnte auch darauf hindeuten, dass Sie versuchen, eine Beziehung zu modellieren, die aufgrund der von Ihnen gewählten parametrischen Struktur unmöglich ist.
quelle