R语言 Cox-Stuart趋势检验

在客观世界中会遇到各种各样随时间变动的数据序列,我们关心这些数据随时间变化的规律(增长或者下降的趋势)。例如GDP是否逐年增长,某种疾病的患者是否在不断减少,这时我们就要对该序列进行趋势检验。

假设数据序列x1,x2,x3,……,xn独立,我们以某一常数c为界把该序列分成两部分,并将这两部分两两配对成(x1,xc+1),(x2,xc+2),……(xc,xn)的形式,其中当n为偶数时,c=n/2;当n为奇数时,c=(n+1)/2,中间的数xc+1舍去。接着我们以每一组中后一个数减去前一个数并记下正负性。用s+表示得到整数的个数,即后一个数大于后一个数,用p(+)表示取到正数的概率,用p(-)表示取到负数的概率,这样我们就得到符号检验方法来检验序列是否存在趋势性。

双侧检验H0:无趋势H1:有增长或减少趋势
左侧检验H0:无减少趋势H1:有减少趋势
右侧检验H0:无增加趋势H1:有增加趋势

R语言代码

# 处理成为符号数据
  cox_test <- function(dat = customers) {
    n <- length(dat)
    c <- (n - 1)/2
    d <- rep(0, c)
    if (c %% 2 == 0) {                        # dat长度为偶数
      for (i in 1:c) {d[i] <- dat[c + i] - dat[i]}
    } else {                                  # dat长度为奇数时要去掉中间数
      dat <- dat[-(c + 1)]
      for (i in 1:c) {d[i] <- dat[c + i] - dat[i]}
    }
    d <- d[d != 0]
    binom.test(sum(d > 0), length(d), alt = 'less')
  }
  customers <- c(5, 9, 12, 18, 17, 16, 19, 20, 4, 3, 18, 16, 17, 15)
  cox_test(dat = customers)
  


https://www.r-bloggers.com/trend-analysis-with-the-cox-stuart-test-in-r/


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxy_clover/article/details/79965726
个人分类: 非参数统计 r语言
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