问题描述
我有以下数据:
[链接到数据](https://www.dropbox.com/s/29zgm8nm39qyh7m/data_rainfall.csv?dl=0)
抱歉,但这是我可以为此提供的最小数据。 此数据集中有四列(年,月,日,阶段和降雨)。
我想以这种方式执行蒙特卡洛测试:
(1)至少连续3天降雨少于5毫米/天,该阶段为阶段1。
(2)在降雨列保持不变的情况下置换降雨列。
(3)获得1000次重复后计数大于观察到的计数的概率。
到目前为止,我有以下脚本:
dat2<-dat[,c("phase","Rainfall")]
countruns = function(x){
RLE = rle(x$Rainfall<5)
sum(RLE$lengths==1)
}
sim.test <- function (x){
x$Rainfall <- sample(x$Rainfall)
countruns(x)
}
runs <- 1000
pval<-(sum(sim>=countruns(dat2))+1)/(runs+1)
上面的脚本是错误的。
-
如何基于RLE过滤数据,以使阶段为阶段1? 在上面的代码中,此部分缺少某些内容:
sum(RLE $ lengths == 1)
应该是这样的:
sum(RLE$lengths==1 & phase == 1)
- 更重要的是,我不确定这是否正确。我只想测试观察到的计数在第1阶段是否偶然发生。
关于如何在R中正确执行此操作的任何建议? 非常感谢您提供的任何帮助。
Lyndz
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)