3 Stimmen

robuste Standardfehler in ggplot2

Ich würde gerne ein Modell mit ggplot2 darstellen. Ich habe eine robuste Varianz-Kovarianz-Matrix geschätzt, die ich gerne bei der Schätzung des Konfidenzintervalls verwenden würde.

Kann ich ggplot2 anweisen, meine VCOV zu verwenden, oder kann ich predict.lm irgendwie zwingen, meine VCOV-Matrix zu verwenden? Ein Dummy-Beispiel:

source("http://people.su.se/~ma/clmclx.R")
df <- data.frame(x1 = rnorm(100), x2 = rnorm(100), y = rnorm(100), group = as.factor(sample(1:10, 100, replace=T))) 
lm1 <- lm(y ~ x1 + x2, data = df)
coeftest(lm1)
## outputs coef.test, but can be modified to output VCOV
clx(lm1, 1, df$group)

Es wäre relativ einfach, sie in ein Ggplot einzufügen, wenn ich mit meiner erweiterten VCOV-Matrix "korrekte" Vorhersagen erhalten könnte.

4voto

Ben Bolker Punkte 190239

Nur die Standardfehler, nicht die Vorhersagen, sollten sich ändern - richtig?

getvcov <- function(fm,dfcw,cluster) {
  library(sandwich);library(lmtest)
  M <- length(unique(cluster))   
  N <- length(cluster)           
  K <- fm$rank                        
  dfc <- (M/(M-1))*((N-1)/(N-K))  
  uj  <- apply(estfun(fm),2, function(x) tapply(x, cluster, sum));
  dfc*sandwich(fm, meat=crossprod(uj)/N)*dfcw
}

V <- getvcov(lm1,1,df$group)
X <- as.matrix(model.frame(lm1))
se <- predict(lm1,se=TRUE)$se.fit
se_robust <- sqrt(diag(X %*% V %*% t(X)))

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X