登录
首页精彩阅读R语言自定义函数,利用QQ图和shaprio.test检验正态分布
R语言自定义函数,利用QQ图和shaprio.test检验正态分布
2018-03-11
收藏

R语言自定义函数,利用QQ图和shaprio.test检验正态分布

代码

#自定义函数

norm.test<-function(data,alpha=0.05,pic=TRUE){ #alpha为显著性水平,这里的默认值为0.05 

if(pic==TRUE){#画图形
dev.new()
par(mfrow=c(2,1))
qqnorm(data,main="qq图")
qqline(data)
hist(data,freq=F,main="直方图和密度估计曲线")
lines(density(data),col="blue")#密度估计曲线
x<-c(round(min(data)):round(max(data)))
lines(x,dnorm(x,mean(data),sd(data)),col="red")#正态分布曲线
}
sol<-shapiro.test(data)
if(sol$p.value>alpha){
print(paste("success:服从正态分布,p.value=",sol$p.value,">",alpha))
}else{
print(paste("error:不服从正态分布,p.value=",sol$p.value,"<=",alpha))
}
sol
}

#函数调用

data<-rnorm(100,mean=5,sd=3)#数据为随机生成的满足正态分布的数据集,个数为100,平均值为5,标准差为5

norm.test(data)


################

说明

1、norm是正态分布,dnorm是正态分布的概率密度函数,rnorm是生成正态分布的随机数,pnorm是分布函数

2、关于QQ图

(1)QQ图用于检验指标样本是否服从某种分布状态,样本越是服从某种分布规则,绘制的QQ图越会趋于一条直线

(2)qqnorm函数绘制正态分布的QQ图

(3)qqline函数用于绘制QQ图的近似直线,其解析式为,其中a是正态分布的标准差,截距b为均值

3、关于shapiro.test函数

该函数的参数为要检验的数据集,返回值为一个对象,对象的属性p.value与显著性水平相比(一般与0.05相比),如果p.value值大,则可以说其服从正态分布,该值越接近1越好。

运行结果


数据分析咨询请扫描二维码

最新资讯
更多
客服在线
立即咨询