Ich analysiere ein Dataset, in dem Daten in mehreren Gruppen (Städte in Regionen) gruppiert sind. Der Datensatz wie folgt aussieht:Verwenden der Cluster-Kovarianzmatrix in predict.lm()
R> df <- data.frame(x = rnorm(10),
y = 3*rnorm(x),
groups = factor(sample(c('0','1'), 10, TRUE)))
R> head(df)
x y groups
1 -0.8959 1.54 1
2 -0.1008 -2.73 1
3 0.4406 0.44 0
4 0.0683 1.62 1
5 -0.0037 -0.20 1
6 -0.8966 -2.34 0
ich meine lm() will für Intra Korrelation in Gruppen zu berücksichtigen schätzt, und zu diesem Zweck verwende ich eine Funktion cl()
, die ein lm()
und gibt die robuste gruppierten Kovarianzmatrix (original here nimmt):
cl <- function(fm, cluster) {
library(sandwich)
M <- length(unique(cluster))
N <- length(cluster)
K <- fm$rank
dfc <- (M/(M-1))*((N-1)/(N-K-1))
uj <- apply(estfun(fm), 2, function(x) tapply(x, cluster, sum));
vcovCL <- dfc * sandwich(fm, meat = crossprod(uj)/N)
return(vcovCL)
}
Jetzt
output <- lm(y ~ x, data = df)
clcov <- cl(output, df$groups)
coeftest(output, clcov, nrow(df) - 1)
gibt mir die Schätzungen ich brauche. Das Problem ist nun, dass ich das Modell für die Vorhersage verwenden möchte und dass der Standardfehler der Vorhersage mit der neuen Kovarianzmatrix clcov
berechnet werden muss. Das heißt, ich brauche
predict(output, se.fit = TRUE)
aber mit clcov
statt vcov(output)
. Etwas wie ein vcov() <-
wäre perfekt.
Natürlich könnte ich meine eigene Funktion schreiben, um Vorhersagen zu machen, aber ich frage mich nur, ob es eine praktischere Methode gibt, die mir Methoden zur Signatur lm
(wie arm :: sim) erlaubt.
Sie müssen ein bisschen mehr angeben. Worum geht es mit dieser Clusterfunktion? Warum sind die Standardfehler von lm() nicht gültig? Ich kann nicht wirklich folgen, was du versuchst zu tun. Es kann sehr gut sein, dass Sie ein verallgemeinertes Modell benötigen, zB glm, glmm oder gam/gamm. Bei Standardfehlern einfacher lm-Funktionen ist nur noch wenig zu tun, es sei denn, Sie verwenden sie in einem völlig anderen Kontext. Aber dann brauchen wir den Kontext ... –
@Joris Ich habe die Frage bearbeitet. Hoffe es ist jetzt klarer. Bitte beachten Sie, dass ich explizit ein 'Glmm'-Modell vermeide. – griverorz