- R 菜鸟教程
- R - 教程
- R - 概述
- R - 环境设置
- R - 基本语法
- R - 数据类型
- R - 变量
- R - 运算符
- R - 判断语句
- R - Loop (循环)
- R - 函数
- R - 字符串
- R - 矢量
- R - 列表
- R - 矩阵
- R - 数组
- R - 因子
- R - 数据帧
- R - 包(Packages)
- R - 数据重塑
- R 数据接口
- R - CSV 文件
- R - Excel 文件
- R - 二进制文件
- R - XML 文件
- R - JSON 文件
- R - Web 数据
- R - 数据库
- R 图表和图形
- R - 饼图
- R - 条形图
- R - 箱线图
- R - 直方图
- R - 折线图
- R - 散点图
- R 统计示例
- R - 平均值、中位数和众数
- R - 线性回归
- R - 多元回归
- R - Logistic 回归
- R - 正态分布
- R - 二项分布
- R - 泊松回归
- R - 协方差分析
- R - 时间序列分析
- R - 非线性最小二乘法
- R - 决策树
- R - 随机森林
- R - 生存分析
- R - 卡方检验
R - 线性回归
回归分析是一种非常广泛使用的统计工具,用于建立两个变量之间的关系模型。其中一个变量称为预测变量,其值是通过实验收集的。另一个变量称为响应变量,其值派生自预测变量。
在线性回归中,这两个变量通过一个方程式关联,其中这两个变量的指数(幂)为 1。从数学上讲,线性关系在绘制为图形时表示一条直线。任何变量的指数不等于 1 的非线性关系将创建曲线。
线性回归的一般数学方程为 −
y = ax + b
以下是所用参数的描述 -
- y 是响应变量。
- x 是预测变量。
- a 和 b 是称为系数的常数。
建立回归的步骤
回归的一个简单示例是在知道一个人的身高时预测他的体重。要做到这一点,我们需要有一个人的身高和体重之间的关系。
创建关系的步骤是 -
- 进行收集身高和相应体重的观测值的样本的实验。
- 使用 R 中的 lm() 函数创建关系模型。
- 从创建的模型中找到系数,并使用这些系数创建数学方程
- 获取关系模型的摘要以了解预测中的平均误差。也称为残差。
- 要预测新人的体重,请使用 R 中的 predict() 函数。
输入数据
以下是代表观察结果的示例数据 -
# 高度值
151, 174, 138, 186, 128, 136, 179, 163, 152, 131
# 重量值。
63, 81, 56, 91, 47, 57, 76, 72, 62, 48
151, 174, 138, 186, 128, 136, 179, 163, 152, 131
# 重量值。
63, 81, 56, 91, 47, 57, 76, 72, 62, 48
lm() 函数
此函数在预测变量和响应变量之间创建关系模型。
语法
线性回归中 lm() 函数的基本语法是 −
lm(formula,data)
以下是所用参数的描述 -
- 公式是表示 x 和 y 之间关系的符号。
- data 是将应用公式的向量。
创建关系模型并获取系数
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
# 应用lm()函数。
relation <- lm(y~x)
print(relation)
当我们执行上述代码时,它会产生以下结果——
Call:
lm(formula = y ~ x)
Coefficients:
(Intercept) x
-38.4551 0.6746
lm(formula = y ~ x)
Coefficients:
(Intercept) x
-38.4551 0.6746
获取关系摘要
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
# 应用lm()函数。
relation <- lm(y~x)
print(summary(relation))
当我们执行上述代码时,它会产生以下结果——
Call:
lm(formula = y ~ x)
Residuals:
Min 1Q Median 3Q Max
-6.3002 -1.6629 0.0412 1.8944 3.9775
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -38.45509 8.04901 -4.778 0.00139 **
x 0.67461 0.05191 12.997 1.16e-06 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3.253 on 8 degrees of freedom
Multiple R-squared: 0.9548, Adjusted R-squared: 0.9491
F-statistic: 168.9 on 1 and 8 DF, p-value: 1.164e-06
lm(formula = y ~ x)
Residuals:
Min 1Q Median 3Q Max
-6.3002 -1.6629 0.0412 1.8944 3.9775
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -38.45509 8.04901 -4.778 0.00139 **
x 0.67461 0.05191 12.997 1.16e-06 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 3.253 on 8 degrees of freedom
Multiple R-squared: 0.9548, Adjusted R-squared: 0.9491
F-statistic: 168.9 on 1 and 8 DF, p-value: 1.164e-06
predict() 函数
语法
线性回归中 predict() 的基本语法是 -
predict(object, newdata)
以下是所用参数的描述 -
- object 是已使用 lm() 函数创建的公式。
- newdata 是包含 predictor 变量的新值的向量。
预测新用户的权重
# 预测向量。
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
# resposne载体。
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
# 应用lm()函数。
relation <- lm(y~x)
# 计算身高170的人的体重。
a <- data.frame(x = 170)
result <- predict(relation,a)
print(result)
当我们执行上述代码时,它会产生以下结果——
1
76.22869
76.22869
以图形方式可视化回归
# 创建预测器和响应变量。
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131)
y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48)
relation <- lm(y~x)
# 为图表文件命名。
png(file = "linearregression.png")
# 绘制图表。
plot(y,x,col = "blue",main = "Height & Weight Regression",
abline(lm(x~y)),cex = 1.3,pch = 16,xlab = "Weight in Kg",ylab = "Height in cm")
# 保存文件。
dev.off()
当我们执行上述代码时,它会产生以下结果——