非参数统计(R软件)参考答案

更新时间:2024-05-30 04:14:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

内容:

A.3, A.10, A.12

A.3 上机实践:将MASS数据包用命令library(MASS)加载到R中,调用自带“老忠实”喷泉数据集geyer,它有两个变量:等待时间waiting和喷涌时间duration,其中… (1) 将等待时间70min以下的数据挑选出来;

(2) 将等待时间70min以下,且等待时间不等于57min的数据挑选出来; (3) 将等待时间70min以下喷泉的喷涌时间挑选出来; (4) 将喷涌时间大于70min喷泉的等待时间挑选出来。 解:读取数据的R命令:

library(MASS);#加载MASS包 data(geyser);#加载数据集geyser

attach(geyser);#将数据集geyser的变量置为内存变量 (1) 依题意编定R程序如下:

sub1geyser=geyser[which(waiting<70),1];

#提取满足条件(waiting<70)的数据,which(),读取下标 sub1geyser[1:5];#显示子数据集sub1geyser的前5行 [1] 57 60 56 50 54

(2) 依题意编定R程序如下:

Sub2geyser=geyser[which((waiting<70)&(waiting!=57)),1]; #提取满足条件(waiting<70& (waiting!=57)的数据. Sub2geyser[1:5];#显示子数据集sub1geyser的前5行 [1] 60 56 50 54 60 ……

原数据集的第1列为waiting喷涌时间,所以用[which(waiting<70),2] (3)

Sub3geyser=geyser[which(waiting<70),2];

#提取满足条件(waiting<70)的数据,which(),读取下标 Sub3geyser[1:5];#显示子数据集sub1geyser的前5行 [1] 4.000000 4.383333 4.833333 5.450000 4.866667……

原数据集的第2列为喷涌时间,所以用[which(waiting<70),2] (4)

Sub4geyser=geyser[which(waiting>70),1];

#提取满足条件(waiting<70)的数据,which(),读取下标 Sub4geyser[1:5];#显示子数据集sub1geyser的前5行 [1] 80 71 80 75 77……. A.10

如光盘文件student.txt中的数据,一个班有30名学生,每名学生有5门课程的成绩,编写函数实现下述要求:

(1) 以data.frame的格式保存上述数据;

(2) 计算每个学生各科平均分,并将该数据加入(1)数据集的最后一列; (3) 找出各科平均分的最高分所对应的学生和他所修课程的成绩;

(4) 找出至少两门课程不及格的学生,输出他们的全部成绩和平均成绩;

(5) 比较具有(4)特点学生的各科平均分与其余学生平均分之间是否存在差异。 先将数据集读入R系统

