如有错误,还请各位大佬指出。
一、实验目的
1.
编写
R
语言函数进行中位数符号检验。
二、实验内容
1.
编写中位数符号检验的
R
语言函数。要求:
i
)函数包括以下参数:检验的样本向量,
me
0
,显著性水平和备择假设;
ii
)显著性水平默认值为
0.05
;
iii
)备择假设的双边、左边和右边假设分别为:
alternative == “two.sided”; alternative == “less”; alternative == “greater”
默认值为双边假设;
iv
)函数返回值为一个列表,包括检验统计量的观察值、检验的
p
值
以及是否拒绝原假设。
2.
完成练习:
在某保险种类中,一次关于
2006
年的索赔额度(单位:元)的随机抽样为:
4632, 4728, 5052, 5064, 5484, 6972, 7696, 9048, 14760, 15013, 18730, 21240, 22836, 52788, 67200
已知
2005
年的索赔额度中位数为
6064
元。
i
)写出原假设与备择假设;
ii
)计算检验统计量的样本值;
iii
)检验
2006
年索赔额度的中位数与
2005
年是否有所变化?其中
分别为
0.1
和
0.05
代码
#中位数符号检验#
z<-function(x,me0,a,alt){ #构造中位数检验函数
n1=sum(x>me0); #统计S+
n2=sum(x<me0); #统计S-
n=n1+n2; #删除等于me0的数据,得到数据总量
p1<-pbinom(n2,n,0.5) #p值
p2<-1-pbinom(n2-1,n,0.5) #p值
h1<-"拒绝原假设" #判断是否拒绝原假设的输出语句
h<-"不拒绝原假设"
if(alt=="two sides"){#判断当为双边假设的情况
p=min(p1,p2);#确定双边假设的p值
p.value=2*p;
if(p.value<=a){return(list("s+"=n1,"s-"=n2,p.value,h1))}#当p值小于水平a时,拒绝原假设,返回相应的值
else{return(list("s+"=n1,"s-"=n2,p.value,h))}#当p值大于水平a时,不拒绝原假设,返回相应的值
}
if(alt=="less"){#判断当为单边(左边)假设的情况
p.value=p2;#确定单边假设的p值
if(p.value<=a){return(list("s+"=n1,"s-"=n2,p.value,h1))}#当p值小于水平a时,拒绝原假设,返回相应的值
else{return(list("s+"=n1,"s-"=n2,p.value,h))}#当p值大于水平a时,不拒绝原假设,返回相应的值
}
if(alt=="greater"){#判断当为单边(右边)假设的情况
p.value=p1#确定单边假设的p值
if(p.value<=a){return(list("s+"=n1,"s-"=n2,p.value,h1))}#当p值小于水平a时,拒绝原假设,返回相应的值
else{return(list("s+"=n1,"s-"=n2,p.value,h))}#当p值大于水平a时,不拒绝原假设,返回相应的值
}
else#所有情况都不符合的时候返回报错
return("error")
}