观察不独立时的无效推断

机器算法验证 r 混合模式 推理 独立
2022-03-08 07:55:40

我在基本统计中了解到,对于一般线性模型,要使推论有效,观察必须是独立的。当发生聚类时,除非考虑到这一点,否则独立性可能不再会导致无效推理。解释这种聚类的一种方法是使用混合模型。我想找到一个示例数据集,无论是否模拟,都可以清楚地证明这一点。我尝试使用UCLA 站点上的示例数据集之一来分析聚类数据

> 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

除非我遗漏了什么,否则这些结果非常相似,我不会认为输出lm()无效。我查看了其他一些示例(例如,布里斯托大学多级建模中心的 5.2),发现标准误差也没有太大的不同(我对混合模型中的随机效应本身不感兴趣,但值得注意的是混合模型输出的 ICC 为 0.42)。

所以,我的问题是 1)在什么条件下发生聚类时标准误差会显着不同,2)有人可以提供这样一个数据集的例子(模拟与否)。

1个回答

首先,你是对的,这个数据集可能不是最好的理解混合模型。但让我们先看看为什么

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

您会看到您有 310 个观察值和 187 个组,其中 132 个只有一个观察值。这并不意味着我们不应该使用多层次建模,只是我们不会像你所说的那样得到非常不同的结果。

多层次建模动机

使用多层次建模的动机从设计本身开始,而不仅仅是从进行的分析的结果开始。当然,最常见的例子是从个人那里进行多次观察,但为了让事情变得更极端以便更容易理解情况,可以考虑向来自世界各地不同国家的个人询问他们的收入。所以最好的例子是那些具有很多异质性的例子,因为在检查结果中采用同质的集群当然不会有太大的区别。

例子

因此,让我们模拟一些数据以使事情更清晰,模拟效果更好,因为现实生活中的数据并不那么明显。想象你拿10国家,你问100每个国家的个人关于他们的收入y和其他对收入x有积极影响的因素0.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))

所以,运行你得到的线性模型

> 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

并且您得出结论 在x中没有统计效应y看看标准误差有多大。但是运行一个随机截距模型

> 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

您会看到估计的标准误差发生了多大变化。从随机效应部分来看,我们看到了变异性是如何分解的——收入的大部分变异性发生在国家之间,而在国家内部,人们的收入更加相似。简而言之,这里发生的事情是,不考虑聚类的影响x是“迷路”(如果我们可以使用这种术语),而是分解可变性,你会发现你应该得到的东西。