Stargazer, lm (ve diğer) nesneler için çok güzel lateks masalar üretir. Bir modeli maksimum olasılıkla uydurduğumu varsayalım. Hayalperestin tahminlerim için lm benzeri bir tablo oluşturmasını istiyorum. Bunu nasıl yapabilirim?
Biraz karmaşık olsa da, tahminlerimi içeren "sahte" bir lm nesnesi oluşturmak bir yol olabilir - bu, özet (my.fake.lm.object) çalıştığı sürece çalışacaktır. Bu kolayca yapılabilir mi?
Bir örnek:
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?
Daha kesin olmak gerekirse: lm nesneleriyle, stargazer, bağımlı değişkeni tablonun üst kısmına güzel bir şekilde yazdırır, SE'leri karşılık gelen tahminlerin altında parantez içine alır ve tablonun altında R ^ 2 ve gözlem sayısı bulunur. Yukarıdaki gibi maksimum olasılıkla tahmin edilen "özel" bir modelle aynı davranışı elde etmenin (n kolay) bir yolu var mı?
Optim çıktımı bir lm nesnesi olarak giydirme konusundaki zayıf girişimlerim şunlardır:
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
Paket ile benzer bir şey yapmaya çalıştım . Tembellik nedeniyle, farklı bir modelin katsayılarının ve standart hatalarının üzerine yazdım ve bu da bana istenen çıktıyı verdi. Sizin durumunuzda, örneğin katsayılarının ve standart hatalarının üzerine yazabilirsinizmodel1
. Bu karmaşık bir çözüm olmasa da işe yaramalı. Söylemeye gerek yok, daha iyi bir çözüm olup olmadığını merak ediyorum ...