我使用R语言复制一项研究,并希望得到作者报告的大部分相同结果。然而,在某个时候,我计算出的边际效应似乎过于小了。如果您能查看我的推理和下面的代码,并确定我是否在某个地方出错,我将不胜感激。
我的样本包含24535个观测值,因变量“x028bin”是一个二元变量,取值为0和1,还有10个解释变量。其中9个自变量具有数值水平,“f025grouped”自变量是由不同宗教派别组成的因子。
我想运行一个包括宗教派别虚拟变量的probit回归模型,然后计算边际效应。为此,我首先消除缺失值,并使用因变量和自变量之间的交叉表来验证是否存在小于等于0的单元格。然后我运行probit模型,该模型正常工作,并且我也获得了合理的结果:
probit4AKIE <- glm(x028bin ~ x003 + x003squ + x025secv2 + x025terv2 + x007bin + x04chief + x011rec + a009bin + x045mod + c001bin + f025grouped, family=binomial(link="probit"), data=wvshm5red2delna, na.action=na.pass)
summary(probit4AKIE)
然而,当使用 probit 系数和一个比例因子计算所有变量处于其平均值时的边际效应时,我得到的边际效应太小了(例如,2.6042e-78)。
代码如下:
ttt <- cbind(wvshm5red2delna$x003,
wvshm5red2delna$x003squ,
wvshm5red2delna$x025secv2,
wvshm5red2delna$x025terv2,
wvshm5red2delna$x007bin,
wvshm5red2delna$x04chief,
wvshm5red2delna$x011rec,
wvshm5red2delna$a009bin,
wvshm5red2delna$x045mod,
wvshm5red2delna$c001bin,
wvshm5red2delna$f025grouped,
wvshm5red2delna$f025grouped,
wvshm5red2delna$f025grouped,
wvshm5red2delna$f025grouped,
wvshm5red2delna$f025grouped,
wvshm5red2delna$f025grouped,
wvshm5red2delna$f025grouped,
wvshm5red2delna$f025grouped,
wvshm5red2delna$f025grouped) #I put variable "f025grouped" 9 times because this variable consists of 9 levels
ttt <- as.data.frame(ttt)
xbar <- as.matrix(mean(cbind(1,ttt[1:19]))) #1:19 position of variables in dataframe ttt
betaprobit4AKIE <- probit4AKIE$coefficients
zxbar <- t(xbar) %*% betaprobit4AKIE
scalefactor <- dnorm(zxbar)
marginprobit4AKIE <- scalefactor * betaprobit4AKIE[2:20] #2:20 are the positions of variables in the output of the probit model 'probit4AKIE' (variables need to be in the same ordering as in data.frame ttt), the constant in the model occupies the first position
marginprobit4AKIE #in this step I obtain values that are much too small
抱歉,由于我的数据集过大,我无法为您提供一个可行的示例。非常感谢您的任何意见。非常感谢。
最好的祝福,
托比亚斯