r - 将最大似然估计的系数放入观星表中

标签 r optimization lm stargazer

Stargazer 为 lm(和其他)物体生成非常漂亮的 latex 表。假设我已经通过最大似然拟合了一个模型。我希望 stargazer 为我的估计生成一个类似 lm 的表格。我怎样才能做到这一点?

尽管这有点hacky,但一种方法可能是创建一个包含我的估计的“假”lm 对象——我认为只要summary(my.fake.lm.object) 有效,这就会有效。这容易实现吗?

一个例子:

library(stargazer)

N <- 200
df <- data.frame(x=runif(N, 0, 50))
df$y <- 10 + 2 * df$x + 4 * rt(N, 4)  # True params
plot(df$x, df$y)

model1 <- lm(y ~ x, data=df)
stargazer(model1, title="A Model")  # I'd like to produce a similar table for the model below

ll <- function(params) {
    ## Log likelihood for y ~ x + student's t errors
    params <- as.list(params)
    return(sum(dt((df$y - params$const - params$beta*df$x) / params$scale, df=params$degrees.freedom, log=TRUE) -
               log(params$scale)))
}

model2 <- optim(par=c(const=5, beta=1, scale=3, degrees.freedom=5), lower=c(-Inf, -Inf, 0.1, 0.1),
                fn=ll, method="L-BFGS-B", control=list(fnscale=-1), hessian=TRUE)
model2.coefs <- data.frame(coefficient=names(model2$par), value=as.numeric(model2$par),
                           se=as.numeric(sqrt(diag(solve(-model2$hessian)))))

stargazer(model2.coefs, title="Another Model", summary=FALSE)  # Works, but how can I mimic what stargazer does with lm objects?

更准确地说:对于 lm 对象,stargazer 可以在表格顶部很好地打印因变量,在相应估计值下方的括号中包含 SE,并在表格底部显示 R^2 和观测值数量。是否有一种(简单的)方法可以通过最大似然估计的“自定义”模型获得相同的行为,如上所述?

以下是我将优化输出打扮成 lm 对象的无力尝试:

model2.lm <- list()  # Mimic an lm object
class(model2.lm) <- c(class(model2.lm), "lm")
model2.lm$rank <- model1$rank  # Problematic?
model2.lm$coefficients <- model2$par
names(model2.lm$coefficients)[1:2] <- names(model1$coefficients)
model2.lm$fitted.values <- model2$par["const"] + model2$par["beta"]*df$x
model2.lm$residuals <- df$y - model2.lm$fitted.values
model2.lm$model <- df
model2.lm$terms <- model1$terms  # Problematic?
summary(model2.lm)  # Not working

最佳答案

我刚刚遇到了这个问题,并通过使用 stargazer 中的 coef seomit 函数克服了这个问题...例如

stargazer(regressions, ...
                     coef = list(... list of coefs...),
                     se = list(... list of standard errors...),
                     omit = c(sequence),
                     covariate.labels = c("new names"),
                     dep.var.labels.include = FALSE,
                     notes.append=FALSE), file="")

关于r - 将最大似然估计的系数放入观星表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21338567/

相关文章:

r - 使用 ggplot2 绘制偏最小二乘回归 (plsr) 双标图

java - 可以优化数组访问吗?

r - lm() 在 mutate() 中调用

r - plot.lm 错误 : $ operator is invalid for atomic vectors

r - 合并 R 中的互补列

R gsub 与管道交替 - 或 - 交替

c++ - (gcc) 编译器是否优化了空体函数?

Typed Racket 中的优化......这是否太过分了?

r - 使用NeweyWest时如何更新摘要?

r - rmarkdown block 的工作目录不是 markdown 所在的位置