R 菜鸟入门篇 第04篇 模型

这一篇,我们试着进行线性拟合,示例所用的数据仍然是前两篇中的北京 PM2.5 质量浓度。

开胃小菜: 在 Rstudio 左下窗口输入代码 example(nls),然后按回车,再回车。

经过了前几篇的练习,相信你已经熟悉了 # 号注释的方式。从今往后,我们尽量以这种方式来缩短文字篇幅。

pm <- read.csv(file = "c:\\R\\data\\dapengde_DummyR_PM25.csv")
m <- lm(pm$h100 ~ pm$h8)  # 线性拟合
m  # 查看模型,显示斜率和截距。
## 
## Call:
## lm(formula = pm$h100 ~ pm$h8)
## 
## Coefficients:
## (Intercept)        pm$h8  
##     -11.471        0.846
summary(m)  # 模型的详细总结报告。
## 
## Call:
## lm(formula = pm$h100 ~ pm$h8)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -14.247  -7.113  -0.397   4.508  27.744 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -11.471      6.013   -1.91     0.07 .  
## pm$h8          0.847      0.058   14.58  8.6e-13 ***
## ---
## Signif. codes:  0 &#39;***&#39; 0.001 &#39;**&#39; 0.01 &#39;*&#39; 0.05 &#39;.&#39; 0.1 &#39; &#39; 1 
## 
## Residual standard error: 8.94 on 22 degrees of freedom
## Multiple R-squared: 0.906,   Adjusted R-squared: 0.902 
## F-statistic:  213 on 1 and 22 DF,  p-value: 8.64e-13
# 下面对拟合结果作图。
par(mfrow = c(2, 2))  # 把一张作图纸上分成两行两列。par() 在作图时很有用,请查看帮助。
plot(m)

plot of chunk unnamed-chunk-1

# 作图完毕。 给散点图添加拟合直线。
par(mfrow = c(1, 1))
plot(pm$h8, pm$h100, cex = 2, pch = 21, bg = "red", col = "green")
abline(m, col = "purple", lwd = 3)  # 添加趋势线
legend("bottomright", pch = c(21, NA), lty = c(NA, 1), legend = c("Data", "Linear fit"), 
    pt.bg = "red", col = c("green", "purple"), lwd = c(NA, 2))

plot of chunk unnamed-chunk-1

有用的信息:

线性拟合 lm()
非线性拟合 nls()
作图设置 par()

连载中,待续

原文链接

comments powered by Disqus