比较样本与参考概率分布在R中的qq图。

问题描述 投票:0回答:1

我有一个天气数据集,我找到了一个简单的线性模型的两列温度和湿度,并绘制了其残差的直方图,并计算了平均值和std.我应该Plot QQ-plot的残差与零均值正态分布与估计的std.我用Kolmogorov-Smirnov比较样本与参考概率分布,但我不知道。

model <- lm(Temperature..C. ~ Humidity, data = inputData)
model.res = resid(model) 
hist(model.res) 
mean(model.res)
sd(model.res)

我应该把残差与零均值正态分布的QQ图与估计的std.我用Kolmogorov-Smirnov来比较一个样本与参考概率分布,但我不知道如何一起绘制。

ks<-ks.test(model.res, "pnorm", mean=0, sd=sd(model.res)) 
qqnorm(model.res, main="qqnorm") 
qqline(model.res)

数据例子:

        Temperature..C. Humidity
1          9.472222     0.89
2          9.355556     0.86
3          9.377778     0.89
4          8.288889     0.83
5          8.755556     0.83
6          9.222222     0.85
7          7.733333     0.95
8          8.772222     0.89
9         10.822222     0.82
10        13.772222     0.72
11        16.016667     0.67
12        17.144444     0.54
13        17.800000     0.55
14        17.333333     0.51
15        18.877778     0.47
16        18.911111     0.46
17        15.388889     0.60
18        15.550000     0.63
19        14.255556     0.69
20        13.144444     0.70
r plot linear-regression kolmogorov-smirnov
1个回答
1
投票

以下是使用以下方法的解决方案 ggplot2

ggplot(model, aes(sample = rstandard(model))) + 
  geom_qq() + 
  stat_qq_line(dparams=list(sd=sd(model.res)), color="red") +
  stat_qq_line()

红线代表你的样本sd的qq线,黑线是sd为1。

你没有要求,但你也可以添加一个平滑的qqplot。

data_model <- model
data_model$theo <- unlist(qqnorm(data_model$residuals)[1])

ggplot(data_model, aes(sample = rstandard(data_model))) + 
  geom_qq() + 
  stat_qq_line(dparams=list(sd=sd(model.res)), color="red") +
  geom_smooth(aes(x=data_model$theo, y=data_model$residuals), method = "loess")
© www.soinside.com 2019 - 2024. All rights reserved.