student=read.table(\…\

class(student):#显示数据集student的类型,

[1] \是数据框

names(student);#显示数据框student的变量

[1] \ \ \ \#输出显示,数据框student有7个变量,第7个变量是平均值mean。 (1)

write.table(student,\非参数统计\\\\data2014\\\\各章数据\\\\附录A\\\\x.txt\打开x.txt

\\\……

(2) 依题意,要为原始数据集添加一个变量,即添加一列在最后。?[,6]=? me=rep(0,30);

for(i in 1:30){x=as.numeric(student[i,2:6]); me[i]=mean(x);} student$mean=me;

#上面程序的最后一行也可以如此:student[,7]=me names(student);

[1] \ \ \ \ #如上显示,程序运行后数据框student添加了第7列mean.

(3) 依题意,在(2)的程序运行后做,要用到which(mean==max(mean)),如同A.3。 attach(student);

maxme=student[which(mean==max(mean)),];#找出最高平均分的记录,并赋予maxme; maxme;

name math physics chem literat english mean

15 Liggle 78 96 81 80 76 82.2

(4) 依题意,要用到二重的for和if. 由原数据框geyser给data1赋值时要用到数据转换: #x=as.numeric(student[i,2:6]);#读取student第i行2:6列的数据,#data1[k,]=x;#将x赋给data4 #的第k行。sum(x<60)是不及格门数。 Data1=student[1,];#赋初值 k=0;

for(i in 1:30){x=as.numeric(student[i,2:6]);

if (sum(x<60)>1){k=k+1;data1[k,]=student[i,];}} data1

name math physics chem literat english mean

1 Ricky 67 63 49 65 57 60.2 7 Simon 66 71 67 52 57 62.6 9 Jed 83 100 79 41 50 70.6 10 Jack 86 94 97 51 55 76.6 12 Jetty 67 84 53 58 56 63.6 13 Corner 81 62 69 56 52 64.0 14 Osten 71 64 94 52 52 66.6 25 Amon 74 79 95 59 59 73.2

(5) 依题意,要创造两个子集data4和data2, 用两样本的比较方法比较他们的平均成绩是否有显著差异。类似创造data1的方法,创造data2。并设x=data1$mean,y=data2$mean,比较二样本x,y是否有显著差异,由于还没有学非参数检验,试用t检验检验之(R的t检验函数为t.test(x,y),原假设H0是两样本的均值相等,备择假设H1是两样本不等)。如果P值p-value<0.05,则拒绝原假设。 data2=student[1,];k=0;

for(i in 1:30){x=as.numeric(student[i,2:6]);

if (sum(x<60)<2){k=k+1;data2[k,]=student[i,];} };

下面做t检验

x=data1$mean;y=data2$mean; t.test(x,y)

Welch Two Sample t-test data: x and y

t = -3.0236, df = 9.309, p-value = 0.01386

alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -11.493236 -1.684037

sample estimates: mean of x mean of y : 67.17500 73.76364

结论:p-value = 0.01386<0.05,拒绝原假设,即认为两样本的平均成绩有显著差异。

A.12 在一张图上,用取值(-10,10)之间间隔均等的1000个点,采用不同的线型一颜色给制sin(),cos(),sin()+cos()的函数图形,图形要求有主标题和副标题,标示出从坐标 x=seq(-10,10,length=50);#构造向量x, x[1:5];#显示x的前5个数据

[1] -10.00000 -9.97998 -9.95996 -9.93994 -9.91992 sin=sin(x);#计算sin函数值 cos=cos(x);

sc=sin(x)+cos(x);

plot(sin~x,xlab=\lines(cos~x,type=\点线图 lines(sc~x,type=\title(\三角函数图\

所得图形如下图,sin为黑色,cos为红色,sin+cos为绿色:

内容:

1.1; 1.2; 1.11;(附加题:1.4; 1.7; 1.8 有能力的可做附加题)

1.1 某批发市场从厂家购置一批灯泡,根据合同的规定,灯泡的使用的寿命平均不低于1000h。已知灯泡的使用寿命服从正态分布,标准差是20h,从总体中随机抽取了100只灯泡,得知样本均值为996h,问题是:批发商是否应该购买该批灯泡?

(1) 零假设和备择假设应该如何设置?给出你的理由。

(2)在零假设??1000之下,给出检验的过程并做出决策,如果不能拒绝零假设,可能是哪里出了问题。 解:(1) 根据题意,问题的假设为H0:??1000?H1:??1000

理由:??1000是批发商的意愿,违背这个意愿,也就是拒绝原假设H0,他就购这批灯泡了。不能轻易否定的事情应置于被保护地位H0。这个问题的检验统计量为

Z?X?1000,z=(996-1000)/2=-2

20/nP值pvalue=pnorm(z,0,1)= 0.02275013, 在alpha=0.05时拒绝原假设,根据合同,不购这批灯泡。 (2) 假设检验问题:H0:??0?H1:??0。

这样的假设是有问题的。假设检验是一种这样哲学:不轻易否定旧过程,置旧过程为H0于被保护的位置,而以小概率否定之。而一但被拒绝,以小概率事件原理,拒绝域不是小概率。反证H0不真。所谓“天欲报之,必先厚之”也,以显我为人之厚道,虽如此也不能保护H0,怪不得我也。面此假设违返旧过程,这样的假设毫无意义。

如果按照这个检验问题,检验的P值是pvalue=1- pnorm(z,0,1)= 0.9772499, 没有充分的理由拒绝原假设,结论也是不购进这批灯泡。但是犯批II类错误的概率是多少,鬼才知道呢。

1.2 考虑下面检验问题(不用计算已给的数据).

(1)如果X服从N(0, 1)分布,假设检验问题H0:??0?H1:??1000。可以知道??0.05的似然比

检验,如果X>1.645, 则将会拒绝H0: ,而且按照Neyman-Pearson引理,该检验是最优的。

现在,如果我们观察到X=2.1,该水平0.05的最优检验告诉我们拒绝?=0的零假设,接受?=1000的备择假设,你觉得有问题吗?问题在哪里?如何解决? 答:有问题。假设检验在原假设条件成立下,得到拒绝域受

。而

只是其中的一种情况,故不能接受

,意思是拒绝。

,接

改进方法:可直接提出假设“均值为1000”进行检验。即检验

(2) 有两组学生的成绩,第一组为11名,成绩为x:100,99,99,100,100,100,100,99, 100, 99, 99; 第二组为2名,成绩为y: 50, 0. 我们对这两组数据作同样水平?= 0.05的t检验(假设总体的均值为?),H0:??100?H1:??100。

对第二组数据的检验结果为:df=10, t= -2.8868,mean(x)= 99.54545, 单边检验(?<100, less)的P值为p-value = 0.008099。所以拒绝原假设,认为?<100。

对第二组数据检验的结果为:df=1, t值为-3,单边(?<100, less)的P值为p-value = 0.1024,不拒绝原假设?=100。但是mean(y)=25.

解:两个结论都不是合理的,t检验是针对正态数据做的,第一组数据事实上是两点分布,x的取值域为{99,100},所以t检验的基本假设不满足,所以第一个检验是不合理的;第二组数据的t检验也是不合理的,样本量太少,不具有代表性。

(3)写出上面所用的t检验统计量,及p值的定义,解释水平?=0.05的意义(注意,这里是一般情况,不要联系(2)中的具体数据例子),如果没有给定水平,如何用p值来做出结论? 解:设样本X1,X2,...,Xn iid N(?,?2), 对于三种假设(双边假设,两个单边假设)都用同一个t统计量t?X??,p值p_value=P?|T|?t?(双边检验,alternative=”two.side”),S/np_value=P?T?t?(右边检验, alternative=”greater”),p_value=P?T?t?(左边检验alternative=”less”),其中T~t(n?1)。p_value小于检验水平?时拒绝原假设,接受H1 。则有 I. 双边假设检验H0:???0?H1:???0,拒绝原假设H0?t?t?/2 ?p_value=P?|T|?t?

解:t检验是在正态样本条件下做。确实,双边假设的t检验与置信区间一一对应。其双边假设检验式,有P?|T|?t?≤??P?|T|?t??1???

SS??P?X?t?/2???X?t?/2??1??

nn??其中随机变量T服从t(n-1)分布。S是正态样本的样本方差。

(5) 如果X1,X2,...X,n服从正态分布N(?,?2),其中?未知,写出有关的关于均值?的100(1-?)%的置信区间。一般来说,如果知道X1,X2,...,Xn有未知均值?和已知方差?2,但分布不知道,我们不能用上面写的置信区间?如果能,需要什么条件?根据是什么?用公式说明。 解:①如果X1,X2,...,Xn服从正态分布N(?,?2),其中?未知,写出有关的关于均值?的100(1-?)%的置信区间。用到下面两个统计量:

Z?X??X??~N(0,1),t?~t(n?1) ?/nS/n

本文来源:https://www.bwwdw.com/article/kxc6.html

Top