我一直在使用glm()
和predict()
函数来获取每个受访者的预计概率。我想知道如何才能将Stata的默认设置用于平均边际效应(AME)而不是平均值来获得概率。
具体来说,我正在尝试复制另一位研究人员获得的百分比值,但他使用的是Stata而不是 R 。 他在一封电子邮件中回答:
“ ...这些模型使用默认的Loga Stata设置运行(其他变量设置为AME而不是平均值)。估计的概率来自使用Stata的
margins
命令的相同模型 ...”
这是我尝试过的代码:
mylogit3<-glm(candidatebinary~educated+partybinary+marriagebianry+age+gender+childscaler+domscale+imscale+rrscale+econscale+ideologyscale,data=informedvoters,family="binomial")
prob=predict(mylogit3,informedvoters,type="response")
我还尝试了margins软件包中的margins()
,该软件包将Stata的独特功能导入到 R 中。我想我的问题确实是如何像我通常使用margins()
一样,使用 R 中的predict()
函数来获得概率。
答案 0 :(得分:1)
margins
命令的状态默认值是使用协变量的实际值进行预测,然后取平均值。例如:
/* Stata Code */
sysuse auto, clear
(1978 Automobile Data)
export delimited mpg foreign using "~/Desktop/cars.csv", replace
file /Users/dimitriy/Desktop/cars.csv saved
// Logit and predictions
quietly logit foreign mpg, nolog
margins
Predictive margins Number of obs = 74
Model VCE : OIM
Expression : Pr(foreign), predict()
------------------------------------------------------------------------------
| Delta-method
| Margin Std. Err. z P>|z| [95% Conf. Interval]
-------------+----------------------------------------------------------------
_cons | .2972973 .0487662 6.10 0.000 .2017172 .3928773
------------------------------------------------------------------------------
/* R equivalent */
rsource, terminator(END_OF_R)
Assumed R program path: "/usr/local/bin/R"
Beginning of R output
> library(foreign)
> cars<-read.csv("~/Desktop/cars.csv")
> logit<-glm(foreign~mpg,data=cars, family="binomial")
> (margins<-mean(logit$fit))
[1] 0.2972973
请注意,此处使用了社区贡献命令rsource
,该命令可以使用 R 从Stata内部运行 R 源文件和/或内联 R 代码。