【发布时间】:2012-12-15 00:38:04
【问题描述】:
我正在生成一个脚本,用于从 cats 数据集(来自 -MASS- 包)创建引导样本。
按照 Davidson 和 Hinkley 教科书 [1],我运行了一个简单的线性回归,并采用了一种基本的非参数程序来从 iid 观察中引导,即pairs resampling。
原始样本格式为:
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)
我有两个相关的问题:
如何根据(集群)数据集结构模拟样本?也就是说,如何在集群级别重新采样?我想对集群进行替换采样,并将每个选定集群内的观察值设置为原始数据集中(即用替换集群进行采样而没有替换每个集群内的观察值)。
这是 Davidson 提出的策略(第 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] Davidson, A. C., Hinkley, D. V. (1997)。 引导方法及其应用。剑桥大学出版社。
【问题讨论】:
-
你的意思是,没有用于创建集群变量的三行?你会如何改进这个问题?
-
感谢您的提示。我已经在那里写了一篇文章。但是,至少问题的第一部分纯粹基于 R..
-
再次感谢。我想从集群中替换采样的解决方案是“手动”编写代码(不使用
-boot-包)。不幸的是,我在 R 编码方面做得不够好…… -
请确认我理解正确。您的输入将是 c.data,您将其附加到一个随机生成的集群。您希望重新采样集群(即 1-24),同时跟踪原始数据集(即 c.data)中与每个集群关联的 6 个数据点。对吗?
标签: r hierarchical-clustering statistics-bootstrap