个人作业展示(四)——2015年秋季第6....pdf
非参第六次作业 王可 2013201985 第一部分:三种检验的 R 函数设计 【随机游程检验】 1、流程图 (1)端点值判断法: (2)p 值判断法: 2、R 函数 说明: 由于 p 值判断更为方便,所以只设计了用 p 值判断的随机游程检验的函数,代 码如下: runtest_p<-function(c){ if(!is.factor(c)) stop("c is not a factor") if(any(is.na(c))) stop("There are missing values") if(length(levels(c))!=2) stop("More than two levels here") count<-as.data.frame(summary(factor(c))) n0=count[1,1] n1=count[2,1] n=length(c) R=1+sum(as.numeric(c[-1]!=c[-n])) densityfun<-function(x,n1,n0,n){ if(x%%2==0) {y=2*choose(n1-1,x-1)*choose(n0-1,x-1)/choose(n,n1)} else {y=(choose(n1-1,x-1)*choose(n0-1,x)+choose(n1-1,x)*choose(n 0-1,x-1))/choose(n,n1)} return(y) } for(i in 1:(n0+n1)){ sum=0 sum=sum+i*densityfun(i,n1,n0,n) } mean=sum/n F=0 for(i in round(mean-abs(mean-R)):round(mean+abs(mean-R))){ F=F+densityfun(i,n1,n0,n) } p=1-F structure(list(N0=n0,N1=n1,R=R,p.Value=p,hypothesis="Two sided test")) } 【符号检验】 1、流程图 2、R 函数 说明:由于很多种类的问题(而不是固定的某一种形式)都可以进行符号检验, 而且在进行符号检验的时候公共的步骤是用到二项分布,所以这里设计的 R 函 数主要针对的是后期用二项分布计算的部分。 signtest<-function(S,n,p){ F=0 for(i in 0:S){ F=F+choose(n,i)*p^i*(1-p)^(n-i) } if(F>0.5){ p1=1 p2=0.5 } else{ p1=2*F p2=F } structure(list("Two sided p.value"=p1,"One sided p.value"=p2)) } 【Wilcoxon 符号秩检验】 1、流程图 2、R 函数 wiltest<-function(c,m0){ n=length(c) c1=vector(length = n) c2=c-m0 for(i in 1:n){ c1[i]=abs(c[i]-m0) } cr=rank(c) W1=0 W2=0 for(i in 1:n){ if(c2[i]>0)W1=W1+cr[i] if(c2[i]<0)W2=W2+cr[i] } if(W1 wiltest(customer,10) $samplesize [1] 12 $p.value [1] 0.1513672 ·利用 R 包里的函数 wilcox.test,得到的结果如下: > wilcox.test(customer0) Wilcoxon signed rank test with continuity correction data: customer0 V = 53, p-‐value = 0.2892 alternative hypothesis: true location is not equal to 0 二者有一定差距,说明用近似的正态分布算得的 p 值要略大于精确分布算得 的 p 值。 p 值大于 0.05,说明无法拒绝“总体中位数为 10”的原假设。对于本题而 言得到的结论与之前的符号检验一致,但是发现一个问题,就是后者的 p 值 小于前者的 p 值,也就是利用后者的结果进行拒绝原假设的不如前者有把 握,这让我们对总体有了进一步的认识——总体的对称中心为 10 的可能 性并不是很大。 2.2 此题关注点是男女出现的概率是否均为 0.5,只关心男、女“出现”这一事 件是否发生,而不关注出现的顺序和规律等具体的细节,正符合符号检验的原理, 因此选用符号检验。 ·不妨令男的出现对应于符号检验中的“+”,女的出现对应于“-‐”,那么男、女 的数量对应于符号检验中“+”“-‐”各自的数量。由题目可知,有 150 个正号、 200 个负号,总数为 350. ·首先用编好的 signtest 函数计算,结果如下: > signtest(150,350,0.5) $`Two sided p.value` [1] 0.008720037 $`One sided p.value` [1] 0.004360018 ·我们选用双侧检验得到的 p 值,为 0.009,小于 0.05.下面是 binom.test 的结 果: > binom.test(150,350,0.5) Exact binomial test data: 150 and 350 number of successes = 150, number of trials = 350, p-‐value = 0.00872 alternative hypothesis: true probability of success is not equal to 0.5 95 percent confidence interval: 0.3760959 0.4822657 sample estimates: probability of success 0.4285714 双边检验 p 值为 0.009,与上相同。 p 值小于显著性水平 0.05,拒绝原假设。对于此题得到的判断是:男女比例 不是各为 0.5. 2.3 由于题目要求分析是否存在上升趋势,是一个存在性的问题,而不要求对趋 势进行精准的刻画,所以选用 Cox-‐Staut 方法进行检验。原假设为“无上升趋势”, 备择假设为“有上升趋势” ·样本容量为 15,所以取间隔长度为 8,得到 7 个数对,对应 7 个符号,7 负 0 正,进行符号检验。利用编好的符号检验函数得到结果如下: > signtest(0,7,0.5) $`Two sided p.value` [1] 0.015625 $`One sided p.value` [1] 0.0078125 ·由于进行单尾检验,所以 p 值为 0.0078,小于 0.05,拒绝原假设。 ·利用 binom.test 函数得到的结果为: > binom.test(0,7,0.5) Exact binomial test data: 0 and 7 number of successes = 0, number of trials = 7, p-‐value = 0.01563 alternative hypothesis: true probability of success is not equal to 0.5 95 percent confidence interval: 0.0000000 0.4096164 sample estimates: probability of success 0 由于 binom.test 函数进行的是双尾的检验,所以 p 值应该除以二,与之前 的结果一致。 p 值小于 0.05,拒绝原假设,即拒绝“该城市死亡率没有增加趋势”的说法。 但是我们仍不能断定该城市的死亡率就是有逐年增加的趋势,因为样本量 太少,最后参与检验的只有 7 个数对,由于抽样误差的存在,我们仍需要 进一步充实样本,才能够进一步接近实际情况。 2.4 (1) 比较两次比赛是否有差异,也就是看某球队在两次比赛中的得分概率是否不 同。可以对两次比赛结果做差,进行符号检验。原假设为无差异,即差正、差负 的概率均为 0.5. ·统计数据,7 正 3 负。 ·利用编好的函数 signtest 进行检验,结果如下: > signtest(3,10,0.5) $`Two sided p.value` [1] 0.34375 $`One sided p.value` [1] 0.171875 ·取双侧检验 p 值 0.34,大于 0.05,所以不拒绝原假设。由于之前的几道题目 已经反映了该函数与 binom.test 函数结果一致,所以不再进行 bino.test 的检验。 不拒绝“两次比赛成绩无差异”的假设。 (2) Wilcoxon 符号秩检验是为了探索总体的对称中心,那么在这道题的情境中, 根据 Wilcoxon 符号秩检验的原理,不妨将其中一次比赛的成绩全部取负值,这 样在新的数据中,原假设“两次比赛成绩无差异”等价于原假设“总体对称中心 为 0”。 ·对第二次比赛的成绩全部取负值,然后与第一次比赛的成绩一起输入到一个向 量中,取对称中心为 0。利用编好的函数进行检验,结果如下: > wiltest(race,0) $samplesize [1] 20 $p.value [1] 0.05825806 ·把数据带入到函数 wilcox.test 中,得到的结果是: Wilcoxon signed rank test with continuity correction data: race V = 132, p-‐value = 0.3224 alternative hypothesis: true location is not equal to 0 1、前者的 p 值为 0.058,后者的 p 值为 0.322,均高于显著性水平 0.05,故得 到的结论是一致的,均为“不拒绝原假设”。然而二者的数值有一定差距,说明 在数据量没有足够大的时候,正态分布与精确分布有一定的差距。在前者得到的 结果下,我们拒绝原假设的把握并不是很大,因为 0.058 只是略微高于 0.05,而 后者的结果就可以很有把握地拒绝原假设。这说明如果样本数据有略微的变 动,通过近似正态进行的检验很可能让我们不拒绝本该拒绝的原假设,做 出错误的判断,所以在使用近似的时候要很慎重。 2、 (2)与(1)题中的符号检验的结论是一致的。 (3) 使用 Wilcoxon 检验会更好,理由如下: 符号检验只关心一组数对中孰大孰小,不关心偏差的大小,在符号检验里, 数对(1,2)与数对(1,100)有着一样的解读,即“前者小于后者”,然而在 这道题里,我们除了关心一组数据的大小关系,也关心一组数据大小偏差的程度, 而这部分信息在 Wilcoxon 检验里得到了关注。即,符号检验只提取了少量的信 息,而 Wilcoxon 提取了更多的信息,更有助于我们认识总体特征。 2.5 本题关注点是一组数据中,0 或 1 的出现是否是随机的,也就是 0 或 1 出现 的概率是否各为 0.5,所以选择随机游程检验方法进行判断。 ·将数据输入一个向量中,转化成因子的形式,然后利用编好的函数 runtest_p 得到结果为: $N0 [1] 42 $N1 [1] 34 $R [1] 37 $p.Value [1] 0.5 $hypothesis [1] "Two sided test" ·p 值为 0.5.利用 tseries 包中的 runs.test 函数得到的结果如下: > library(tseries) > runs.test(a0) Runs Test data: a0 Standard Normal = -‐0.3688, p-‐value = 0.7123 alternative hypothesis: two.sided p 值为 0.71. 1、p 值大于 0.05,说明不拒绝原假设“该信号是纯粹随机干扰” 。 2、在用精确分布和正态分布近似的两种检验中,前者 p 值小于后者 p 值,说明 在样本容量不够大的时候用正态分布去近似精确分布会得到有一定偏差的结果, 倾向于“不拒绝原假设” 。 2.6 与上一题相同的是本题关注的仍然是数据的出现是否随机,也就是是否与时 间(也可以说是出现的位置)独立,所以仍采用随机游程检验。 ·此题关注的是每一个数据与平均数 500 的相对大小,不关注具体数据。首先 需要把数据转换成“0/1”的形式,不妨让 0 表示“小于 500”,1 表示“大于 500” ;然后再将新的数据代入函数,在 runtest_p 函数下,结果为: > runtest_p(factor(bottle)) $N0 [1] 6 $N1 [1] 14 $R [1] 5 $p.Value [1] 0.570227 $hypothesis [1] "Two sided test" ·p 值为 0.57。再利用 tseries 包中的 runs.test 函数得到的结果如下: > runs.test(factor(bottle)) Runs Test data: factor(bottle) Standard Normal = -‐2.4326, p-‐value = 0.01499 alternative hypothesis: two.sided p 值为 0.015. 在此题中,利用精确分布和正态分布得到了差别很大的结果,前者的结果是 不拒绝原假设,而后者的结果是拒绝原假设。原因可能是样本量不够大,用近似 的算法会产生较大的偏差,所以针对这道题选用精确分布,得出的结论是“不拒 绝原假设” ,即“不拒绝这台机器装多装少随机的这种说法”。