数据准备
df <- read.table(file = "D:/Documents/R wd/df.csv", header = T, sep = ",", colClasses = c(year = "character", nitrogen = "character", variety = "character", block = "character")) # 数据导入。
df # 查看数据。
## year nitrogen variety block v1 v2 v3 v4 v5
## 1 2020 N1 a 1 1.26 2.14 3.4 4.66 3.25
## 2 2020 N1 a 2 1.20 2.90 4.1 5.30 1.27
## 3 2020 N1 a 3 1.30 3.00 4.3 5.60 2.24
## 4 2020 N1 b 1 1.08 1.72 2.8 3.88 1.00
## 5 2020 N1 b 2 1.05 1.65 2.7 3.75 3.12
## 6 2020 N1 b 3 1.15 1.35 2.5 3.65 4.57
## 7 2020 N2 a 1 1.32 3.78 5.1 6.42 5.85
## 8 2020 N2 a 2 1.28 4.32 5.6 6.88 6.48
## 9 2020 N2 a 3 1.35 3.95 5.3 6.65 7.21
## 10 2020 N2 b 1 1.33 3.47 4.8 6.13 6.56
## 11 2020 N2 b 2 1.28 2.72 4.0 5.28 8.43
## 12 2020 N2 b 3 1.30 3.90 5.2 6.50 7.55
## 13 2021 N1 a 1 1.19 3.61 4.8 5.99 3.11
## 14 2021 N1 a 2 1.21 3.29 4.5 5.71 2.54
## 15 2021 N1 a 3 1.24 3.26 4.5 5.74 1.28
## 16 2021 N1 b 1 1.09 2.71 3.8 4.89 3.24
## 17 2021 N1 b 2 1.28 2.32 3.6 4.88 1.27
## 18 2021 N1 b 3 1.35 1.95 3.3 4.65 1.15
## 19 2021 N2 a 1 1.45 4.35 5.8 7.25 5.74
## 20 2021 N2 a 2 1.40 3.80 5.2 6.60 6.85
## 21 2021 N2 a 3 1.37 4.23 5.6 6.97 7.42
## 22 2021 N2 b 1 1.28 2.72 4.0 5.28 8.20
## 23 2021 N2 b 2 1.15 3.35 4.5 5.65 5.70
## 24 2021 N2 b 3 1.24 3.46 4.7 5.94 6.00
第三部分 中级方法
第8章 回归
在统计学中,回归分析(regression analysis)指的是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。回归分析按照涉及的变量的多少,分为一元回归和多元回归分析;按照因变量的多少,可分为简单回归分析和多重回归分析;按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析。
8.1 回归的多面性
8.1.1 OLS 回归的适用情境
ols 全称ordinary least squares,是回归分析(regression analysis)最根本的一个形式。OLS回归是通过预测变量的加权和来预测量化的因变量,其中权重是通过数据估计而得的参数。
8.1.2 基础回顾
8.2 OLS回归
普通最小二乘法(OLS)是一种用于在线性回归模型中估计未知参数的线性最小二乘法。
最小二乘法的主要思想是通过确定未知参数(通常是一个参数矩阵),来使得真实值和预测值的误差(也称残差)平方和最小。
为了能够恰当地解释OLS模型的系数,数据必须满足以下统计假设。
正态性 对于固定的自变量值,因变量值成正态分布。
独立性 Yi值之间相互独立。
线性 因变量与自变量之间为线性相关。
同方差性 因变量的方差不随自变量的水平不同而变化。也可称作不变方差,但是说同方差性感觉上更犀利。
8.2.1 用 lm()拟合回归模型
myfit <- lm(formula, data)
myfit:结果对象(本例中是myfit)存储在一个列表中,包含了所拟合模型的大量信息;
formula:要拟合的模型形式;
data:一个数据框,包含了用于拟合模型的数据。
表达式(formula)形式为Y ~ X1 + X2 + ... +Xk。~左边为响应变量,右边为各个预测变量,预测变量之间用+符号分隔。
当回归模型包含一个因变量和一个自变量时,我们称为简单线性回归。当只有一个预测变量,但同时包含变量的幂(比如,、 、)时,我们称之为多项式回归。当有不止一个预测变量时,则称为多元线性回归。
8.2.2 简单线性回归
线性回归使用最佳拟合直线(也称为回归线)在因变量(Y)和一个或多个自变量(X)之间建立关系。
Y = a + b * X + e
其中a是截距,b是线的斜率,e是误差项。该等式可用于基于给定的变量预测结果。
fit <- lm(v1 ~ v3, data = df) # 数据框df中v1和v5线性拟合。
summary(fit) # 显示分析结果。
##
## Call:
## lm(formula = v1 ~ v3, data = df)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.12688 -0.05952 0.01459 0.04847 0.16975
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.93854 0.07497 12.519 1.75e-11 ***
## v3 0.07325 0.01690 4.333 0.000268 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.07646 on 22 degrees of freedom
## Multiple R-squared: 0.4604, Adjusted R-squared: 0.4359
## F-statistic: 18.77 on 1 and 22 DF, p-value: 0.0002675
df$v1 # 显示数据框df中v1的数据。
## [1] 1.26 1.20 1.30 1.08 1.05 1.15 1.32 1.28 1.35 1.33 1.28 1.30 1.19 1.21 1.24
## [16] 1.09 1.28 1.35 1.45 1.40 1.37 1.28 1.15 1.24
fitted(fit) # 显示拟合值。
## 1 2 3 4 5 6 7 8
## 1.187580 1.238854 1.253503 1.143632 1.136307 1.121657 1.312101 1.348725
## 9 10 11 12 13 14 15 16
## 1.326751 1.290127 1.231529 1.319426 1.290127 1.268153 1.268153 1.216879
## 17 18 19 20 21 22 23 24
## 1.202230 1.180255 1.363375 1.319426 1.348725 1.231529 1.268153 1.282802
residuals(fit) # 显示残差。
## 1 2 3 4 5 6
## 0.072419798 -0.038853651 0.046496792 -0.063631531 -0.086306752 0.028342805
## 7 8 9 10 11 12
## 0.007898564 -0.068725328 0.023249007 0.039872899 0.048471127 -0.019426214
## 13 14 15 16 17 18
## -0.100127101 -0.058152765 -0.028152765 -0.126879316 0.077770241 0.169744577
## 19 20 21 22 23 24
## 0.086625115 0.080573786 0.021274672 0.048471127 -0.118152765 -0.042802322
plot(df$v3, df$v1, xlab = "v3", ylab = "v1") # 绘制两个变量的关系图。
abline(fit) # 添加拟合线。
得到拟合公式:
结果解读:相关系数为0.4604,p值为0.0002675,回归模型有统计意义,截距为0.93854,残差标准误为0.07646,表示模型用v3预测v1的平均误差。模式公式反映出来的信息是,v3每增加1,v1将增加0.07325。
参考资料:
- 《R语言实战》(中文版),人民邮电出版社,2013.
- 回归分析,https://baike.baidu.com/item/%E5%9B%9E%E5%BD%92%E5%88%86%E6%9E%90
- 线性回归之最小二乘法,https://zhuanlan.zhihu.com/p/90073632
- 7种回归技术,http://www.datalearner.com/blog/1051537358429810