Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将最大似然估计的系数放入stargazer表中_R_Optimization_Lm_Stargazer - Fatal编程技术网

将最大似然估计的系数放入stargazer表中

将最大似然估计的系数放入stargazer表中,r,optimization,lm,stargazer,R,Optimization,Lm,Stargazer,Stargazer为lm(和其他)对象制作了非常漂亮的乳胶表。假设我用极大似然法拟合了一个模型。我希望stargazer为我的估算制作一个类似lm的表格。我该怎么做 尽管这有点老套,但一种方法可能是创建一个包含我的估计的“假”lm对象——我认为只要summary(my.fake.lm.object)有效,这就行了。这容易做到吗 例如: library(stargazer) N <- 200 df <- data.frame(x=runif(N, 0, 50)) df$y <-

Stargazer为lm(和其他)对象制作了非常漂亮的乳胶表。假设我用极大似然法拟合了一个模型。我希望stargazer为我的估算制作一个类似lm的表格。我该怎么做

尽管这有点老套,但一种方法可能是创建一个包含我的估计的“假”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?
库(stargazer)

N我不知道您对使用stargazer的承诺有多大,但是您可以尝试使用broom和xtable软件包,问题是它不会给您提供optim模型的标准错误

library(broom)
library(xtable)
xtable(tidy(model1))
xtable(tidy(model2))

我刚刚遇到了这个问题,通过使用stargazer中的
coef
se
,以及
省略
函数,我克服了这个问题。。。e、 g

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="")

您需要首先实例化一个虚拟
lm
对象,然后对其进行修饰:

#...
model2.lm = lm(y ~ ., data.frame(y=runif(5), beta=runif(5), scale=runif(5), degrees.freedom=runif(5)))
model2.lm$coefficients <- model2$par
model2.lm$fitted.values <- model2$par["const"] + model2$par["beta"]*df$x
model2.lm$residuals <- df$y - model2.lm$fitted.values
stargazer(model2.lm, se = list(model2.coefs$se), summary=FALSE, type='text')

# ===============================================
#                         Dependent variable:    
#                     ---------------------------
#                                  y             
# -----------------------------------------------
# const                        10.127***         
#                               (0.680)          
#                                                
# beta                         1.995***          
#                               (0.024)          
#                                                
# scale                        3.836***          
#                               (0.393)          
#                                                
# degrees.freedom              3.682***          
#                               (1.187)          
#                                                
# -----------------------------------------------
# Observations                    200            
# R2                             0.965           
# Adjusted R2                    0.858           
# Residual Std. Error       75.581 (df = 1)      
# F Statistic              9.076 (df = 3; 1)     
# ===============================================
# Note:               *p<0.1; **p<0.05; ***p<0.01
#。。。
model2.lm=lm(y~,data.frame(y=runif(5),beta=runif(5),scale=runif(5),degrees.freedom=runif(5)))

model2.lm$系数我尝试过类似于
texreg
包的东西。由于懒惰,我最终覆盖了不同模型的系数和标准误差,这给了我所需的输出。例如,在您的情况下,您可以覆盖
model1
的系数和标准错误。虽然这不是一个复杂的解决方案,但它应该是可行的。不用说,我很想知道是否有更好的解决方案……您可以看看stargazer函数,它通过
stargazer::.stargazer.wrap
完成繁重的工作。它看起来像一个容器,除了格式化表的代码之外,还有一堆其他函数。而且它似乎为
lm
(和
glm
)评估了相当多的组件,这使得很难修饰
optim()
结果。在
texreg
中,使用
createTexreg
函数创建
texreg
对象就足够了。基本上,您只需提交系数、SEs等。请参见
?CreateTextreg
。然后可以将
texreg
对象送入
texreg
htmlreg
screenreg
plotreg
函数。或者,JSS文章的第6节描述了如何为新的模型类型编写和注册方法,以防以后需要回收相同的模板。
#...
model2.lm = lm(y ~ ., data.frame(y=runif(5), beta=runif(5), scale=runif(5), degrees.freedom=runif(5)))
model2.lm$coefficients <- model2$par
model2.lm$fitted.values <- model2$par["const"] + model2$par["beta"]*df$x
model2.lm$residuals <- df$y - model2.lm$fitted.values
stargazer(model2.lm, se = list(model2.coefs$se), summary=FALSE, type='text')

# ===============================================
#                         Dependent variable:    
#                     ---------------------------
#                                  y             
# -----------------------------------------------
# const                        10.127***         
#                               (0.680)          
#                                                
# beta                         1.995***          
#                               (0.024)          
#                                                
# scale                        3.836***          
#                               (0.393)          
#                                                
# degrees.freedom              3.682***          
#                               (1.187)          
#                                                
# -----------------------------------------------
# Observations                    200            
# R2                             0.965           
# Adjusted R2                    0.858           
# Residual Std. Error       75.581 (df = 1)      
# F Statistic              9.076 (df = 3; 1)     
# ===============================================
# Note:               *p<0.1; **p<0.05; ***p<0.01