SPP Zone3 CPNN Month Year
1 ALW Upper 15 May 2016
2 ALW Upper 9 May 2016
3 ALW Lower 57 May 2017
4 ALW Middle 32 June 2016
...
98 ALW Lower 29 June 2017
99 ALW Lower 41 July 2016
100 ALW Middle 19 July 2017
使用“月*年”组合按以下格式对收集的数据进行分组以进行分析:
simdat<- dcast(df, Year+Month~"count", value.var="CPNN", sum)
simdat$id<- c(1:nrow(simdat))
df<- merge(df,simdat[,-4], by=c('Year','Month'))
df<- df[order(df$id),]
变量“ CPNN”的重采样从两个样本大小开始,创建2000次迭代,并且如果RSE <= 25在> = 80%的样本上,则过程结束。但是,如果未实现,则将进行下一次迭代,直到完成该过程或最多出现150个样本为止。此部分分析的代码如下:
nreps_all<-2000
sim<- function(id_indx)
{ # FUNCTION TO GET 80% OF SAMPLES WITH AN RSE25
nreps=nreps_all
#print(id_indx)
X<- data.frame()
for(n in 2:150)
{
yy<- matrix(sample(df[df$id==id_indx,]$CPNN,n*nreps,replace=TRUE),nrow=n,
ncol=nreps)
vals<- sapply(c(1:nreps),function(x) ifelse(sum(yy[,x])==0, 1,
sd(yy[,x])/sqrt(n)/mean(yy[,x])))
vals<- mean(ifelse(vals<=0.25, 1,0))
X<- rbind(X,c(n,vals))
if(vals>=0.8) break
}
return(max(X[,1]))
}
##Run
(rse25<- sapply(simdat$id, sim))
我想知道是否有任何可能的方法(使用提供的代码)对样本进行分层,以便从“ Zone3”类别中按相等的比例选择样本。考虑到迭代过程选择的样本大小不是3的倍数,这会增加复杂性。理想情况下,这将随机发生而不进行替换,直到所有3个区域都被表示出来,然后重复进行,直到满足RSE <= 25。在上面的代码中创建“ yy”变量时,是否可以内置该变量?感谢您的帮助!