Ich habe solche Modelle:
require(nlme)
set.seed(123)
n <- 100
k <- 5
cat <- as.factor(rep(1:k, n))
cat_i <- 1:k # intercept per kategorie
x <- rep(1:n, each = k)
sigma <- 0.2
alpha <- 0.001
y <- cat_i[cat] + alpha * x + rnorm(n*k, 0, sigma)
plot(x, y)
m1 <- lm(y ~ x)
summary(m1)
m2 <- lm(y ~ cat + x)
summary(m2)
m3 <- lme(y ~ x, random = ~ 1|cat, na.action = na.omit)
summary(m3)
Jetzt versuche ich zu beurteilen, ob der zufällige Effekt im Modell vorhanden sein sollte. Ich vergleiche die Modelle mit AIC oder Anova und erhalte folgende Fehlermeldung:
> AIC(m1, m2, m3)
df AIC
m1 3 1771.4696
m2 7 -209.1825
m3 4 -154.0245
Warning message:
In AIC.default(m1, m2, m3) :
models are not all fitted to the same number of observations
> anova(m2, m3)
Error in anova.lmlist(object, ...) :
models were not all fitted to the same size of dataset
Wie Sie sehen können, verwende ich in beiden Fällen denselben Datensatz. Ich habe zwei Mittel gefunden, aber ich halte sie nicht für befriedigend:
- Hinzufügen
method = "ML"
zum Aufruf von lme () - nicht sicher, ob es sinnvoll ist, die Methode zu ändern. - Verwenden Sie
lmer()
stattdessen. Überraschenderweise funktioniert dies, obwohl lmer () die REML-Methode verwendet. Diese Lösung gefällt mirlmer()
jedoch nicht, da die p-Werte für Koeffizienten nicht angezeigtlme()
werden. Stattdessen verwende ich gerne ältere .
Haben Sie eine Idee, ob dies ein Fehler ist oder nicht und wie können wir das umgehen?