1、非参数统计(R 软件)参考答案内容:A.3, A.10, A.12A.3上机实践:将 MASS 数据包用命令 library(MASS) 加载到 R 中,调用自带“老忠实”喷泉数据集 geyer, 它有两个变量:等待时间 waiting 和喷涌时间 duration, 其中(1) 将等待时间 70min 以下的数据挑选出来;(2) 将等待时间 70min 以下,且等待时间不等于 57min 的数据挑选出来;(3) 将等待时间 70min 以下喷泉的喷涌时间挑选出来;(4) 将喷涌时间大于 70min 喷泉的等待时间挑选出来。解:读取数据的 R 命令:library(MASS);#加载 MASS
2、 包data(geyser);#加载数据集 geyserattach(geyser);#将数据集 geyser 的变量置为内存变量(1) 依题意编定 R 程序如下:sub1geyser=geyserwhich(waiting70),1;#提取满足条件(waiting70)的数据,which(),读取下标sub1geyser1:5;#显示子数据集 sub1geyser 的前 5 行1 57 60 56 50 54(2) 依 题 意 编 定 R 程 序 如 下 : Sub2geyser=geyserwhich(waiting70)&(waiting!=57), 1;#提取满足条件(waiting7
3、0& (waiting!=57)的数据. Sub2geyser1:5;#显示子数据集 sub1geyser 的前 5 行1 60 56 50 54 60 原数据集的第 1列为 waiting喷涌时间, 所以用which(waiting70),2 (3)Sub3geyser=geyserwhich(waiting70),2;#提取满足条件(waiting70)的数据,which(),读取下标Sub3geyser1:5;#显示子数据集 sub1geyser 的前 5 行1 4.000000 4.383333 4.833333 5.450000 4.866667原 数 据 集 的 第2列 为 喷 涌
4、 时 间 , 所 以 用which(waiting70),1;#提取满足条件(waiting70)的数据,which(),读取下标Sub4geyser1:5;#显示子数据集 sub1geyser 的前 5 行1 80 71 80 75 77.A.10如光盘文件 student.txt 中的数据,一个班有 30 名学生, 每名学生有 5 门课程的成绩,编写函数实现下述要求:(1) 以 data.frame 的格式保存上述数据;(2) 计算每个学生各科平均分,并将该数据加入 (1)数据集的最后一列;(3) 找出各科平均分的最高分所对应的学生和他所修课 程的成绩;(4) 找出至少两门课程不及格的学生
5、,输出他们的全部成 绩和平均成绩;(5) 比较具有(4)特点学生的各科平均分与其余学生平均分之间是否存在差异。先将数据集读入 R 系统student=read.table(,header=T) class(student):#显示数据集 student 的类型,1 data.frame#student 是数据框names(student);#显示数据框 student 的变量1namemathphysicschem literat english mean#输出显示,数据框 student 有 7 个变量,第 7 个变量是平均值 mean。(1)write.table(student,F:gz
6、mu 非参数统计data2014各章数据附录 Ax.txt,col.names=T)打开 x.txtname math physics chem literat english 1 Katty 65 61 72 84 792 Leo 77 77 76 64 55(2) 依题意, 要为原始数据集添加一个变量, 即添加一列在最后。?,6=?me=rep(0,30);for(i in 1:30)x=as.numeric(studenti,2:6); mei=mean(x);student$mean=me;上面程序的最后一行也可以如此:st udent,7=me names(student);lnam
7、emathphysicschem literat english mean如上显示, 程序运行后数据框 student添加了第 7 列mean.(3) 依 题 意 , 在 (2) 的 程 序 运 行 后 做 , 要 用 到which(mea n=max(mea n)), 如同 A.3。 attach(student);maxme=st udent which(m ean= max(mea n)),;找出最高平均分的记录, 并赋予 maxme;maxme;name math physics chem literat english mean 15 Liggle7896818076 82.2(4)
8、 依题意,要用到二重的 for 和 if. 由原数据框 geyser 给 data1 赋 值 时 要 用 到 数 据 转 换 : #x=as.numeric(studenti,2:6);#读取 student 第 i 行 2:6 列的数据,#data1k,=x;#将 x 赋给 data4#的第 k 行。sum(x60)是不及格门数。Data1=student1,;#赋初值k=0;for(i in 1:30)x=as.numeric(studenti,2:6);if (sum(x1)k=k+1;data1k,=studenti,; data1name math physics chem lite
9、rat english mean1Ricky6763496557 60.27Simon6671675257 62.69Jed83100794150 70.610Jack8694975155 76.612Jetty6784535856 63.613Corner8162695652 64.014Osten7164945252 66.625Amon7479955959 73.2(5) 依题意,要创造两个子集 data4 和 data2, 用两样本的比较方法比较他们的平均成绩是否有显著差异。类似创 造 data1 的 方 法 , 创 造 data2 。 并 设x=data1$mean,y=data2$
10、mean,比较二样本 x,y 是否有显著差异,由于还没有学非参数检验,试用 t 检验检验之(R的 t 检验函数为 t.test(x,y),原假设 H0 是两样本的均值相等,备择假设 H1 是两样本不等)。如果 P 值 p-value0.05, 则拒绝原假设。data2=student1,;k=0;for(i in 1:30)x=as.numeric(studenti,2:6);if (sum(x60)2)k=k+1;data2k,=studenti,;下面做 t 检验x=data1$mean;y=data2$mean; t.test(x,y)Welch Two Sample t-test da
11、ta:x and yt = -3.0236, df = 9.309, p-value = 0.01386alternative hypothesis: true difference in means is not equal to 095 percent confidence interval:-11.493236-1.684037 sampleestimates:meanofxmeanofy: 67.17500 73.76364结论:p-value = 0.013860.05,拒绝原假设,即认为两样本的平均成绩有显著差异。A.12在一张图上,用取值( -10,10)之间间隔均等的1000个
12、 点 , 采 用 不 同 的 线 型 一 颜 色 给 制sin(),cos(),sin()+cos()的函数图形,图形要求有主标题和 副标题,标示出从坐标x=seq(-10,10,length=50);#构造向量 x, x1:5;#显示 x 的前 5 个数据1 -10.00000-9.97998-9.95996-9.93994-9.91992sin=sin(x);#计算 sin 函数值cos=cos(x); sc=sin(x)+cos(x);plot(sinx,xlab=x,ylab=y,ylim=c(-1.5,1.5),type=l, col=1);lines(cosx,type=b, co
13、l=2);#点线图lines(scx,type=o, col=1); title(三角函数图);所得图形如下图,sin 为黑色,cos 为红色,sin+cos 为绿色:内容:1.1; 1.2; 1.11;(附加题:1.4; 1.7; 1.8 有能力的可做附加题)1.1 某批发市场从厂家购置一批灯泡,根据合同的规定, 灯泡的使用的寿命平均不低于 1000h。已知灯泡的使用寿命服从正态分布,标准差是 20h,从总体中随机抽取了 100 只灯泡,得知样本均值为 996h,问题是:批发商是否应该购买该批灯泡?m 1000(1) 零假设和备择假设应该如何设置?给出你的理由。(2)在零假设之下,给出检验的
14、过程并做出决策,如果不能拒绝零假设,可能是哪里出了问题。解:(1) 根据题意,问题的假设为H0: m 1000 H1: m 1000理由:m 1000是批发商的意愿,违背这个意愿,也就是拒H绝原假设,他就购这批灯泡了。不能轻易否定的事情0H应置于被保护地位。这个问题的检验统计量为0Z = X - 1000 ,z=(996-1000)/2=-220 / nP 值pvalue=pnorm(z,0,1)= 0.02275013, 在alpha=0.05 时拒绝原假设,根据合同,不购这批灯泡。(2) 假设检验问题: H0: m 1.645,则将会拒绝 H: ,而且0按照 Neyman-Pearson
15、引理,该检验是最优的。现在,如果我们观察到 X=2.1,该水平 0.05 的最优检验告诉我们拒绝q =0 的零假设,接受q =1000 的备择假设,你觉得有问题吗?问题在哪里?如何解决?答:有问题。假设检验在原假设条件成立下,得到拒绝域受。而只是其中的一种情况,故不能接受改进方法:可直接提出假设“均值为 1000”进行检验。即检验,意思是拒绝,接。(2) 有两组学生的成绩,第一组为 11 名,成绩为 x:100,99,99,100,100,100,100,99, 100, 99, 99; 第二组为 2 名,成绩为y: 50, 0. 我们对这两组数据作同样水平a = 0.05 的 t 检验(假设
16、总体的均值为 m ), H : m = 100 H : m 100 。01对第二组数据的检验结果为:df=10, t= -2.8868,mean(x)= 99.54545, 单边检验( m 100, less)的 P 值为 p-value = 0.008099。所以拒绝原假设,认为 m 100。对第二组数据检验的结果为:df=1, t 值为-3,单边( m t( 双边检验, alternative=”two.side”) ,S / np_value= PT t ( 右 边 检 验 ,alternative=”greater”) , p_value= PT ta/ 2 p_value= P| T
17、 | t m ,拒绝原假设 H t t p_value= PT ta00100aIII. 左尾假设检验 H : m m H : m m ,拒绝原假设H t -t p_value= PT t t a P| T | t 1 -a P X - S t m X + S t 1 -an a / 2n a / 2 其中随机变量 T 服从 t(n-1)分布。S 是正态样本的样本方差。(5) 如果 X1 , X 2 ,., Xn 服从正态分 布 N (m, s 2 ) ,其中 m 未知, 写出有关的 关于均 值 m 的100(1- a )%的置信区间。一般来说,如果知道X1 , X 2 ,., Xn 有未知均
18、值 m 和已知方差s 2,但分布不知道,我们不能用上面写的置信区间?如果能,需要什么条件?根据是什么?用公式说明。解:如果 X1 , X 2 ,., Xn 服从正态分布 N (m, s 2 ) ,其中 m 未知,写出有关的关于均值m 的100(1- a )%的置信区间。用到下面两个统计量:X - mo / nX - mS / nZ = N (0, 1) , t = t(n - 1)如果方差s 2 已知,则用正态置信区间,用 Z 构造置信区间。P X - s z m X + s z 1 -an a / 2n a / 2 如果方差s 2 未知,则用 t 构造置信区间:P X - S t m X +
19、 S t 1 -an a / 2n a / 2 如果知道 X , X1,., X2n有未知均值 m 和已知方差s 2 ,但分布不知道,我们不能用上面写的置信区间,用切比雪夫不等式构造置信区间:P| X - m | e 1 - s 2ne 2,令a = s 2ne 2PX - e m 10);sl=sum(x10);n1=sg+sl;k=min(sg,sl); binom.test(k,n1,0.5);结果输出:Exact binomial testdata:k and n1图 2.1.1 数据分布直方number of successes = 6, number of trials = 12,
20、 p-value = 1alternative hypothesis: true probability of success is not equal to 0.595 percent confidence interval: 0.2109446 0.7890554 sample estimates:probability of success0.5p-value = 1,不拒绝原假设 H0(2) Wilcoxon 符号秩检验,假设如果(1):Wilcoxonsignedranktestwithcontinuity correctiondata:x - 10V = 53, p-value =
21、 0.2892alternative hypothesis: true location is not equal to 0 p-value = 0.2892, 没有充分理由拒绝原假设。注:虽然两个检验的结论相同,但我们认为(1)可靠。因为数据的分布不是对称,而后者是基于对称分布的。而 本题的数据分布直方图如下,显然是不对称的,所针对 本题数据,wilcox.test 不可靠。2.2 考查某疾病的患者共计 350 名,男性 150 人,女性 200 人,问该疾病得病的男女性别比是否为 1:1,即其男女比例是否各为 1/2?提 示 : 用 中 心 极 限 定 理 , 正 态 近 似 检 验 ,
22、即Demoive-Laplace 中 心 极 限 定 理 :p=0.5,n=350, Xb(350,0.5),E(X)=175, Var(X)=npq=n/4=350/4。标准化X 近似于标准正态。解:根据题意,设男性患者的比例为 p,则检验的假设为H0 : p = 0.5 H1 : p 0.5设 男 性 患 者 数 为X , 则Xb(350,0.5),E(X)=175, Var(X)=npq=n/4=350/4。标准化 X 近似于标准正态。Z = X - np N (0, 1), z = 150 - 175 = -2.672612npqp-value=2*min(pnorm(z,0,1),1
23、-n / 4pnorm(z,0,1)=0.007526315, 拒绝原假设 p=0.5,认为患者中男性比率不是 0.5, 男女比例不是 1:1.注:究其实,男性患者的比率显著地0);sl=sum(z0);n1=sg+sl;k=min(sg,sl) binom.test(k,n1,0.5)Exact binomial test data:k and n1number of successes = 3, number of trials = 10, p-value = 0.3438alternative hypothesis: true probability of success is not
24、equal to 0.595 percent confidence interval: 0.06673951 0.65245285 sample estimates:probability of success0.3P 值 p-value = 0.3438,不拒绝原假设,认为两个联赛的三分球得分次数没有显著差异。(2) 作 z 的直方图如图 2.4.1,图形显示z 的分布不存在显著不对称的迹象,可以做 wilcox.testwilcox.test(z)Wilcoxon signed rank testdata:zV = 45, p-value = 0.08398alternative hypo
25、thesis: true location is not equal to 0检 验 的P值p-value=0.08398, 在图 2.4.1 z 的直方alpha=0.05 下,不拒绝原假设。与符号检验的结论相同,但 P 值小了很多。(3) 在如上的检验中,由于数据的分布不存在显著不对称 的迹象,wilcox.test 是可靠的,因而 wilcox.test 理好。事实 wilcox.test 的 P 值小了很多,更能区分差异。在检验可靠的情形下,P 值越小越好。2.12 在白令海所捕捉的 12 岁的某种鱼的长度(单位:cm)样本为长度 6465666768697071/cm72737475
26、777879数目 121143453301611您能否同意所声称的12 岁的这种鱼的长度的中位数总是在 6972cm 之间?解:这是求置信区间的问题,设a =0.05. x=c(64,65,65,66,67,68,68,68,68,69,69,69,70,70,70,70,71,71,71,71,71,72,72,72,73,73,73,75,77,77,77,77,77,77,78,83);数据探索:正态 Q-Q 图和密度函数图如下两者显示数据x 近 似 于 对 称 分布,ks 正态性检验的P 值为0.58, 也没有拒绝正态性假设,因此可以认为数据分布不拒绝对称性假设。因此可以做 Walsh
27、 中位数置信区间,基于 Bootstrap 方差估计的中位数正态置信区间、枢轴量置信区间、分位数置区间,下面求 walsh 置信区间。(1) walsh 中位数置信区间walsh=NULL;n=length(x);for(i in 1:n)for (j in i:n)w=(xi+xj)/2; walsh=c(walsh,w);list(med=median(walsh), nwalsh=length(walsh);#median(walsh)=71,length(walsh)=666# 编程求walsh 中位数的(1-a )*100%=95%的置信区间walsh.conf=function(x
28、,alpha)walsh=NULL;n=length(x);for(i in 1:n)for (j in i:n)w=(xi+xj)/2; walsh=c(walsh,w);nw=length(walsh);#walsh 的长度walsh.sort=sort(walsh);#搜索 walsh 中位数的置信区间,对称地砍掉左尾和右尾for(kinseq(1,(nw/2),1)F=pbinom(nw-k,nw,0.5)- pbinom(k,nw,0.5);if (F(1-alpha)lk=k-1;break lci=walsh.sortlk;uci=walsh.sortnw-lk+1; list(
29、lci=lci,uci=uci,lk=lk,uk=nw-lk)#调用函数walsh.conf(x,0.05)$lci= 71, $uci=71.5结论:12 岁的这种鱼的长度的中位数的 95%的walsh置信区间是(71, 71.5)(cm).(2) 其它置信区间,基于Bootstrap 方差的枢轴区间是最好的,它是(69,73),还是没有 Walsh 区间好,因为数据分布是对称的。依walsh 平均,可以说 12 岁的这种鱼的长度在 6972 之间(置信水平95%)。2.14 社会学家欲了解抑郁症的发病率是否在一年时间随季节的不而不同,他使用了来年一所大医院的病人数据,按一个 4 个季节,依
30、次记录过去 5 年中第一次被确诊为患抑郁症的病人数,数据如下表(单位:人)季 春季节 冬季夏季合计秋季人 495503491数 5812070请问:发病率是否与季节有关?c 2解:这是一个假设问题。也称为独立性检验问题。如果两者独立,即无关,则发病人数在 4 个季节是均匀(发病率为 1/4),否则两者是相关的。Pearson 检验过程如下:0123411234H ;p =p =p =p =1/4;H ;p ,p ,p ,p 不全等;V=c(495,503,491,581);p=1/4;n=sum(V);df=4-1;chi2=sum(V-n*p)2/(n*p)pvalue=1-pchisq(c
31、hi2,df);pvalue;#请思考:为什么用右尾概率?10.01453647结论:在a =0.05 时拒绝原假设,认为发病率与季节有关。具体地说,冬天的发病率高( p3=0.2807)。当然,为了要得到科学的结论,应该要规范抽样,使得样本有代表性,毕竟一个医院的数据其代表性是值得商榷的。 内容P106: 3.1; 3.4; 3.5.3.1在一项研究毒品对增强人体攻击性影响的实验中,组A 使用安慰剂,组 B 使用毒品,试验后进行攻击性测试, 测量得分显示在如下表中(得分越高表示攻击性越强)组 10,8,12,16,5,9,7,11,6 A组 12,15,20,18,13,14,9,16 B(
32、1) 给出这个实验的零假设.(2) 画出表现这些数据的曲线图.(3) 分析这些数据用哪种检验方法最合适. (4)用您选择的检验对数据进行分析.(5)是否有足够的证据拒绝零假设?如何解释数据?解:(1)这个实验的目的是要检验毒品是否具有显著的攻击性。根据假设检验的原则,其零假设其位置参数(均值或中位数)是无显著差异,即检验假设为:.H0 : M A MB H1 : M A MB(2) A=c(10,8,12,16,5,9,7,11,6);B=c(12,15,20,18,13,14,9,16);min=min(c(A,B);max=max(c(A,B);plot(A,type=b,pch=A,xl
33、im=c(0,9),ylim=c(min,max);lines(B,type=b,pch=B); title(数据 A,B 折线图); 折线图如图 3.1.1.能更好地反映数据还有箱线图,程序如下,图如图 3.1.2 group=factor(rep(c(A,B),c(9,8) plot(c(A,B)group)图 3.1.1 数据 A、B 折线性图图 3.1.2 数据 A、B 箱线图从图看,药品 B 的攻击性是乎强一些,有否显著地强,有待于检验。(3) 如果两样本都呈正态分布,可以进行二样本 t 检验, 如果两样本分布相似,可进行 Wilcoxon 秩和检验。二样本正态性检验的程序和结果如下:ks.test(A,pnorm,mean(A),sd(A)One-sample Kolmogorov-Smirnov testdata:AD = 0.1047, p-value = 0.9997alternative hypothesis: two-sided因为检验的P 值为 0.9997,没有充分的理由拒绝A 的正态性假设。ks.test(