2 votos

¿Cómo puedo calcular la respuesta de regresión beta utilizando los coeficientes?

Para este ejemplo supongamos que tenemos un dato Reading skills de un betareg paquete.

data("ReadingSkills", package = "betareg") 
head(ReadingSkills)
##   accuracy dyslexia     iq
## 1  0.88386       no  0.827
## 2  0.76524       no  0.590
## 3  0.91508       no  0.471
## 4  0.98376       no  1.144
## 5  0.88386       no -0.676
## 6  0.70905       no -0.795

Y tengo un modelo de regresión beta del ejemplo:

rs_beta <- betareg(accuracy ~ dyslexia * iq | dyslexia + iq,
  data = ReadingSkills, hessian = TRUE)

Así que tengo unos coeficientes :

coef(rs_beta)
##       (Intercept)          dyslexia                iq       dyslexia:iq 
##         1.1232251        -0.7416450         0.4863696        -0.5812569 
## (phi)_(Intercept)    (phi)_dyslexia          (phi)_iq 
##         3.3044312         1.7465642         1.2290731 

Si calculo la respuesta utilizando el predict() función que me da:

predict(rs_beta, newdata = ReadingSkills[1,], type = "response")
## 1 
## 0.9397888 

Sé que por defecto se utiliza la función de enlace logit. Así que estoy tratando de calcular esto manualmente para la primera observación con los coeficientes anteriores y me da:

logit(r)=1.1232251+0.48636960.827=1.5245r=0.82134

¿Dónde me equivoco?

1voto

Daniel Lew Puntos 39063

La razón es que dyslexia utiliza contrastes de suma en lugar de los contrastes de tratamiento por defecto, véase ?ReadingSkills . Esto significa que se codifica -1/1 en lugar de 0/1. La razón de esto es para que coincida con los resultados del original de Smithson & Verkuilen (2006, Métodos psicológicos ) papel.

Así, la primera fila de la matriz del modelo es:

model.matrix(rs_beta)[1,]
## (Intercept)    dyslexia          iq dyslexia:iq 
##       1.000      -1.000       0.827      -0.827 

En consecuencia, la predicción es (utilizando un poco de redondeo para simplificar):

logit(μ)=1.12320.7417(1)+0.48640.8270.5813(0.827)=2.7479μ=0.9398

El resultado exacto se puede obtener mediante:

plogis(model.matrix(rs_beta)[1,] %*% coef(rs_beta, model = "mean"))
##           [,1]
## [1,] 0.9397888

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