¿Hay una manera fácil de combinar dos modelos glm en R?

9

Tengo dos modelos de regresión logística en R hechos con glm(). Ambos usan las mismas variables, pero se hicieron usando diferentes subconjuntos de una matriz. ¿Hay una manera fácil de obtener un modelo promedio que proporcione las medias de los coeficientes y luego usar esto con la función predic ()?

[perdón si este tipo de pregunta debe publicarse en un sitio de programación, hágamelo saber y lo publicaré allí]

Gracias

Andrés
fuente
1
Puede encontrar información útil en el hilo relacionado en stats.stackexchange.com/q/8502/919 .
whuber
En R, el caretpaquete tiene algunas características interesantes para combinar modelos.
screechOwl

Respuestas:

2

¿Desea tomar el promedio de las probabilidades pronosticadas o el promedio de los coeficientes? Darán resultados diferentes, porque una regresión logística implica una transformación no lineal del predictor lineal.

Una función para hacer sería algo como esto. Establezca avgpara "prob"obtener el primero, o algo más para el segundo.

pred_comb <- function(mod1, mod2, dat, avg="prob", ...)
{
    xb1 <- predict(mod1, dat, type="link", ...)
    xb2 <- predict(mod2, dat, type="link", ...)
    if(avg == "prob")
        (plogis(xb1) + plogis(xb2))/2
    else plogis((xb1 + xb2)/2)
}
Hong Ooi
fuente
@Hong Ooi: ¡Gracias! Este código es realmente útil y hará el truco, pero lo que buscaba principalmente era una función que proporcionara un nuevo modelo R que luego pudiera poner en predicción () más adelante en el flujo de trabajo. Sin embargo, creo que su función es bastante elegante y me gusta la forma en que puede configurarla para dar probabilidades.
Andrew
@Andrew puedes aprovechar la programación orientada a objetos de R para esto. Pon tus dos modelos en una lista y dale una clase, por ejemplo glm_2. Llame a la función anterior predict.glm_2y luego puede usarla predict()en su objeto según sea necesario.
Hong Ooi
2
¿Por qué es apropiado promediar los coeficientes? Si los dos conjuntos de datos tienen tamaños diferentes, entonces seguramente se debe utilizar al menos alguna forma de promedio ponderado.
whuber
@ Hong - gracias, intentaré esto. @whuber - gracias por señalar esto. Si mis dos conjuntos de datos son del mismo tamaño, está ponderando un problema (no había pensado en esto antes). Si son diferentes, ¿pongo el peso según la proporción de los tamaños (por ejemplo, si uno es dos veces más grande, ¿doy el doble de peso?
Andrew
@ Andrew Es correcto ponderar por conteo de datos solo si los valores de las variables independientes son los mismos en ambos subconjuntos. Para un mejor enfoque (que también es teóricamente válido), vea el hilo al que hice referencia en un comentario a su pregunta.
whuber