[英]Presenting Zelig Logistic Regression in Knitr with Stargazer or Other Package
除了邏輯回歸之外,Stargazer似乎占用了大多數Zelig模型對象:
m1 <- zelig(voted ~ . - weight_full - by,
weights = mydata$weight_full,
data=mydata,
model="logit",
cite = FALSE)
我從以上代碼收到以下警告:
# Error in envRefInferField(x, what, getClass(class(x)), selfEnv)
# ‘result’ is not a valid field or method name for reference class “Zelig-logit”
任何人都可以使用Knitr在回歸輸出表中顯示這樣的模型來生成.tex / .Rnw文件嗎?
這可能為時已晚,但解決方案是使用來自基礎R的glm()
重新估計模型。以下代碼適用於我,使用Zelig的新引用類語法估計的邏輯回歸。
mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")
model1 <- zlogit$new()
model1$zelig(admit ~ gpa,
data=mydata)
library(stargazer)
stargazer(glm(model1$zelig.out$z.out[[1]], family=binomial(link = "logit")))
使用Zelig估計線性回歸時,相同的策略也可行。
基於Constantin的有用答案,我創建了一個簡單的函數unzelig
來獲取glm zelig對象並返回一個傳統的glm對象:
# extract data + model + family zelig object, return glm object
unzelig <- function(zelig_model) {
z_out <- zelig_model$zelig.out$z.out[[1]]
z_family <- z_out[["family"]][["family"]]
# when zelig(model = 'ls') assign family <- "gaussian"
if(is.null(z_family)) {z_family <- "gaussian"}
glm(z_out,
family = z_family)
}
# simple example
z1 <- zelig(mpg ~ cyl, model = 'ls', data = mtcars, cite = FALSE)
z2 <- zelig(I(mpg > 15) ~ cyl, model = 'logit', data = mtcars, cite = FALSE)
z3 <- zelig(as.integer(mpg) ~ cyl, model = 'poisson', data = mtcars, cite = FALSE)
g1 <- unzelig(z1)
g2 <- unzelig(z2)
g3 <- unzelig(z3)
stargazer(g1, g2, g3, type = 'text')
# error check
g1 <- glm(mpg ~ cyl, data = mtcars)
g2 <- glm(I(mpg > 15) ~ cyl, family = binomial, data = mtcars)
g3 <- glm(as.integer(mpg) ~ cyl, family = poisson, data = mtcars)
stargazer(g1, g2, g3, type = 'text')
此外,還有一個開發中的函數,可以使用命令to_zelig
將一些非Zelig對象轉換為Zelig友好對象。 這將允許使用標准R函數(如lm
或glm
估計模型,使用stargazer
或其他包生成表,然后將對象轉換為使用像setx
和sim
這樣的Zelig
函數。 在此處查看更多信息: http : //docs.zeligproject.org/reference/to_zelig.html
Zelig軟件包現在包含一個便利功能,可以輕松提取適合的模型對象:
stargazer(from_zelig_model(m1))
應該產生預期的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.