Jak określić rozkład logarytmiczny w argumencie rodziny glm w R?

17

Proste pytanie: jak określić rozkład logarytmiczny w argumencie rodziny GLM w R? Nie mogłem znaleźć sposobu, w jaki można to osiągnąć. Dlaczego lognormalna (lub wykładnicza) nie jest opcją w argumencie rodzinnym?

Gdzieś w Archiwum R czytałem, że po prostu trzeba użyć linku logu dla rodziny ustawionej na gaussian w GLM, aby określić lognormal. Jest to jednak nonsens, ponieważ pasuje do regresji nieliniowej, a R zaczyna pytać o wartości początkowe.

Czy ktoś wie, jak ustawić rozkład logarytmiczny (lub wykładniczy) dla GLM?

Jens
źródło
1
Powinno to być na SO ze znacznikiem [r].
DW
4
@DWin - choć raz się nie zgadzam - często głosuję na migrację Q do SO, ale to pytanie ma znaczącą treść statystyczną.
onestop

Odpowiedzi:

8

Gamlss pakiet pozwala dopasować uogólnione modele addytywne zarówno z lognormal i rozkładów wykładniczych, i kilka innych, z pewną różnorodność w funkcjach łącza i korzystania, jeśli chcesz, częściowo lub nieparametrycznych modeli opartych na ukaranych wypustami. Opublikowano kilka artykułów na temat zastosowanych algorytmów oraz dokumentacji i przykładów powiązanych z witryną, do której linkowałem.

łucznik
źródło
10

Jeśli chodzi o dopasowanie modelu wykładniczego do glm: W przypadku korzystania z glmfunkcji z rodziną = Gamma należy również użyć funkcji pomocniczych summary.glm, aby ustawić parametr dyspersji na 1:

?summary.glm
fit <- glm(formula =..., family = Gamma)
summary(fit,dispersion=1) 

I jak zamierzałem wskazać, ale jbowman mnie pobił, pakiet (pakiety) „gamlss” zapewnia log-normalne dopasowanie:

help(dLOGNO, package=gamlss.dist)
DWin
źródło
1
Nie wiedziałem o ustaleniu parametru dyspersji (+1).
jbowman
Myślę, że widziałem to rozwiązanie w innym poście. Istnieją jednak dwa problemy. Po pierwsze, w tym przypadku korygowane jest tylko podsumowanie, ale parametry, które muszę wyodrębnić (pozostałości itp.), Nie są dostosowane do dyspersji 1, czy się mylę? Po drugie, nie mogę dopasować do rodziny = Gamma, ponieważ w zestawie danych znajdują się zera (w rzeczywistości są to bardzo małe wartości, ale zostały ustawione na zero). Sprawdzę pakiet gamlss.dist!
Jens
1
Cóż, problem zer nie jest problemem z R lub glm, ale z matematyką, ... a jeśli masz oszacowania parametrów, konstrukcja reszt jest prosta w R. Opublikuj to pytanie w SO z tagiem [r] i ty z pewnością otrzyma szybką odpowiedź.
DW
9

Lognormal nie jest opcją, ponieważ rozkład logarytmiczno-normalny nie należy do wykładniczej rodziny rozkładów. Uogólnione modele liniowe mogą pasować tylko do rozkładów z rodziny wykładniczej.

Nie jestem jasne, dlaczego wykładnicza nie jest opcją, ponieważ rozkład wykładniczy należy do rodziny wykładniczej (jak można się spodziewać). Inne oprogramowanie statystyczne, które znam, pozwala dopasować rozkład wykładniczy jako GLM, traktując go jako specjalny przypadek rozkładu Gamma z parametrem kształtu (inaczej skali lub dyspersji) ustalonym na 1, a nie szacowanym. Nie widzę jednak sposobu na naprawienie tego parametru za pomocą glm()funkcji R. Jedną z możliwości byłoby użycie survreg()funkcji z survivalpakietu z dist="exponential".

ylog(y)mi(log(Y))log(mi(Y)).

jeden przystanek
źródło
8
h(x),T(x),A(θ)
Czy masz odniesienie do stwierdzenia, że ​​„Uogólnione modele liniowe mogą pasować tylko do rozkładów z rodziny wykładniczej”?
Henrik
5

Dopasowanie logm-normalnego GLM nie ma nic wspólnego z rozkładem ani opcją link glm()funkcji. Termin „log-normal” jest dość mylący w tym sensie, ale oznacza, że ​​zmienna odpowiedzi jest zwykle rozkładana (rodzina = gaussa), a transformacja jest stosowana do tej zmiennej w następujący sposób:

log.glm <- glm(log(y)~x, family=gaussian, data=my.dat)

Jednak porównując ten log-normalny glm z innymi glms przy użyciu różnych rozkładów (np. Gamma), należy poprawić funkcję AIC (). Czy ktoś w tym przypadku zna alternatywę dla tych błędnych AIC ()?

CHarma
źródło
2
Witamy na stronie @CHarma. Jeśli masz pytanie, kliknij szare „ZADAJ PYTANIE” w prawym górnym rogu, zamiast uwzględniać je w swojej odpowiedzi.
Gung - Przywróć Monikę
1

Spróbuj użyć następującego polecenia:

log.glm = glm(y ~ x, family=gaussian(link="log"), data=my.dat)

Działa tutaj i AIC wydaje się poprawny.

Danilo Scorzoni Ré
źródło
7
Ta odpowiedź jest zła. Oznaczałoby to, że rozkład warunkowy y jest Gaussa, a zarejestrowana średnia równa się predyktorowi liniowemu. Z pewnością nie to, co opisuje OP.
Michael M,