Stargazer produziert sehr schöne Latex-Tische für lm (und andere) Objekte. Angenommen, ich habe ein Modell mit maximaler Wahrscheinlichkeit angepasst. Ich möchte, dass Stargazer eine lm-ähnliche Tabelle für meine Schätzungen erstellt. Wie kann ich das machen?
Obwohl es ein bisschen hackig ist, könnte eine Möglichkeit darin bestehen, ein "falsches" lm-Objekt zu erstellen, das meine Schätzungen enthält. Ich denke, dies würde funktionieren, solange die Zusammenfassung (my.fake.lm.object) funktioniert. Ist das leicht machbar?
Ein Beispiel:
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?
Genauer gesagt: Bei lm-Objekten druckt stargazer die abhängige Variable oben in der Tabelle gut aus, enthält SEs in Klammern unter den entsprechenden Schätzungen und hat R ^ 2 und die Anzahl der Beobachtungen unten in der Tabelle. Gibt es eine (n einfache) Möglichkeit, dasselbe Verhalten mit einem "benutzerdefinierten" Modell zu erzielen, das wie oben anhand der maximalen Wahrscheinlichkeit geschätzt wird?
Hier sind meine schwachen Versuche, meine optimale Ausgabe als lm-Objekt zu verkleiden:
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
quelle
texreg
Paket. Aufgrund der Faulheit habe ich die Koeffizienten und Standardfehler eines anderen Modells überschrieben, wodurch ich die gewünschte Ausgabe erhalten habe. In Ihrem Fall könnten Sie zB die Koeffizienten und Standardfehler von überschreibenmodel1
. Dies ist zwar keine ausgefeilte Lösung, sollte aber funktionieren. Unnötig zu sagen, ich bin gespannt, ob es bessere Lösungen gibt ...stargazer:::.stargazer.wrap
. Es sieht aus wie ein Container mit einer Reihe weiterer Funktionen zusätzlich zu dem Code, der die Tabellen formatiert. Und es scheint, als würde es einige Komponenten fürlm
(undglm
) bewerten , die es sehr schwierig machen würden, Ihreoptim()
Ergebnisse zu verbessern .texreg
würde es ausreichen, eintexreg
Objekt mit dercreateTexreg
Funktion zu erstellen . Sie übergeben im Grunde nur die Koeffizienten, SEs usw. Siehe?createTexreg
. Dastexreg
Objekt kann dann in die zugeführt werdentexreg
,htmlreg
,screenreg
undplotreg
Funktionen. Alternativ wird in Abschnitt 6 des JSS-Artikels beschrieben, wie Methoden für neue Modelltypen geschrieben und registriert werden, falls Sie dieselbe Vorlage später wiederverwenden möchten.Antworten:
Ich hatte gerade dieses Problem und habe es durch die Verwendung von
coef
se
undomit
Funktionen innerhalb von Stargazer überwunden ... zquelle
Sie müssen zuerst ein Dummy-
lm
Objekt instanziieren und es dann verkleiden:(und dann natürlich sicherstellen, dass die verbleibenden zusammenfassenden Statistiken korrekt sind)
quelle
Ich weiß nicht, wie sehr Sie sich für die Verwendung von Stargazer engagieren, aber Sie können versuchen, den Besen und die xtable-Pakete zu verwenden. Das Problem ist, dass Sie nicht die Standardfehler für das Optim-Modell erhalten
quelle