6 votos

Firth regresión logística en R

Estoy usando el logistf paquete en R para realizar Firth regresión logística en un desequilibrio en el conjunto de datos. Tengo un logistf objeto:

fit = logistf(a~b)

Hay un predict() de la función como en la que se utiliza en la lm de la clase a predecir las probabilidades para el futuro de puntos de datos? O tengo que introducir manualmente los parámetros estimados desde el Fiordo de regresión.

Gracias!

9voto

David J. Sokol Puntos 1730

Un enfoque alternativo es el brglm paquete. Por ejemplo, utilizando los mismos datos/modelo como @chl la Respuesta

data(sex2)
fm <- case ~ age + oc + vic + vicl + vis + dia
fit <- brglm(fm, data = sex2)

predict(fit, newdata = sex2[1:5, ], type = "response")

Que los rendimientos de la

> predict(fit, newdata = sex2[1:5, ], type = "response")
        1         2         3         4         5 
0.3389307 0.9159945 0.9159945 0.9159945 0.9159945

Tenga en cuenta que en la brglm() de casos, debido a la forma de la función de las obras, lo que ves arriba es simplemente el resultado de la norma predict.glm() función/método en R.

5voto

DavLink Puntos 101

Usted probablemente puede calcular cualquier predicciones desea con poco de álgebra. Vamos a considerar el ejemplo de conjunto de datos,

data(sex2)
fm <- case ~ age+oc+vic+vicl+vis+dia
fit <- logistf(fm, data=sex2)

Un diseño de la matriz es la única pieza que falta para calcular probabilidades pronosticadas una vez que obtenemos los coeficientes de regresión, dado por

betas <- coef(fit)

Por lo tanto, vamos a tratar de obtener la predicción de los datos observados, en primer lugar:

X <- model.matrix(fm, data=sex2)       # add a column of 1's to sex2[,-1]
pi.obs <- 1 / (1 + exp(-X %*% betas))  # in case there's an offset, δ, it 
                                       # should be subtracted as exp(-Xβ - δ)

Podemos comprobar que obtenemos el resultado correcto

> pi.obs[1:5]
[1] 0.3389307 0.9159945 0.9159945 0.9159945 0.9159945
> fit$predict[1:5]
[1] 0.3389307 0.9159945 0.9159945 0.9159945 0.9159945

Ahora, usted puede poner en el diseño de la matriz, X, valores que están interesados en. Por ejemplo, con todas las covariables conjunto a uno

new.x <- c(1, rep(1, 6))
1 / (1 + exp(-new.x %*% betas)) 

obtenemos una probabilidad individual de 0.804, mientras que cuando todas las variables de control se establece en 0 (new.x <- c(1, rep(0, 6))), la probabilidad estimada es 0.530.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X