我正在生成一个脚本,用于从cats
数据集(来自-MASS-
包)创建引导样本。
按照戴维森和欣克利的教科书 [1],我运行了一个简单的线性回归,并采用了一种基本的非参数程序来从独立同分布观察中引导,即对重采样。
原始样本的形式为:
Bwt Hwt
2.0 7.0
2.1 7.2
...
1.9 6.8
通过一个单变量线性模型,我们想通过他们的大脑重量来解释猫的壁炉重量。
代码是:
library(MASS)
library(boot)
##################
# CATS MODEL #
##################
cats.lm <- glm(Hwt ~ Bwt, data=cats)
cats.diag <- glm.diag.plots(cats.lm, ret=T)
#######################
# CASE resampling #
#######################
cats.fit <- function(data) coef(glm(data$Hwt ~ data$Bwt))
statistic.coef <- function(data, i) cats.fit(data[i,])
bootl <- boot(data=cats, statistic=statistic.coef, R=999)
现在假设存在一个聚类变量cluster = 1, 2,..., 24
(例如,每只猫都属于给定的垃圾)。为简单起见,假设数据是平衡的:每个集群有 6 个观察值。因此,24 窝中的每一窝都由 6 只猫(即n_cluster = 6
和n = 144
)组成。
可以通过以下方式创建假cluster
变量:
q <- rep(1:24, times=6)
cluster <- sample(q)
c.data <- cbind(cats, cluster)
我有两个相关的问题:
如何根据(集群)数据集结构模拟样本?即如何在集群级别进行重采样?我想对具有替换的集群进行采样,并将每个选定集群中的观察设置为原始数据集中的观察值(即在替换集群的情况下进行采样,而不是替换每个集群中的观察)。
这是戴维森(第 100 页)提出的策略。假设我们抽取B = 100
样本。它们中的每一个都应该由 24 个可能经常出现的集群(例如cluster = 3, 3, 1, 4, 12, 11, 12, 5, 6, 8, 17, 19, 10, 9, 7, 7, 16, 18, 24, 23, 11, 15, 20, 1
)组成,并且每个集群应该包含与原始数据集相同的 6 个观察值。如何做到这一点R
?(有或没有-boot-
包裹。)你有其他建议吗?
第二个问题涉及初始回归模型。假设我采用固定效应模型,具有集群级截距。它是否改变了采用的重采样程序?
[1] 戴维森,AC,欣克利,DV(1997 年)。引导方法及其应用。剑桥大学出版社。