R语言stargazer导入平均边际效应误认系数为常数问题咨询
问题解决方法
问题根源
你使用的模板回归Fake_RE默认包含截距项,stargazer会严格匹配模板模型的系数顺序:模板的系数排列为【截距→X→Z】共3个位置,你传入的2个边际效应会按顺序填充前两个位置,最终导致X的边际效应被填入截距位、Z的边际效应被填入X位、Z位空置,就是你观察到的异常结果。
解决方案
方案1:修改模板回归为无截距形式(最简便)
你只是用Fake_RE作为表格结构模板,不需要用到它本身的估计结果,直接构建无截距的模板即可让系数顺序和你的边际效应顺序完全匹配:
# 修改模板回归,去掉截距项 Fake_RE <- glm(Y ~ X + Z - 1, data = DF, family=binomial()) # 原调用无需额外参数,输出自然无常数项 stargazer(list(Fake_RE), type = "text", coef = list(Test_DF$estimate), se = list(Test_DF$std.error))
方案2:不修改模板,手动补位+删除常数项
如果不想改动模板回归,只要给传入的系数、标准误向量首位补NA占住截距位,再用omit参数删除常数项即可:
stargazer(list(Fake_RE), type = "text", coef = list(c(NA, Test_DF$estimate)), # 首位补NA对应模板的截距位 se = list(c(NA, Test_DF$std.error)), omit = "Constant") # 移除常数项行
正常输出示例
两种方案都会得到符合预期的表格:
============================================= Dependent variable: --------------------------- Y --------------------------------------------- X 0.002 (0.001) Z -0.001 (0.001) --------------------------------------------- Observations 1,000 Log Likelihood -690.097 Akaike Inf. Crit. 1,386.194 ============================================= Note: *p<0.1; **p<0.05; ***p<0.01
内容的提问来源于stack exchange,提问作者Sharif Amlani
相关产品推荐
相关产品推荐

