Estoy tratando de replicar la salida de margins female, atmeans
en R que se muestra aquí:
https://stats.idre.ucla.edu/stata/dae/using-margins-for-predicted-probabilities/
puedo recrear la misma configuración mostrada en la página de la ucla con
library(foreign)
library(margins)
x <- read.dta( "https://stats.idre.ucla.edu/stat/data/hsbdemo.dta" )
x$honors <- as.numeric( x$honors == 'enrolled' )
y este código coincide con el logit honores i.female leer línea en la página de ucla
this_model <- glm( honors ~ female + read , data = x , family = binomial() )
summary(this_model)
a partir de aquí, estoy confundido acerca de cómo modificar
summary(margins(this_model))
para que yo reproduzca el stata atmeans
mi objetivo es reproducir la salida mostrada en la página de ucla, pero en R en lugar de stata:
margins female, atmeans
Adjusted predictions Number of obs = 200
Model VCE : OIM
Expression : Pr(honors), predict()
at : 0.female = .455 (mean)
1.female = .545 (mean)
read = 52.23 (mean)
------------------------------------------------------------------------------
| Delta-method
| Margin Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
female |
0 | .1127311 .0350115 3.22 0.001 .0441097 .1813524
1 | .2804526 .0509114 5.51 0.000 .1806681 .3802371
------------------------------------------------------------------------------
el R margins
páginas de ayuda de la biblioteca discute el atmeans
pero no es obvio para mí cómo implementar esto:
atmeans: calcula los efectos marginales en la media (MEMs) de un conjunto de datos en lugar del comportamiento por defecto de calcular los efectos marginales medios (AMEs)
El argumento atmeans de Stata no está implementado en margins() por varias razones, entre ellas porque es posible conseguir el efecto manualmente mediante una operación como
data$var <- mean(data$var, na.rm = TRUE)
y pasando el marco de datos modificado amargins(x, data = data)
.
0 votos
Creo que la cita que das resume exactamente los pasos que debes seguir. Supongamos que tus datos viven en
data
yvar
es la variable que te interesa. Reemplazarías los valores brutos devar
con la media de los valores devar
. Eso es lo que la líneadata$var <- mean(data$var, na.rm = TRUE)
logra. Entonces sólo tienes que suministrardata
amargins
. ¿Puede aclarar con qué parte tiene problemas?0 votos
Hola, no estoy entendiendo. ¿podría tomar el ejemplo mínimo que he proporcionado y hacer coincidir los números publicados por la UCLA usando R?