在stargazer()LaTeX输出中的优势比而不是logits

时间:2013-04-26 12:32:33

标签: r latex stargazer

使用stargazer在逻辑回归对象上创建LaTeX表时,标准行为是输出每个模型的logit值。是否有可能获得exp(logit)?也就是说,我可以获得赔率 - 比率吗?

在观星者文档中,下面提到“Coef” - 参数,但我不明白这是否可以启用exp(logits)。

  

Coef:将替换默认值的数字向量列表   每个模型的系数值。元素名称将用于匹配   系数个体协变量,因此应该匹配   协变员姓名。 NULL向量表示对于给定模型,   应使用默认的系数集。相反,NA矢量   意味着所有模型的系数都应留空。

4 个答案:

答案 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值。我们不希望这样。此外,标准错误在日志基础上,但我们无法对它们进行取幂。我首选的方法是:

  1. 对stargazer中的coefs进行取幂
  2. 关闭自动p和自动t
  3. 报告(未转换)表格中的t统计数据而不是标准错误
  4. 在代码中,这是:

    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的对数几率的估计增加。因此,要获得赔率比,我们只需使用exp函数:

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