蒙特卡洛检验R

问题描述

我有以下数据:

[链接到数据](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)

上面的脚本是错误的。

  1. 如何基于RLE过滤数据,以使阶段为阶段1? 在上面的代码中,此部分缺少某些内容:

    sum(RLE $ lengths == 1)

应该是这样的:

sum(RLE$lengths==1 & phase == 1)
  1. 更重要的是,我不确定这是否正确。我只想测试观察到的计数在第1阶段是否偶然发生。

关于如何在R中正确执行此操作的任何建议? 非常感谢您提供的任何帮助。

Lyndz

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...