我有一个csv文件,其中包含有关来自不同学校的学生及其权重的详细信息
e.g。
School School code Weight Age Height
A 1 91 15 1.6
A 1 60 16 2.0
B 2 61 14 1.8
B 2 92 13 1.7
B 2 67 14 1.5
B 2 56 15 1.7
C 3 95 16 1.7
C 3 72 17 1.5
A 1 62 15 2.0
A 1 96 15 1.9
D 4 84 17 2.0
D 4 51 17 1.6
D 4 99 18 1.6
C 3 79 17 1.8
C 3 83 17 2.0
C 3 81 16 1.9
D 4 93 17 1.6
D 4 62 18 1.5
B 2 98 14 2.0
B 2 73 13 1.6
我想用替换重复采样n个权重,求和我的n个权重,然后计算得到的分布的第95个分位数。我想为200所学校中的每一所学校的学生做这件事,从1-25变化到最终得到以下结果:
n=1 2 3 4 … 25
School code =1
2
3
4 95th percentile of distrinution
5
…
200
我正在使用tapply()为所有200所学校找到n = 1的答案
tapply(weight,schoolcode,quantile,probs=0.95)
我正在使用replilcate(),sum()和sample()模拟1000个组合,将两个权重加在一起。
nstudents=replicate(1000, sum(sample(weight, size=n, replace=TRUE)
我无法将上述两者结合起来,以便在tapply函数中复制sum和sample。
请告知。
我是R的初学者。
答案 0 :(得分:2)
将它放在函数中,并将该函数与tapply()
一起使用,例如:
Myrepfun <- function(x,n){
nstudents <- replicate(1000,sum(sample(x, size=n,replace=TRUE)))
quantile(nstudents,probs=0.95)
}
tapply(weight,schoolcode,Myrepfun,n=2)
这为每个学校提供0.95分位数。如果您正在考虑自举,您可能需要检查:
http://www.statoo.com/en/publications/bootstrap_scgn_v131.pdf
http://www.statmethods.net/advstats/bootstrapping.html
了解其他可行的方法。