序列的趋势存在性检验:Cox-Stuart test和Mann-Kendall test

我们经常听这样的描述,数据呈上升/下降/无明显趋势,这个结论往往是靠人眼观察出来的,不够严谨。我们需要更科学的方法,下面就借助非参里的符号检验,来谈谈检验趋势存在性的两种常用方法。

  1. Cox-Stuart趋势检验
  • 原理
    对于数据序列x1,x2,x3,……,xn,我们以位置中间数c为界把该序列分成两部分,并两两配对成(x1,xc+1),(x2,xc+2),……(xc,xn)的形式。接着我们以每一组中后一个数减去前一个数并记下正负性,s+表示得到正数的个数,s-表示得到负数的个数。如果s+远远大于s-,则我们认为序列存在上升趋势,反之序列存在下降趋势,如果s+与s-很接近,那就无明显趋势,这里度量s+和s-有无明显差异性靠的是binom.test()。

  • 实现
    R语言里没有现成的函数,需要自己编写,这里给出一种作为参考。案例结果表明,置信水平为0.05时,测试序列customers呈下降趋势,但趋势并不显著(P值0.1094)

cox.stuart.test =
function (x)
{
   
  method = "Cox-Stuart test for trend analysis"
  leng = length(x)
  apross = round(leng) %% 2
  if (apross == 1) {
   
    delete = (length(x)+1)/2
    x = x[ -delete ] 
  }
  half = length(x)/
  • 3
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
哦,原来您想了解使用R语言进行Cox-Stuart趋势检验的方法。确实,R语言是常流行的统计软件,也具备许多强大的时间序列分析工具,可以方便地进行趋势分析。下面是基于R语言中的trends包执行Cox-Stuart趋势检验的一个简单示例: 首先,我们需要安装trends包,可在R中使用以下命令安装: install.packages("trends") 然后,在R中加载已安装的包: library(trends) 接着,我们需要准备好数据进行趋势分析。例如,假设我们有以下时间序列数据: data <- c(10.6, 10.9, 10.8, 11.2, 11.6, 11.8, 12.1, 12.7, 12.8, 13.1, 12.9, 13.3) 接下来,我们可以调用trend.test函数执行Cox-Stuart趋势检验: trend.test(data, alternative="two.sided", alpha=0.05) 其中,alternative指定假设检验的方向,这里设置为双侧检验;alpha指定显著水平,这里设置为0.05。 执行完上述代码后,我们可以得到Cox-Stuart趋势检验的结果。如果结果的P值小于0.05,则说明我们有足够的证据拒绝原假设,即存在趋势;反之,如果结果的P值大于等于0.05,则说明我们无法拒绝原假设,即不存在趋势。具体结果输出如下: Cox-Stuart trend test data: data Z = 1.2928, p-value = 0.1967 alternative hypothesis: true trend is not equal to 0 sample estimates: rho 0.46362 在本例中,结果的P值为0.1967,大于0.05,因此我们无法拒绝原假设,即数据中没有趋势。 希望这个示例对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值