使用stargazer在逻辑回归对象上创建LaTeX表时,标准行为是输出每个模型的logit值。是否有可能获得exp(logit)?也就是说,我可以获得赔率 - 比率吗?
在观星者文档中,下面提到“Coef” - 参数,但我不明白这是否可以启用exp(logits)。
Coef:将替换默认值的数字向量列表 每个模型的系数值。元素名称将用于匹配 系数个体协变量,因此应该匹配 协变员姓名。 NULL向量表示对于给定模型, 应使用默认的系数集。相反,NA矢量 意味着所有模型的系数都应留空。
答案 0 :(得分:10)
根据2014年的共生评论,“stargazer”的最新版本可以选择''适用。''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''和''ci''允许直接转换这些统计数据。
apply.coef a function that will be applied to the coefficients.
apply.se a function that will be applied to the standard errors.
apply.t a function that will be applied to the test statistics.
apply.p a function that will be applied to the p-values.
apply.ci a function that will be applied to the lower and upper bounds of the confidence intervals.
意思是你可以直接使用......
stargazer(model,
apply.coef = exp,
apply.se = exp)
编辑:我注意到,只是对CI进行取幂,不会给出你期望的结果。
编辑:您可以使用here描述的方法获取正确的CI。
答案 1 :(得分:7)
stargazer
允许您替换很多东西,因变量标签,协变量标签等等。要替换那些需要提供变量标签向量的那些,这样做是为了具有可发布的行名,而不是默认情况下来自R
的变量名。
因此,为了获得比值比,您需要提供赔率比率向量stargazer
。你如何获得那个载体?实际上很容易。假设您的模型名为model
,那么您的代码是:
coef.vector <- exp(model$coef)
stargazer(model,coef=list(coef.vector))
如果表格中有多个模型,则应扩展列表,例如coef=list(coef.vector1,coef.vector2,...)
,其中列表中的所有向量都将来自与上述类似的取幂。
答案 2 :(得分:4)
因此,问题在于您希望显示(非对数)优势比,但要根据基础线性模型保留测试统计数据。默认情况下,当您使用其中一个&#34; apply&#34;方法,例如apply.coef = exp
,stargazer将重新计算t统计量和p值。我们不希望这样。此外,标准错误在日志基础上,但我们无法对它们进行取幂。我首选的方法是:
在代码中,这是:
stargazer(model, apply.coef=exp, t.auto=F, p.auto=F, report = "vct*")
答案 3 :(得分:1)
各个职位都有一些正确的答案,但似乎没有一个可以综合考虑。假设以下内容:
glm_out <- glm(Y ~ X, data=DT, family = "binomial")
对于逻辑回归,回归系数(b1)是X的每单位增加的Y的
OR <- exp(coef(glm_out))
# pass in coef directly
stargazer(glm_out, coef = list(OR), t.auto=F, p.auto=F)
# or, use the apply.coef option
stargazer(glm_out, apply.coef = exp, t.auto=F, p.auto=F)
您不能简单地使用apply.se = exp
来获取标准。赔率错误
相反,您必须使用以下功能:Std.Error.OR = OR * SE(coef)
# define a helper function to extract SE from glm output
se.coef <- function(glm.output){sqrt(diag(vcov(glm.output)))}
# or, you can use the arm package
se.coef <- arm::se.coef
#Get the odds ratio
OR <- exp(coef(glm_out))
# Then, we can get the `StdErr.OR` by multiplying the two:
Std.Error.OR <- OR * se.coef(glm_out)
因此,要将其放入观星台,我们使用以下代码:
# using Std Errors
stargazer(glm_out, coef=list(OR), se = list(Std.Error.OR), t.auto=F, p.auto=F)
在赔率比例设置中的置信区间不对称。因此,我们不能仅做±1.96 * SE(OR)来获得CI。相反,我们可以根据原始对数赔率exp(coef ± 1.96*SE)
进行计算。
# Based on normal distribution to compute Wald CIs:
# we use confint.default to obtain the conventional confidence intervals
# then, use the exp function to get the confidence intervals
CI.OR <- as.matrix(exp(confint.default(glm_out)))
因此,要将其放入观星台,我们使用以下代码:
# using ci.custom
stargazer(glm_out, coef=list(OR), ci.custom = list(CI.OR), t.auto=F, p.auto=F, ci = T)
# using apply.ci
stargazer(glm_out, apply.coef = exp, apply.ci = exp, t.auto=F, p.auto=F, ci = T)
请勿使用赔率比率的置信区间来计算重要性(请参阅底部的注释和参考)。相反,您可以使用对数赔率进行操作:
z <- coef(glm_out)/se.coef(glm_out)
然后,使用它来获取重要性测试的p.values:
pvalue <- 2*pnorm(abs(coef(glm_out)/se.coef(glm_out)), lower.tail = F)
(来源:https://data.princeton.edu/wws509/r/c3s1)
有关统计测试的详细讨论,请参见以下链接:https://stats.stackexchange.com/questions/144603/why-do-my-p-values-differ-between-logistic-regression-output-chi-squared-test
请务必注意,与p值不同,95%CI并未报告度量的统计意义。实际上,如果95%CI不与空值重叠(例如OR = 1),则通常将其用作具有统计意义的代表。 尽管如此,将具有95%CI(覆盖空值)的OR解释为证据表明暴露与结果之间缺乏关联是不合适的。 source: Explaining Odds Ratios