另一位用户问How do I add confidence intervals to odds ratios in stargazer table?并概述了他们对问题的解决方案(我在此处列出了相关的代码行)
OR.vector <- exp(mylogit$coef)
CI.vector <- exp(confint(mylogit))
p.values <- summary(mylogit)$coefficients[, 4]
# Table with ORs and CIs`
stargazer(mylogit, coef = list(OR.vector), ci = T,
ci.custom = list(CI.vector), p = list(p.values),
single.row = T, type = "text")
当我尝试为自己的模型运行相同的代码时,我收到以下错误
Error in summary(ml.TatC)$coefficients[, 4] :
incorrect number of dimensions
有谁知道为什么会这样?提前感谢您的帮助!
更新:这是使用的.txt文件的link。
我使用的代码如下:
tattoo <- read.table("https://ndownloader.figshare.com/files/6920972",
header=TRUE, na.strings=c("unk", "NA"))
library(mlogit)
Tat<-mlogit.data(tattoo, varying=NULL, shape="wide", choice="size", id.var="date")
ml.Tat<-mlogit(size~1|age+sex+yy, Tat, reflevel="small", id.var="date")
library(stargazer)
OR.vector<-exp(ml.Tat$coef)
CI.vector<-exp(confint(ml.Tat))
p.values<-summary(ml.Tat)$coefficients[,4] #incorrect # of dimensions, how am I supposed to determine dimensions?
stargazer(ml.Tat, coef=list(OR.vector), ci=TRUE, ci.custom=list(CI.vector), single.row=T, type="text", star.cutoffs=c(0.05,0.01,0.001), out="table1.txt", digits=4)
答案 0 :(得分:1)
mlogit
包通过summary.mlogit
中的函数$CoefTable
存储p值,而不是$coefficients
,与summary.glm
一样。你可以看到这个:
> str(summary(ml.Tat)$coefficients)
atomic [1:8] -4.45e+02 -1.88e+02 2.51e-02 8.04e-03 1.38 ...
summary(ml.Tat)$coefficients
是一个原子向量,因此只有一个维度。这就是你收到错误的原因。
使用summary(ml.Tat)$CoefTable[,4]
提取所需的p值:
> summary(ml.Tat)$CoefTable[,4]
large:(intercept) medium:(intercept) large:age medium:age large:sexM medium:sexM
0.000000e+00 0.000000e+00 8.536121e-10 1.731441e-03 0.000000e+00 0.000000e+00
large:yy medium:yy
0.000000e+00 0.000000e+00
所以你的代码应该是:
library(stargazer)
OR.vector<-exp(ml.Tat$coef)
CI.vector<-exp(confint(ml.Tat))
p.values<-summary(ml.Tat)$CoefTable[,4]
stargazer(ml.Tat, coef=list(OR.vector), ci=TRUE, ci.custom=list(CI.vector),
p = p.values, single.row=T, type="text",
star.cutoffs=c(0.05,0.01,0.001),
out="table1.txt", digits=4)
你的桌子:
================================================
Dependent variable:
-----------------------------
size
------------------------------------------------
large:(intercept) 0.0000*** (0.0000, 0.0000)
medium:(intercept) 0.0000 (0.0000, 0.0000)
large:age 1.0254 (1.0172, 1.0336)
medium:age 1.0081 (1.0030, 1.0132)
large:sexM 3.9821 (3.5355, 4.4851)
medium:sexM 2.0886 (1.9576, 2.2284)
large:yy 1.2455 (1.2189, 1.2726)
medium:yy 1.0976 (1.0849, 1.1105)
------------------------------------------------
Observations 18,162
R2 0.0410
Log Likelihood -15,882.7000
LR Test 1,357.1140*** (df = 8)
================================================
Note: *p<0.05; **p<0.01; ***p<0.001
很高兴知道(如果你是R的新手),包以不同的方式部署summary
函数,所以总是很好地探索对象以查看正在发生的事情。