这一篇,我们试着进行线性拟合,示例所用的数据仍然是前两篇中的北京 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 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 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)
# 作图完毕。 给散点图添加拟合直线。
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))
有用的信息:
– | – |
---|---|
线性拟合 | lm() |
非线性拟合 | nls() |
作图设置 | par() |
( 连载中,待续 )