如何在多个级别上执行 mann kendall 趋势测试
How to perform mann kendall trend test on multiple levels
我正在处理站点降水数据。每个站点都有60年的降水数据,共有30个站点。我想对每个站点进行 Mann Kendall 趋势测试,看看降水是否有显着趋势。
我已经尝试 group_by
和 summarise
来计算 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)
我正在处理站点降水数据。每个站点都有60年的降水数据,共有30个站点。我想对每个站点进行 Mann Kendall 趋势测试,看看降水是否有显着趋势。
我已经尝试 group_by
和 summarise
来计算 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)