Próbuję dopasować model liniowy do niektórych danych za pomocą tylko jednego predyktora (powiedzmy (x, y)). Dane są takie, że dla małych wartości x wartości y ściśle dopasowują się do linii prostej, jednak wraz ze wzrostem wartości x wartości y stają się bardziej zmienne. Oto przykład takich danych (kod R)
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)
Jestem ciekawy, czy istnieje jakaś transformacja mocy (być może Box Cox?), Która pozwala mi lepiej dopasować dane niż po prostu liniowe dopasowanie, jak pokazano poniżej.
fit = lm(y ~ x)
r
regression
variance
data-transformation
brokuły
źródło
źródło
Odpowiedzi:
Pakiet MASS, który jest już dostarczony z zainstalowanym R, ma
boxcox()
funkcję, której możesz użyć: Po wczytaniu danych wykonaj:Następnie spójrz na wykres, który on generuje, który pokazuje graficznie 95% przedział ufności dla parametru transformacji boxcox. Ale tak naprawdę nie ma wystarczających danych (n = 10), aby to zrobić, wynikowy przedział ufności wynosi prawie od -2 do 2 !, z maksymalnym oszacowaniem prawdopodobieństwa około 0 (transformata logarytmiczna, jak powiedziano wcześniej). Jeśli twoje prawdziwe dane zawierają więcej obserwacji, powinieneś spróbować.
Jak powiedzieli inni, ta transformacja naprawdę próbuje ustabilizować wariancje. Nie jest to tak naprawdę oczywiste z teorii, ponieważ próbuje ona zmaksymalizować funkcję prawdopodobieństwa opartą na rozkładzie normalnym, która zakłada stałą wariancję. Można by pomyśleć, że maksymalizacja prawdopodobieństwa opartego na normie będzie próbowała znormalizować rozkład reszt, ale w praktyce główny wkład w maksymalizację prawdopodobieństwa wynika ze stabilizacji wariancji. To może nie jest tak zaskakujące, biorąc pod uwagę, że prawdopodobieństwo, które maksymalizujemy, oparte jest na stałej wariancji rodziny rozkładów normalnych!
Kiedyś napisałem demo oparte na suwaku w XLispStat, co wyraźnie to pokazało!
źródło
Gdy masz relację liniową, ale nierówne wariancje, zazwyczaj musisz przekształcić zarówno x, jak i y, aby uzyskać liniową relację z równymi wariancjami (lub po prostu użyj ważonej regresji metodą najmniejszych kwadratów dla zmiennych nietransformowanych).
Procedura AVAS może służyć do sugerowania możliwych przekształceń.
źródło
glm
szkielet z funkcją łącza Poissona ją przeciąłby?Cóż, w R możesz spróbować tego:
Ale tak naprawdę zależy to od tego, co rozumiesz przez „lepsze dopasowanie do danych”
źródło
cóż, jeśli wszystkie twoje dane dla x nie są ujemne, możesz użyć transformacji box cox ... aby oszacować idealną wartość parametru lambda transformacji, możesz użyć matlaba ... http://www.mathworks.in/ help / finance / boxcox.html
źródło