knitr::opts_chunk$set(tidy = TRUE,
warning = FALSE,
message = FALSE)
setwd("C:\\Users\\213yi\\Desktop\\非参数统计\\3-23")
library(ggthemes)
library(ggplot2)
library(rJava)
library(xlsx)
library(epade)
library(MASS)
第一题
head(immer)
year1=immer$Y1
year2=immer$Y2
df1<-data.frame(yield=year1,time=rep("1931",30))
df2<-data.frame(yield=year2,time=rep("1932",30))
df<-rbind(df1,df2)
可视化
#分布图
hist(immer$Y1,prob=TRUE,xlim = c(40,200),breaks=10,xlab="yield",ylab="密度",col="deepskyblue",main="")
hist(immer$Y2,prob=TRUE,breaks=10,xlab="",ylab="",col="red2",density=30,main="",add=TRUE)
legend("topright",legend=c("1931","1932"),ncol=1,inset=0.04,col=c("deepskyblue","red2"),density=c(200,50),fill=c("deepskyblue","red2"),cex=0.8)
title("大麦产量直方图")
#boxplot
ggplot(df,aes(x=time,y=yield,fill=time))+geom_boxplot()+ggtitle("大麦产量箱线图")+
scale_fill_manual(values=c("red","purple"))+xlab("")
两张图可以直观的看出1931年的大麦产量更高
分布检验
成对数据的t检验
delta=year2-year1
t.test(delta,mu=0,alternative = "two.sided")
t检验的p-value值=0.0024,因此拒绝原假设,两年的分布不同
精确的符号秩检验
binom.test(sum(delta>0),sum(delta!=0),0.5)
符号检验的p-value值=0.0014,因此拒绝原假设,两年的分布不同
Wilcoxon配对符号秩检验
wilcox.test(year1,year2,paired = T)
Wilcoxon符号秩检验的p-value值=0.0053,因此拒绝原假设,两年的分布不同
检验及分析
对t检验的条件进行检验,即正态性假设
shapiro.test(year1)
qqnorm(year1,main = "1931年产量QQ图")
qqline(year1)
p值=0.048,拒绝1931年是正态分布的假设
shapiro.test(year2)
qqnorm(year2,main = "1932年产量QQ图")
qqline(year2)
p值=0.70,接受1932年是正态分布的假设
对Wilcoxon检验进行判断
ggplot(df,aes(x=yield,fill=time))+ggtitle("大麦产量分布密度曲线")+
geom_density(alpha = 0.3)
偏态分布,不对称,Wilcoxon条件不成立
- 总结:本题应当使用符号检验更有效,最终结论为1931和1932大麦产量具有不同的总体分布
第二题
#数据预处理
competition1=c(91,46,108,99,110,105,191,57,34,81)
competition2=c(81,51,63,51,46,45,66,64,90,28)
df1<-data.frame(score=competition1,time=rep("比赛1",10))
df2<-data.frame(score=competition2,time=rep("比赛2",10))
df<-rbind(df1,df2)
可视化
hist(competition1,prob=TRUE,breaks =seq(0,200,10),xlab="score",ylab="密度",col="deepskyblue",main="")
hist(competition2,prob=TRUE,xlab="",ylab="",col="red2",density=30,main="",add=TRUE)
legend("topright",legend=c("比赛1","比赛2"),ncol=1,inset=0.04,col=c("deepskyblue","red2"),density=c(200,50),fill=c("deepskyblue","red2"),cex=0.8)
title("得分情况直方图")
ggplot(df,aes(x=time,y=score,fill=time))+geom_boxplot()+ggtitle("得分情况箱线图")+
scale_fill_manual(values=c("red","purple"))+xlab("")
两张图可以直观的看出比赛1的得分更高
分布检验
delta=competition2-competition1
binom.test(sum(delta>0),sum(delta!=0),0.5)
wilcox.test(competition1,competition2,paired = T)
1.符号检验的p-value值=0.34,因此接受原假设
2.Wilcoxon符号秩检验的p-value值=0.0839,因此接受原假设,两场比赛得分分布不同
检验与分析
对Wilcoxon检验进行判断,绘制密度图
ggplot(df,aes(x=score,fill=time))+ggtitle("比赛得分密度图")+
geom_density(alpha = 0.3)
由于样本量太少,无法准确得到精确的结论:大致可看出为对称分布
-总结:两种检验方法在 𝛼 = 0.05水平下均接受原假设,认为两个联赛三分球得分次数无显著差异,具有相同的总体分布.
Wilcoxon符号秩检验的 p 值小于符号检验的p值,因为它采用了比符号检验更多的信息,所以Wilcoxon符号秩检验的结果更可靠
第3题
编写函数
name <- c("crim", "zn", "indus", "nox", "rm", "age", "dis", "tax", "ptratio", "black","lstat", "medv")
fun<-function(df){
result=as.data.frame(matrix(nrow=12,ncol=2))
colnames(result)[1] <- 'signal'
colnames(result)[2] <- 'wilcoxon'
row.names(result)<-name
for (i in 1:length(df)){
med=median(df[,i])
sign<-binom.test(sum(df[,i]>med),sum(df[,i]!=med),0.5)
wil<-wilcox.test(df[,i],mu=med)
result[i,"signal"]<-sign$p.value
result[i,"wilcoxon"]<-wil$p.value
}
return(result)
#返回符号检验和 Wilcoxon 符号秩检验的 P-value
}
df=Boston[,-c(4,9)]
fun(df)#调用函数
分析与结论
for (i in 1:12) {
hist(df[,i], main = name[i])
}
- 符号秩检验采用了比符号检验更多的信息,p-value会小于符号检验
- 但是,观察到的密度曲线可以看出所有的变量几乎都不是对称分布
- 符号秩检验的前提假设是数据具有对称分布
- 所以Wilcoxon 符号秩检验得到结果不可靠
- 设条件更少的符号检验在本题的中位数检验中更加稳健