Estoy tratando de hacer una regresión logit ordenada. Estoy ejecutando el modelo así (solo un pequeño modelo tonto que estima el número de empresas en un mercado a partir de medidas de ingresos y población). Mi pregunta es sobre predicciones.
nfirm.opr<-polr(y~pop0+inc0, Hess = TRUE)
pr_out<-predict(nfirm.opr)
Cuando ejecuto predicción (que estoy tratando de usar para obtener la predicción y), las salidas son 0, 3 o 27, lo que de ninguna manera refleja lo que parece ser la predicción basada en mis predicciones manuales del coeficiente estimaciones e interceptaciones. ¿Alguien sabe cómo obtener predicciones "precisas" para mi modelo logit ordenado?
EDITAR
Para aclarar mi preocupación, mis datos de respuesta tienen observaciones en todos los niveles.
>head(table(y))
y
0 1 2 3 4 5
29 21 19 27 15 16
donde como mi variable de predicción parece estar acumulando
> head(table(pr_out))
pr_out
0 1 2 3 4 5
117 0 0 114 0 0
r
econometrics
logit
ordered-logit
prototoast
fuente
fuente
predict
difieren los valores devueltos por la función de los que generó manualmente? ¿Cuál es la estructura de su variable dependiente? Proporcione un ejemplo reproducible.polr()
contra otras funciones? Usted podría tratarlrm()
de paqueterms
:lrmFit <- lrm(y ~ pop0 + inc0); predict(lrmFit, type="fitted.ind")
. Otra opción esvglm()
desde el paqueteVGAM
:vglmFit <- vglm(y ~ pop0 + inc0, family=propodds); predict(vglmFit, type="response")
. Ambos devuelven la matriz de probabilidades de categoría predichas. Vea mi respuesta para obtener las categorías predichas a partir de ahí.Respuestas:
Para verificar manualmente las predicciones derivadas del usoY 1,…,g,…,k X1,…,Xj,…,Xp
polr()
del paqueteMASS
, suponga una situación con una variable dependiente categórica con categorías ordenadas y predictores . asume el modelo de probabilidades proporcionales1 , ... , g , ... , k X 1 , ... , X j , ... , X ppolr()
Para posibles opciones implementadas en otras funciones, vea esta respuesta . La función logística es la inversa de la función logit, por lo que las probabilidades predichas sonp^(Y⩽g)
Las probabilidades de categoría predichas son . Aquí hay un ejemplo reproducible en R con dos predictores . Para una variable ordinal , corté una variable continua simulada en 4 categorías.P^(Y=g)=P^(Y≤g)−P^(Y≤g−1) X1,X2 Y
Ahora ajuste el modelo de probabilidades proporcionales usando
polr()
y obtenga la matriz de probabilidades de categoría predichas usandopredict(polr(), type="probs")
.Para verificar manualmente estos resultados, necesitamos extraer las estimaciones de los parámetros, de estos calcular los logits pronosticados, de estos logits calcular las probabilidades predichas , y luego vincular las probabilidades de categoría predichas a una matriz .p^(Y⩽g)
Compare con el resultado de
polr()
.Para las categorías predichas,
predict(polr(), type="class")
solo elige, para cada observación, la categoría con la mayor probabilidad.Comparar con el resultado de
polr()
.fuente