Zusammenfassung: GLMs werden durch Fisher-Scoring angepasst, das, wie Dimitriy V. Masterov bemerkt, Newton-Raphson mit dem erwarteten Hessischen ist (dh wir verwenden eine Schätzung der Fisher-Informationen anstelle der beobachteten Informationen). Wenn wir die kanonische Verknüpfungsfunktion verwenden, stellt sich heraus, dass das beobachtete Hessische dem erwarteten Hessischen entspricht, so dass NR und Fisher-Wertung in diesem Fall gleich sind. Wie auch immer, wir werden sehen, dass das Fisher-Scoring tatsächlich ein lineares Modell mit gewichteten kleinsten Quadraten anpasst, und der Koeffizient, der daraus geschätzt wird, * konvergiert mit einem Maximum der logistischen Regressionswahrscheinlichkeit. Wir reduzieren nicht nur die Anpassung einer logistischen Regression an ein bereits gelöstes Problem, sondern können auch die lineare Regressionsdiagnose für die endgültige WLS-Anpassung verwenden, um mehr über unsere logistische Regression zu erfahren.
Ich werde mich weiterhin auf die logistische Regression konzentrieren, aber für eine allgemeinere Perspektive auf die maximale Wahrscheinlichkeit bei GLM empfehle ich Abschnitt 15.3 dieses Kapitels, der dies durchläuft und IRLS in einer allgemeineren Umgebung ableitet (ich denke, es ist von John Fox's Applied) Regressionsanalyse und verallgemeinerte lineare Modelle ).
∗ siehe Kommentare am Ende
Die Wahrscheinlichkeits- und Punktzahlfunktion
Wir werden unsere GLM anpassen, indem wir etwas von der Form iterieren.
wobei die Log-Wahrscheinlichkeit ist undl J m
b(m+1)=b(m)−J−1(m)∇ℓ(b(m))
ℓJm entweder das beobachtete oder das erwartete Hessische der logarithmischen Wahrscheinlichkeit ist.
Unsere Verknüpfungsfunktion ist eine Funktion , die den bedingten Mittelwert μ i = E ( y i | x i ) auf unseren linearen Prädiktor abbildet , sodass unser Modell für den Mittelwert g ( μ i ) = x T i β lautet . Sei h die Inverse-Link-Funktion, die den linearen Prädiktor auf den Mittelwert abbildet.gμi=E(yi|xi)g(μi)=xTiβh
Für eine logistische Regression haben wir eine Bernoulli - Wahrscheinlichkeit mit unabhängigen Beobachtungen so
Unter Derivaten,
& part; l
ℓ(b;y)=∑i=1nyilogh(xTib)+(1−yi)log(1−h(xTib)).
= n Σ i=1xijh'(x T i b)( y i∂ℓ∂bj=∑i=1nyih(xTib)h′(xTib)xij−1−yi1−h(xTib)h′(xTib)xij
=Σixijh'(x T i b)=∑i=1nxijh′(xTib)(yih(xTib)−1−yi1−h(xTib))
=∑ixijh′(xTib)h(xTib)(1−h(xTib))(yi−h(xTib)).
Verwendung des kanonischen Links
Nehmen wir nun an, wir verwenden die kanonische Linkfunktion . Dann ist g - 1 c ( x ) : = h c ( x ) = 1gc=logit soh ' c =hc⋅(1-hc)der dies vereinfacht zu bedeutet
∂lg−1c(x):=hc(x)=11+e−xh′c=hc⋅(1−hc)
so
∇l(b;y)=XT(y - y ).
Darüber hinaus immer noch mithc,
∂2ℓ
∂ℓ∂bj=∑ixij(yi−hc(xTib))
∇ℓ(b;y)=XT(y−y^).
hc∂2ℓ∂bk∂bj=−∑ixij∂∂bkhc(xTib)=−∑ixijxik[hc(xTib)(1−hc(xTib))].
W=diag(hc(xT1b)(1−hc(xT1b)),…,hc(xTnb)(1−hc(xTnb)))=diag(y^1(1−y^1),…,y^n(1−y^n)).
H=−XTWX
yiE(H)=Hbyy^i∈(0,1) −XTWXy^i010H
z=W−1(y−y^)
∇ℓ=XT(y−y^)=XTWz.
b(m+1)=b(m)+(XTW(m)X)−1XTW(m)z(m)
(XTW(m)X)−1XTW(m)z(m)β^z(m)X
Einchecken in R
:
set.seed(123)
p <- 5
n <- 500
x <- matrix(rnorm(n * p), n, p)
betas <- runif(p, -2, 2)
hc <- function(x) 1 /(1 + exp(-x)) # inverse canonical link
p.true <- hc(x %*% betas)
y <- rbinom(n, 1, p.true)
# fitting with our procedure
my_IRLS_canonical <- function(x, y, b.init, hc, tol=1e-8) {
change <- Inf
b.old <- b.init
while(change > tol) {
eta <- x %*% b.old # linear predictor
y.hat <- hc(eta)
h.prime_eta <- y.hat * (1 - y.hat)
z <- (y - y.hat) / h.prime_eta
b.new <- b.old + lm(z ~ x - 1, weights = h.prime_eta)$coef # WLS regression
change <- sqrt(sum((b.new - b.old)^2))
b.old <- b.new
}
b.new
}
my_IRLS_canonical(x, y, rep(1,p), hc)
# x1 x2 x3 x4 x5
# -1.1149687 2.1897992 1.0271298 0.8702975 -1.2074851
glm(y ~ x - 1, family=binomial())$coef
# x1 x2 x3 x4 x5
# -1.1149687 2.1897992 1.0271298 0.8702975 -1.2074851
und sie stimmen zu.
Nicht-kanonische Linkfunktionen
h′h(1−h)=1∇ℓHE(H)
∇ℓ
∂2ℓ∂bk∂bj=∑ixij∂∂bkh′(xTib)(yih(xTib)−1−yi1−h(xTib))
=∑ixijxik[h′′(xTib)(yih(xTib)−1−yi1−h(xTib))−h′(xTib)2(yih(xTib)2+1−yi(1−h(xTib))2)]
E(H)yiμi=h(xTiβ)
h′′(xTib)(h(xTiβ)h(xTib)−1−h(xTiβ)1−h(xTib))−h′(xTib)2(h(xTiβ)h(xTib)2+1−h(xTiβ)(1−h(xTib))2).
βm b(m)h′′(xTib)(h(xTib)h(xTib)−1−h(xTib)1−h(xTib))−h′(xTib)2(h(xTib)h(xTib)2+1−h(xTib)(1−h(xTib))2)
=−h′(xTib)2(1h(xTib)+11−h(xTib))
=−h′(xTib)2h(xTib)(1−h(xTib)).
JJjk=−∑ixijxikh′(xTib)2h(xTib)(1−h(xTib)).
W∗=diag(h′(xT1b)2h(xT1b)(1−h(xT1b)),…,h′(xTnb)2h(xTnb)(1−h(xTnb)))
h′c=hc⋅(1−hc)W∗WJ=−XTW∗X
E^(H)Hi W∗ii>0J
∂ℓ∂bj=∑ixijh′(xTib)h(xTib)(1−h(xTib))(yi−h(xTib))
z∗=D−1(y−y^)D=diag(h′(xT1b),…,h′(xTnb))∇ℓ=XTW∗z∗
b(m+1)=b(m)+(XTW∗(m)X)−1XTW∗(m)z∗(m)
b(m+1)b(m)
b(m+1)=b(m)+(XTW∗(m)X)−1XTW∗(m)z∗(m)
=(XTW∗(m)X)−1(XTW∗(m)Xb(m)+XTW∗(m)z∗(m))
=(XTW∗(m)X)−1XTW∗(m)(Xb(m)+z∗(m))
η(m)+D−1(m)(y−y^(m))
Lassen Sie uns bestätigen, dass dies funktioniert, indem wir eine Probit-Regression mit denselben simulierten Daten wie zuvor durchführen (und dies ist nicht die kanonische Verknüpfung, daher benötigen wir diese allgemeinere Form von IRLS).
my_IRLS_general <- function(x, y, b.init, h, h.prime, tol=1e-8) {
change <- Inf
b.old <- b.init
while(change > tol) {
eta <- x %*% b.old # linear predictor
y.hat <- h(eta)
h.prime_eta <- h.prime(eta)
w_star <- h.prime_eta^2 / (y.hat * (1 - y.hat))
z_star <- (y - y.hat) / h.prime_eta
b.new <- b.old + lm(z_star ~ x - 1, weights = w_star)$coef # WLS
change <- sqrt(sum((b.new - b.old)^2))
b.old <- b.new
}
b.new
}
# probit inverse link and derivative
h_probit <- function(x) pnorm(x, 0, 1)
h.prime_probit <- function(x) dnorm(x, 0, 1)
my_IRLS_general(x, y, rep(0,p), h_probit, h.prime_probit)
# x1 x2 x3 x4 x5
# -0.6456508 1.2520266 0.5820856 0.4982678 -0.6768585
glm(y~x-1, family=binomial(link="probit"))$coef
# x1 x2 x3 x4 x5
# -0.6456490 1.2520241 0.5820835 0.4982663 -0.6768581
und wieder sind sich die beiden einig.
Anmerkungen zur Konvergenz
J(m)b.init=rep(1,p)
y^i1y^i(1−y^i)y^i01