Inférence non valide lorsque les observations ne sont pas indépendantes

13

J'ai appris en statistique élémentaire qu'avec un modèle linéaire général, pour que les inférences soient valides, les observations doivent être indépendantes. Lorsque le regroupement se produit, l'indépendance peut ne plus tenir, ce qui conduit à une inférence non valide, sauf si cela est pris en compte. Une façon de prendre en compte un tel regroupement consiste à utiliser des modèles mixtes. J'aimerais trouver un exemple d'ensemble de données, simulé ou non, qui le démontre clairement. J'ai essayé d'utiliser l'un des exemples de jeux de données sur le site UCLA pour analyser les données en cluster

> require(foreign)
> require(lme4)
> dt <- read.dta("http://www.ats.ucla.edu/stat/stata/seminars/svy_stata_intro/srs.dta")

> m1 <- lm(api00~growth+emer+yr_rnd, data=dt)
> summary(m1)

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 740.3981    11.5522  64.092   <2e-16 ***
growth       -0.1027     0.2112  -0.486   0.6271    
emer         -5.4449     0.5395 -10.092   <2e-16 ***
yr_rnd      -51.0757    19.9136  -2.565   0.0108 * 


> m2 <- lmer(api00~growth+emer+yr_rnd+(1|dnum), data=dt)
> summary(m2)

Fixed effects:
             Estimate Std. Error t value
(Intercept) 748.21841   12.00168   62.34
growth       -0.09791    0.20285   -0.48
emer         -5.64135    0.56470   -9.99
yr_rnd      -39.62702   18.53256   -2.14

À moins que je manque quelque chose, ces résultats sont suffisamment similaires pour que je ne pense pas que la sortie de lm()n'est pas valide. J'ai examiné quelques autres exemples (par exemple 5.2 du Bristol University Center for Multilevel Modeling ) et j'ai constaté que les erreurs standard ne sont pas non plus très différentes (je ne suis pas intéressé par les effets aléatoires eux-mêmes du modèle mixte, mais il convient de noter que l'ICC de la sortie du modèle mixte est de 0,42).

Donc, mes questions sont 1) dans quelles conditions les erreurs standard seront-elles nettement différentes lors du clustering, et 2) quelqu'un peut-il fournir un exemple d'un tel ensemble de données (simulé ou non).

Joe King
la source
Pouvez-vous développer ce que vous entendez par clustering?
bayerj
@bayerj par regroupement, je veux dire lorsque des observations qui sont similaires les unes aux autres sont regroupées au sein d'une sorte d'unité, par exemple 10 mesures de la pression artérielle prises sur 50 individus.
Joe King

Réponses:

11

Tout d'abord, vous avez raison, ce jeu de données n'est peut-être pas le meilleur pour comprendre le modèle mixte. Mais regardons d'abord pourquoi

require(foreign)
dt <- read.dta("http://www.ats.ucla.edu/stat/stata/seminars/svy_stata_intro/srs.dta")

length(dt$dnum)          # 310
length(unique(dt$dnum))  # 187 
sum(table(dt$dnum)==1)   # 132

Vous voyez que vous avez 310 observations et 187 groupes, dont 132 n'ont qu'une seule observation. Cela ne signifie pas que nous ne devrions pas utiliser la modélisation à plusieurs niveaux, mais simplement que nous n'obtiendrons pas de résultats très différents comme vous l'avez dit.

Motivation de la modélisation à plusieurs niveaux

La motivation à utiliser la modélisation à plusieurs niveaux commence par la conception elle-même, et pas seulement par les résultats de l'analyse entreprise. Bien sûr, l'exemple le plus courant est de prendre plusieurs observations de personnes, mais pour rendre les choses plus extrêmes pour donner une situation plus facile à comprendre, pensez à demander à des personnes de différents pays du monde au sujet de leurs revenus. Les meilleurs exemples sont donc ceux qui ont beaucoup d'hétérogénéité, car la prise de clusters qui sont homogènes dans le résultat de l'examen ne fera bien sûr pas beaucoup de différence.

Exemple

dix100yx0,5

set.seed(1)
I <- 100
J <- 10
n <- I*J
i <- rep(1:I, each=J)
j <- rep(1:J,I)
x <- rnorm(n,mean=0, sd=1)
beta0  <- 1000
beta1  <- 0.5
sigma2 <- 1
tau2   <- 200
u <- rep(rnorm(I,mean=0,sd=sqrt(tau2)),each=J)
y <- beta0 + beta1*x + u + rnorm(n,mean=0, sd=sqrt(sigma2))

Donc, en exécutant un modèle linéaire, vous obtenez

> summary(lm(y~x))

Coefficients:
            Estimate Std. Error  t value Pr(>|t|)    
(Intercept) 999.8255     0.4609 2169.230   <2e-16 ***
x             0.5728     0.4456    1.286    0.199    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Residual standard error: 14.57 on 998 degrees of freedom
Multiple R-squared:  0.001653,  Adjusted R-squared:  0.0006528 
F-statistic: 1.653 on 1 and 998 DF,  p-value: 0.1989

et vous concluez que cela xn'a aucun effet statistique en y. Voyez quelle est la taille de l'erreur standard. Mais exécuter un modèle d'interception aléatoire

> summary(lmer(y~x + (1|i)))

Random effects:
 Groups   Name        Variance Std.Dev.
 i        (Intercept) 213.062  14.597  
 Residual               1.066   1.032  
Number of obs: 1000, groups:  i, 100

Fixed effects:
            Estimate Std. Error t value
(Intercept) 999.8247     1.4600   684.8
x             0.4997     0.0327    15.3

vous voyez à quel point l'erreur-type de l'estimation a changé. En regardant la partie effet aléatoire, nous voyons comment la variabilité a été décomposée - la plupart de la variabilité du revenu est entre les pays, et au sein des pays, les gens ont des revenus plus similaires. En termes simples, ce qui s'est passé ici, c'est que xsi l'on ne tient pas compte du regroupement, l'effet de «se perd» (si nous pouvons utiliser ce type de terme), mais en décomposant la variabilité, vous trouvez ce que vous devriez réellement obtenir.

Steve
la source
+1 Merci, c'est super. Bien que je sois sûr de me rappeler avoir lu à plusieurs reprises que les SE sont généralement plus petits lorsqu'ils ne tiennent pas compte du clustering, je suis donc quelque peu confus - quels sont les scénarios où le modèle linéaire retournerait une SE beaucoup trop petite?
Joe King
@JoeKing, cela est vrai pour les SE robustes en cluster, pas pour la modélisation à plusieurs niveaux. Vous pouvez également le voir sur la page ats.ucla où vous avez pris les données.
Steve
@JoeKing pour comprendre complètement la différence look stats.stackexchange.com/questions/8291/…
Steve