R-正态性检验实例


数据:price.csv文件(一列价格差值的数据,包含标题)

问题描述:

  • 利用price.csv数据绘制数据直方图,并添加概率密度曲线(density)和估计概率密度曲线(dnorm) 。
  • 绘制出qqplot及其拟合线。
  • 用Shapiro和Kolmogorov-Smirnov检验判断该数据是否符合正态分布。

代码实现:

data = read.csv("price.csv", header = T)
hist(data$diff, freq = F, xlab = 'Price differences', ylab = 'Density')  #绘制直方图
lines(density(data$diff), col = 'black')  #添加概率密度曲线
x = seq(-2, 2, len = 252)
lines(x, dnorm(x, mean(data$diff), sd(data$diff)), col= 'blue')  #添加估计概率密度曲线

qqnorm(data$diff)  #绘制qqplot
qqline(data$diff)  #绘制拟合线

shapiro.test(data$diff)

ks.test(data$diff, 'pnorm', mean = mean(data$diff), sd = sd(data$diff))

结果展示:

> shapiro.test(data$diff)

	Shapiro-Wilk normality test

data:  data$diff
W = 0.99146, p-value = 0.1503

> ks.test(data$diff, 'pnorm', mean = mean(data$diff), sd = sd(data$diff))

	One-sample Kolmogorov-Smirnov test

data:  data$diff
D = 0.052668, p-value = 0.4867
alternative hypothesis: two-sided

  两种检验均表明该数据服从正态分布。