楼主: joy0519
1908 0

[程序分享] RUN-test [推广有奖]

  • 3关注
  • 1粉丝

副教授

16%

还不是VIP/贵宾

-

威望
0
论坛币
1740 个
通用积分
98.4184
学术水平
4 点
热心指数
3 点
信用等级
0 点
经验
219 点
帖子
292
精华
0
在线时间
503 小时
注册时间
2015-9-26
最后登录
2024-3-29

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
例子1:(数据run01.txt)假定我们投掷一个硬币,以概率p得到正面(记为1),以概率1-p得到反面(记为0);这是一个Bernoulli试验。如果这个试验是随机的,则不大可能出现许多1或0连在一起,也不可能1和0交替出现的太频繁。例如,下面为一例这样的结果:
000000011111110000111100
如果称连在一起的0或1为游程(run),则上面这组数有3个0游程,两个1游程,一共是5个游程(R=5)。这里0的总数为m=13,而1的总数为n=10。记总的试验次数为N,有N=m+n。假定在R软件中,x代表上面的数据;则游程总数可由下面语句求出:
> x<-read.table("F:\\潘\\R语言自编讲义\\非参数统计-基于王静龙的教材\\run01.txt")
> x<-x[,1]
> N<-length(x)
> k<-1
> for(i in 1:(N-1))
+ if(x!=x[i+1])
+ k<-k+1
> k
[1] 5

而0的个数m=13,1的个数n=10可以这样求出:
> m<-sum(1-x)
> n<-sum(x)
> c(m,n)
[1] 13 10

当然,出现多少0和1,出现多少游程都与概率p有关。

这里,p-值的求法,我用bootstrap的方法,模拟10000次,程序如下:
> #bootstrap 10000 times
> set.seed(123)
> R<-numeric()
> for(i in 1:10000){
+ xx<-sample(x,replace=F)
+ N<-length(xx)
+ k<-1
+ for(j in 1:(N-1))
+   { if(xx[j]!=xx[j+1])
+     k<-k+1 }
+ R<-k
+ }
> #p-value,5 is the obserivabled run number
> p1<-sum(R>5)/10000
> p2<-sum(R<5)/10000
> c(p1,p2)
[1] 0.9990 0.0002
结果为 p值是0.0002,这个结果说明本例的游程数为5,是非常小的。因此,我们显著的拒绝数据是随机性的原假设,而认为数据是非随机的。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:test Est Run Bootstrap Bernoulli

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 15:47