Ich versuche, ein lineares Modell mit nur einem Prädiktor (z. B. (x, y)) an einige Daten anzupassen. Die Daten sind so, dass für kleine Werte von x die y-Werte eine enge Anpassung an eine gerade Linie ergeben. Wenn jedoch die x-Werte zunehmen, werden die y-Werte flüchtiger. Hier ist ein Beispiel für solche Daten (R-Code)
y = c(3.2,3.4,3.5,3.8,4.2,5.5,4.5,6.8,7.4,5.9)
x = seq(1,10,1)
Ich bin gespannt, ob es eine Leistungstransformation gibt (Box Cox vielleicht?), Mit der ich die Daten besser anpassen kann, als einfach eine lineare Anpassung wie unten gezeigt durchzuführen.
fit = lm(y ~ x)
r
regression
variance
data-transformation
Brokkoli
quelle
quelle
Antworten:
Das MASS-Paket, das mit Ihrem R bereits installiert ist, verfügt über die folgende
boxcox()
Funktion: Führen Sie nach dem Einlesen der Daten Folgendes aus:Schauen Sie sich dann das Diagramm an, das ein 95% -Konfidenzintervall für den Boxcox-Transformationsparameter grafisch darstellt. Sie haben jedoch nicht wirklich genug Daten (n = 10), um dies zu tun. Das resultierende Konfidenzintervall reicht fast von -2 bis 2! Mit einer maximalen Wahrscheinlichkeitsschätzung von ungefähr 0 (eine Protokolltransformation, wie zuvor gesagt). Wenn Ihre realen Daten mehr Beobachtungen enthalten, sollten Sie dies versuchen.
Wie andere gesagt haben, versucht diese Transformation wirklich, Varianzen zu stabilisieren. Aus der Theorie geht nicht wirklich hervor, dass versucht wird, eine auf Normalverteilung basierende Wahrscheinlichkeitsfunktion zu maximieren, die eine konstante Varianz voraussetzt. Man könnte denken, dass die Maximierung einer normalbasierten Wahrscheinlichkeit versuchen würde, die Verteilung der Residuen zu normalisieren, aber in der Praxis liegt der Hauptbeitrag zur Maximierung der Wahrscheinlichkeit in der Stabilisierung der Varianzen. Dies ist vielleicht nicht so überraschend, da die Wahrscheinlichkeit, die wir maximieren, auf einer Normalverteilungsfamilie mit konstanter Varianz basiert!
Ich habe einmal eine Slider-basierte Demo in XLispStat geschrieben, die dies deutlich demonstrierte!
quelle
Wenn Sie eine lineare Beziehung, aber ungleiche Varianzen haben, müssen Sie im Allgemeinen sowohl x als auch y transformieren, um eine lineare Beziehung mit gleichen Varianzen zu erhalten (oder verwenden Sie einfach die gewichtete Regression der kleinsten Quadrate für die nicht transformierten Variablen).
Das AVAS-Verfahren kann verwendet werden, um mögliche Transformationen vorzuschlagen.
quelle
glm
Framework mit einer Poisson-Link-Funktion die Varianz verringern, wenn sie mit x zunimmt ?Nun, in R könnten Sie dies versuchen:
Aber es hängt wirklich davon ab, was Sie unter "besser an die Daten anpassen" verstehen.
quelle
Nun, wenn alle Ihre Daten für x nicht negativ sind, können Sie die Box-Cox-Transformation verwenden ... um den idealen Wert des Parameters Lambda der Transformation zu schätzen, können Sie Matlab verwenden ... http://www.mathworks.in/ Hilfe / Finanzen / boxcox.html
quelle