Ich habe festgestellt, dass bei R-, Poisson- und negativen Binomial- (NB-) Regressionen für kategoriale, aber nicht kontinuierliche Prädiktoren immer dieselben Koeffizienten zu passen scheinen.
Beispiel: Hier ist eine Regression mit einem kategorialen Prädiktor:
data(warpbreaks)
library(MASS)
rs1 = glm(breaks ~ tension, data=warpbreaks, family="poisson")
rs2 = glm.nb(breaks ~ tension, data=warpbreaks)
#compare coefficients
cbind("Poisson"=coef(rs1), "NB"=coef(rs2))
Hier ist ein Beispiel mit einem kontinuierlichen Prädiktor, bei dem Poisson und NB unterschiedliche Koeffizienten haben:
data(cars)
rs1 = glm(dist ~ speed, data=cars, family="poisson")
rs2 = glm.nb(dist ~ speed, data=cars)
#compare coefficients
cbind("Poisson"=coef(rs1), "NB"=coef(rs2))
(Natürlich zählen diese Daten nicht und die Modelle sind nicht aussagekräftig ...)
Dann habe ich den Prädiktor in einen Faktor umcodiert und die beiden Modelle passen wieder zu den gleichen Koeffizienten:
library(Hmisc)
speedCat = cut2(cars$speed, g=5)
#you can change g to get a different number of bins
rs1 = glm(cars$dist ~ speedCat, family="poisson")
rs2 = glm.nb(cars$dist ~ speedCat)
#compare coefficients
cbind("Poisson"=coef(rs1), "NB"=coef(rs2))
summary(rs2)
Warum sind die Koeffizienten genau gleich? Und warum nur für kategoriale Prädiktoren?
Bearbeiten Sie # 1
Hier ist ein Beispiel mit zwei nicht orthogonalen Prädiktoren. In der Tat sind die Koeffizienten nicht mehr dieselben:
data(cars)
#make random categorical predictor
set.seed(1); randomCats1 = sample( c("A","B","C"), length(cars$dist), replace=T)
set.seed(2); randomCats2 = sample( c("C","D","E"), length(cars$dist), replace=T)
rs1 = glm(dist ~ randomCats1 + randomCats2, data=cars, family="poisson")
rs2 = glm.nb(dist ~ randomCats1 + randomCats2, data=cars)
#compare coefficients
cbind("Poisson"=coef(rs1), "NB"=coef(rs2))
Das Einbeziehen eines weiteren Prädiktors bewirkt, dass die Modelle unterschiedliche Koeffizienten anpassen, auch wenn der neue Prädiktor kontinuierlich ist. Hat das etwas mit der Orthogonalität der Dummy-Variablen zu tun, die ich in meinem ursprünglichen Beispiel erstellt habe?
rs1 = glm(dist ~ randomCats1 + speed, data=cars, family="poisson")
rs2 = glm.nb(dist ~ randomCats1 + speed, data=cars)
#compare coefficients
cbind("Poisson"=coef(rs1), "NB"=coef(rs2))
Antworten:
Sie haben eine intime, aber generische Eigenschaft von GLMs entdeckt, die mit maximaler Wahrscheinlichkeit passt . Das Ergebnis fällt aus, wenn man den einfachsten Fall von allen betrachtet: Einen einzelnen Parameter an eine einzelne Beobachtung anpassen!
Wenn wir an einer Parametrisierung mit mehr Struktur interessiert sind oder die von stetigen Prädiktoren abhängt, wird die angenommene Fehlerstruktur aufgrund der Mittelwert-Varianz-Beziehung der Verteilung relevant, da sie sich auf die Parameter und die nichtlineare Funktion bezieht, die zur Modellierung der Bedingung verwendet werden meint.
GLMs und exponentielle Dispersionsfamilien: Crash-Kurs
Was ist so anders an kontinuierlichen Prädiktoren?
Wenn die Prädiktoren stetig oder kategorisch sind, aber nicht auf eine orthogonale Form reduziert werden können, wird die Wahrscheinlichkeit nicht länger in einzelne Terme mit einem separaten Mittelwert in Abhängigkeit von einem separaten Parameter einbezogen. An diesem Punkt wird die Fehlerstruktur und Link - Funktion können ins Spiel kommen.
Auf diese Weise werden die Verbindungsfunktion und das angenommene Fehlermodell für die Schätzung relevant.
Beispiel: Das Fehlermodell spielt (fast) keine Rolle
Aus der Tabelle können wir ersehen, dass die Parameterschätzungen identisch sind , obwohl einige dieser GLMs für diskrete Daten und andere für kontinuierliche und einige für nichtnegative Daten sind, andere nicht.
Beispiel: Die Linkfunktion spielt (fast) keine Rolle
Die Einschränkung in der Überschrift bezieht sich lediglich auf die Tatsache , dass die rohen Schätzungen mit der Link - Funktion variieren, aber die implizierten mittleren Parameterschätzungen nicht.
R-Code
quelle
family=negative.binomial(theta=2)
"?Um zu sehen, was hier vor sich geht, ist es sinnvoll, zunächst die Regression ohne den Intercept durchzuführen, da ein Intercept in einer kategorialen Regression mit nur einem Prädiktor bedeutungslos ist:
Da Poisson- und negative binomiale Regressionen das Protokoll des Mittelwertparameters angeben, erhalten Sie für die kategoriale Regression durch Exponentiierung der Koeffizienten den tatsächlichen Mittelwertparameter für jede Kategorie:
Diese Parameter entsprechen dem tatsächlichen Mittelwert über die verschiedenen Kategoriewerte:
quelle
y~X+0
und versuchen Sie es erneut. :-)