R语言绘制线性回归图

线性回归图以二维坐标系展示两个变量关系。数据点代表实际观测值,核心是线性回归线。此线通过统计方法确定,与数据点距离平方和最小。它反映变量间线性趋势,斜率正负决定相关方向。可用于预测因变量值,也能进行推断统计。在数据分析、科学研究和实际应用中广泛使用,帮助人们理解变量关系、做出决策。

0x01 使用lm()函数

r 复制代码
# 创建一些示例数据
x <- c(1:10)
y <- c(2, 4.5, 5, 7, 8.5, 9, 11, 12.5, 13, 14)

# 绘制散点图
plot(x, y, main = "线性回归图", xlab = "自变量 X", ylab = "因变量 Y")

# 进行线性回归分析
model <- lm(y ~ x)

# 在散点图上添加线性回归线
abline(model, col = "red")

# 输出回归方程
cat("回归方程:Y =", coef(model)[1], "+", coef(model)[2], "* X\n")

一、可以试用summary(model)来展示拟合的详细结果,其结果一般包含以下几个内容:

1.Call(调用信息)

显示用于创建线性回归模型的函数调用,包括模型公式和使用的数据。例如,如果使用lm(y ~ x)创建模型,这里会显示lm(formula = y ~ x)

2.Residuals(残差信息)

2.1 提供关于残差的一些基本统计信息,包括最小值、1 四分位数、中位数、3 四分位数和最大值。

2.2 残差是观测值与模型预测值之间的差异,分析残差可以帮助评估模型的拟合程度。

3.Coefficients(系数信息)

3.1 列出模型的系数估计值,包括截距(Intercept)和自变量的系数。

3.2 对于每个系数,提供估计值(Estimate)、标准误差(Std. Error)、t 值(t value)和 p 值(Pr (>|t|))。

3.3 估计值表示系数的大小,标准误差衡量估计值的不确定性。t 值用于检验系数是否显著不为零,p 值表示在原假设(系数为零)下观察到当前估计值或更极端值的概率。如果 p 值很小(通常小于某个显著性水平,如 0.05),则表明该系数在统计上是显著的。

4.Residual standard error(残差标准误差)

给出残差的标准误差估计值。它衡量了模型对数据的拟合程度,值越小表示模型拟合越好。

5.Multiple R-squared(复相关系数平方)和 Adjusted R-squared(调整后的复相关系数平方)

5.1 复相关系数平方表示因变量的变异中可以由自变量解释的比例。它的取值范围在 0 到 1 之间,值越接近 1 表示模型的拟合效果越好。

5.2 调整后的复相关系数平方考虑了模型中自变量的数量,防止随着自变量的增加而过度拟合。它在比较不同模型时更有用。

6.F-statistic(F 统计量)

用于检验整个模型的显著性。它比较了模型的解释能力与仅包含截距的模型。F 统计量大且对应的 p 值小表示模型在整体上是显著的。

总之,summary(model)提供了丰富的信息,帮助用户评估线性回归模型的质量、系数的显著性以及模型的整体拟合程度。

二、可以用fitted(model)来获取线性回归模型的拟合值。

三、可以用residuals(model)来获取线性回归模型的残差。

四、我们还可以根据我们的模型,对他进行一个随意的赋值,然后预测五门所想要的y值。

r 复制代码
# 创建一个数据框 new,包含一个值为 3.16 的列 x,用于新数据点的预测
new <- data.frame(x = 3.16)
# 使用已建立的线性回归模型 model 对新数据 new 进行预测
# interval = "prediction" 表示计算预测区间
# level = 0.95 指定预测区间的置信水平为 95%
lm.pred <- predict(model, new, interval = "prediction", level = 0.95)
# 输出预测结果,包含点预测值以及 95%预测区间的上下限
lm.pred

通常返回的内容一般包括以下内容:

1.fit:点预测值,即对于给定的新x值,预测的因变量值。

2.lwrupr:95% 预测区间的下限和上限。

0x02 使用ggplot2包

一、使用stat_smooth()函数绘制线性回归图。

r 复制代码
library(ggplot2)

# 创建一个数据框 mydata,包含两列 x 和 y,x 是从 1 到 10 的整数序列,y 是一组对应的值
mydata <- data.frame(x = c(1:10), y = c(2, 4.5, 5, 7, 8.5, 9, 11, 12.5, 13, 14))

# 创建一个 ggplot 对象 sp,以 mydata 为基础,将 x 和 y 分别映射到横纵坐标,添加散点图 geom_point()
sp <- ggplot(mydata, aes(x, y)) +
  geom_point()

# 在 sp 对象上添加基于线性回归的平滑曲线,使用 stat_smooth()函数,method = lm 表示使用线性回归方法
sp + stat_smooth(method = lm)

二、可以使用level参数指定置信区间的水平。

r 复制代码
sp + stat_smooth(method = lm, level = 0.99)

三、可以使用se = FALSE参数使绘制的线性回归图不显示标准误差带。

r 复制代码
sp + stat_smooth(method = lm, se = FALSE)

四、调整与美化

r 复制代码
# 使用 ggplot2 进行绘图
# 以数据框 mydata 为基础,将 x 列映射到横坐标,y 列映射到纵坐标
ggplot(mydata,aes(x,y)) +
  # 添加散点图,点的颜色设置为暗红色
  geom_point(colour = "darkred") +
  # 添加基于线性回归的平滑曲线,曲线颜色为黑色
  stat_smooth(method = lm,colour = "black") +
  # 设置图形的标题为"picture",横坐标标签为"year",纵坐标标签为"weight"
  labs(title = "picture",x = "year",y = "weight") +
  # 设置图形主题,使标题水平居中
  theme(plot.title = element_text(hjust = 0.5))
相关推荐
isyangli_blog2 小时前
OpenDayLight (Carbon 版本) 启动与组件安装
开发语言·php
vb2008112 小时前
FastAPI APIRouter
开发语言·python
Benszen2 小时前
KVM虚拟化解决方案
开发语言·perl
会编程的土豆2 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木2 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
杨充3 小时前
1.3 浮点型数据设计灵魂
开发语言·python·算法
噜噜噜阿鲁~3 小时前
python学习笔记 | 11.3、面向对象高级编程-多重继承
java·开发语言
basketball6163 小时前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang
哥布林学者3 小时前
深度学习进阶(二十六)现代 LLM 的核心架构设计其一:RMSNorm
机器学习·ai
春生野草3 小时前
反射、Tomcat执行
java·开发语言