Stargazer sản xuất các bảng cao su rất đẹp cho các đối tượng lm (và các loại khác). Giả sử tôi phù hợp với một mô hình theo khả năng tối đa. Tôi muốn stargazer sản xuất một chiếc bàn giống như lm để tôi ước tính. Tôi có thể làm cái này như thế nào?
Mặc dù hơi khó, một cách có thể là tạo một đối tượng lm "giả" có chứa các ước tính của tôi - tôi nghĩ điều này sẽ hiệu quả miễn là tóm tắt (my.fake.lm.object) hoạt động. Điều đó có dễ dàng thực hiện được không?
Một ví dụ:
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?
Nói chính xác hơn: với các đối tượng lm, stargazer in một cách độc đáo biến phụ thuộc ở đầu bảng, bao gồm các SE trong dấu ngoặc đơn bên dưới các ước tính tương ứng và có R ^ 2 và số lượng quan sát ở cuối bảng. Có cách nào (n dễ dàng) để có được hành vi tương tự với mô hình "tùy chỉnh" được ước tính theo khả năng xảy ra tối đa như trên không?
Dưới đây là những nỗ lực yếu ớt của tôi trong việc thay đổi đầu ra tối ưu của tôi thành một đối tượng 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
texreg
gói. Do sự lười biếng, cuối cùng tôi đã ghi đè các hệ số và lỗi tiêu chuẩn của một mô hình khác, điều này đã cho tôi kết quả mong muốn. Trong trường hợp của bạn, bạn có thể ghi đè lên các hệ số và lỗi tiêu chuẩn củamodel1
. Mặc dù đây không phải là một giải pháp phức tạp, nhưng nó sẽ hoạt động. Không cần phải nói, tôi tò mò để xem nếu có giải pháp tốt hơn sẽ xuất hiện ...