【发布时间】:2014-11-12 15:42:59
【问题描述】:
作为 R 的相对初学者,我遇到了困难。我的目标是引导个体的变异系数并将其打印到一个新的数据框以进行进一步的计算和分析,例如,根据他们自己的数据变化为每个人创建 1000 个引导的 CV。这是我在遇到一个我无法解决的问题之前走了多远。我试图在网上找到解决方案,包括在此处搜索,但我无法找到或理解我已经找到了解决方案,即使它很可能在某个地方。如果是这样,请指出我的方向。
我有一个数据集,其中包含对几个人的重复观察,但他们的观察长度与下面的数据中看到的不同
Subject.id Moderate
1 943
1 1132
1 347
1 1100
1 1265
2 1297
2 888
2 1005
2 1211
2 1338
2 1238
2 916
2 541
2 613
2 692
2 1538
2 1071
3 670
3 864
3 1189
3 320
我正在尝试使用引导包引导个体变异系数。我的开机功能是这样的:
boot.f<-function(d, i){
d2 <- d[i,]
return(sqrt(var(d2$moderate))/mean(d2$moderate))
}
它运行得非常好,像这样:
boot1<-boot(df, boot.f, 1000)
但是,当我尝试像这样使用 strata 参数时:
boot1<-boot(df, boot.f, 1000, strata=subject.id)
我收到以下错误消息:
tapply(seq_len(n), as.numeric(strata)) 中的错误:参数必须 具有相同的长度另外:警告消息:在tapply(seq_len(n)中, as.numeric(strata)) : 强制引入的 NAs
所以我的问题是如何调整我的函数,以便我可以保留主题内的信息并最终获得类似于我使用 summaryBy 函数时的输出,除了一千次? summaryBy(moderate~subject_id, data=df, FUN=CV)
subject.id moderate.CV
1 2001 0.3831299
2 2002 0.4972260
3 2003 0.5095434
4 2004 0.2730478
5 2005 0.3645640
6 2006 0.3727822
7 2007 0.3858968
8 2008 0.5833114
9 2009 0.5896946
10 2013 0.4247119
11 2014 0.3016552
12 2015 0.4670444
13 2016 0.3995908
14 2018 0.3908963
15 2019 0.3660683
16 2020 0.3373719
17 2022 0.5020418
18 2023 0.3848056
19 2024 0.6410266
20 2025 0.7070671
21 2026 0.3925212
22 2028 0.1879174
23 2029 0.2912984
24 2030 0.3534441
25 2031 0.2238960
26 2032 0.7491192
27 2033 0.5775261
【问题讨论】: