如何在多个级别上执行 mann kendall 趋势测试

How to perform mann kendall trend test on multiple levels

我正在处理站点降水数据。每个站点都有60年的降水数据,共有30个站点。我想对每个站点进行 Mann Kendall 趋势测试,看看降水是否有显着趋势。

我已经尝试 group_bysummarise 来计算 60 年来每个站点的 Mann Kendall。

这是一个小例子,其中 ID 是气象站,prcp 是降水量。

ID<-c(1,1,1,1,1,2,2,2,2,2)
prcp<-c(2,0,1,4,5,0,2,3,5,6)
df<-cbind(ID,prcp)

mk<-df %>%
  as.data.frame() %>% 
  group_by(ID) %>%
  summarise(prcpmk=MannKendall(prcp))

每次我这样做都会收到以下错误:Column prcpmk must be length 1 (a summary value), not 5

部分问题是 MannKendall 函数 returns 5 个值。尝试使用 group_by 时如何仅指定 p 值?

我想要的是一个只有 p 值的 df:

  ID prcpmk
[1,]  1   0.20
[2,]  2   0.03

谢谢@A.Suliman,你是对的。

这似乎有效:

ID<-c(1,1,1,1,1,2,2,2,2,2)
prcp<-c(2,0,1,4,5,0,2,3,5,6)
df<-cbind(ID,prcp)

mk<-df %>%
  as.data.frame() %>% 
  group_by(ID) %>%
  summarise(prcpmk=MannKendall(prcp)$sl)

在 MannKendall() 指定 p 值后添加 $sl。或者,您可以指定 tau、Kendall 分数 (S)、S (varS)

方差的分母 (D)