stargazer2 - 自动 return 优势比
stargazer2 - automatically return odds ratio
我正在做逻辑回归,推荐使用 stargazer2 函数而不是 stargazer 函数,因为它会自动将对数几率转换为几率比。
不过我的 R 没有找到这个函数。我现在的问题是,这是否存在,或者是否有一种更简单但仍然整洁的方法来对值取幂而不是手动操作?
stargazer2() 似乎是 https://rdrr.io/github/cimentadaj/cimentadaj/man/stargazer2.html 开发的众多函数之一,其中提供了源代码。
这是一个更具体的例子:
您需要先加载 stargazer 包
library(stargazer)
如@John Garland 所述,stargazer2 是由 cimentadaj 开发的实用函数。您可以从这里加载它:https://github.com/cimentadaj/cimentadaj/blob/master/R/stargazer2.R
这是上面 github 存储库中的函数 copy-pasted:
stargazer2 <- function(model, odd.ratio = FALSE, ...) {
if(!("list" %in% class(model))) model <- list(model)
if (odd.ratio) {
coefOR2 <- lapply(model, function(x) exp(stats::coefficients(x)))
seOR2 <- lapply(model, function(x) exp(stats::coefficients(x)) * summary(x)$coef[, 2])
p2 <- lapply(model, function(x) summary(x)$coefficients[, 4])
stargazer::stargazer(model, coef = coefOR2, se = seOR2, p = p2, ...)
} else {
stargazer::stargazer(model, ...)
}
}
现在,让我们拟合一个逻辑回归模型,看看它是如何工作的。我以此处的示例为基础:https://stats.oarc.ucla.edu/r/dae/logit-regression/
# load some data
mydata <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")
# fit model
mylogit <- glm(admit ~ gre + gpa + factor(rank), data = mydata, family = "binomial")
具有优势比的 Stargazer 输出如下所示(注意参数为 odd.ratio
!)
stargazer2(mylogit, odd.ratio=TRUE, type='text')
=============================================
Dependent variable:
---------------------------
admit
---------------------------------------------
gre 1.002**
(0.001)
gpa 2.235**
(0.741)
factor(rank)2 0.509**
(0.161)
factor(rank)3 0.262***
(0.090)
factor(rank)4 0.212***
(0.089)
Constant 0.019***
(0.021)
---------------------------------------------
Observations 400
Log Likelihood -229.259
Akaike Inf. Crit. 470.517
=============================================
Note: *p<0.1; **p<0.05; ***p<0.01
我也想借此机会插入优秀的modelsummary包(https://vincentarelbundock.github.io/modelsummary/articles/modelsummary.html),你可以通过install.packages(modelsummary)
安装。
您可以通过 运行
完成与上述相同的操作
modelsummary(mylogit, exponentiate=TRUE)
我正在做逻辑回归,推荐使用 stargazer2 函数而不是 stargazer 函数,因为它会自动将对数几率转换为几率比。
不过我的 R 没有找到这个函数。我现在的问题是,这是否存在,或者是否有一种更简单但仍然整洁的方法来对值取幂而不是手动操作?
stargazer2() 似乎是 https://rdrr.io/github/cimentadaj/cimentadaj/man/stargazer2.html 开发的众多函数之一,其中提供了源代码。
这是一个更具体的例子:
您需要先加载 stargazer 包
library(stargazer)
如@John Garland 所述,stargazer2 是由 cimentadaj 开发的实用函数。您可以从这里加载它:https://github.com/cimentadaj/cimentadaj/blob/master/R/stargazer2.R
这是上面 github 存储库中的函数 copy-pasted:
stargazer2 <- function(model, odd.ratio = FALSE, ...) {
if(!("list" %in% class(model))) model <- list(model)
if (odd.ratio) {
coefOR2 <- lapply(model, function(x) exp(stats::coefficients(x)))
seOR2 <- lapply(model, function(x) exp(stats::coefficients(x)) * summary(x)$coef[, 2])
p2 <- lapply(model, function(x) summary(x)$coefficients[, 4])
stargazer::stargazer(model, coef = coefOR2, se = seOR2, p = p2, ...)
} else {
stargazer::stargazer(model, ...)
}
}
现在,让我们拟合一个逻辑回归模型,看看它是如何工作的。我以此处的示例为基础:https://stats.oarc.ucla.edu/r/dae/logit-regression/
# load some data
mydata <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")
# fit model
mylogit <- glm(admit ~ gre + gpa + factor(rank), data = mydata, family = "binomial")
具有优势比的 Stargazer 输出如下所示(注意参数为 odd.ratio
!)
stargazer2(mylogit, odd.ratio=TRUE, type='text')
=============================================
Dependent variable:
---------------------------
admit
---------------------------------------------
gre 1.002**
(0.001)
gpa 2.235**
(0.741)
factor(rank)2 0.509**
(0.161)
factor(rank)3 0.262***
(0.090)
factor(rank)4 0.212***
(0.089)
Constant 0.019***
(0.021)
---------------------------------------------
Observations 400
Log Likelihood -229.259
Akaike Inf. Crit. 470.517
=============================================
Note: *p<0.1; **p<0.05; ***p<0.01
我也想借此机会插入优秀的modelsummary包(https://vincentarelbundock.github.io/modelsummary/articles/modelsummary.html),你可以通过install.packages(modelsummary)
安装。
您可以通过 运行
完成与上述相同的操作modelsummary(mylogit, exponentiate=TRUE)