R语言:为波士顿房价散点图添加最优拟合线及技术咨询
回答你的问题:是否需要计算截距和斜率?怎么操作?
Great question! Let's break this down step by step for you:
核心结论:不需要手动提前计算截距和斜率
R的内置函数可以直接帮你完成最优拟合线的绘制,同时如果你需要截距、斜率的具体数值,或者要验证RM的显著性,也能轻松提取相关结果——完全不用手动计算。
步骤1:绘制散点图并叠加线性拟合线(原始数据)
基于你已有的代码,只需要加一行就能叠加拟合线,自动帮你计算最优的截距和斜率:
# 读取数据集 BostonHousingW.df <- read.csv("BostonHousing.csv") # 绘制散点图 plot(BostonHousingW.df$Price ~ BostonHousingW.df$RM, xlab="Avg # of Rooms", ylab="Median Home Price", main="Boston Housing Data\n Median Home Price and Avg # of Rooms") # 叠加最优线性拟合线(自动计算截距和斜率) abline(lm(Price ~ RM, data=BostonHousingW.df), col="red", lwd=2)
这里的lm()函数会自动完成线性回归拟合,算出最优的截距和斜率,abline()直接调用这个模型就能把拟合线画在散点图上(col="red"和lwd=2是美化参数,让拟合线更显眼)。
步骤2:如果需要获取截距和斜率的具体数值
如果你想查看这些数值,或者需要用它们做后续预测/分析,可以先拟合模型再提取:
# 拟合线性回归模型 lm_model <- lm(Price ~ RM, data=BostonHousingW.df) # 直接提取截距和斜率 coef(lm_model) # 输出示例: # (Intercept) RM # -34.67062 9.10211
更重要的是,如果你要判断RM是否显著(是否对Price有线性影响),可以用summary()查看详细统计结果:
summary(lm_model)
在输出里重点看RM对应的Pr(>|t|)值:
- 如果这个值小于0.05(常用的显著性水平),结合散点图的线性趋势,说明RM对Price有显著线性影响,应该保留;
- 如果p值很大且散点图没有明显趋势,就考虑把RM从后续的对数线性回归中剔除。
关于后续对数线性回归和预测的小提示
如果你后续要做ln(Price)的对数线性回归,拟合和绘图的逻辑类似,这里给你一个快速示例:
# 拟合对数线性模型 log_lm_model <- lm(log(Price) ~ RM, data=BostonHousingW.df) # 绘制原始Price vs RM的散点图,叠加对数模型的拟合线(转换回原始价格尺度) plot(BostonHousingW.df$Price ~ BostonHousingW.df$RM, xlab="Avg # of Rooms", ylab="Median Home Price", main="Boston Housing Data\n Median Home Price and Avg # of Rooms (Log-Linear Fit)") # 生成RM序列的预测值(转换回原始价格尺度) rm_seq <- seq(min(BostonHousingW.df$RM), max(BostonHousingW.df$RM), length.out=100) pred_price <- exp(predict(log_lm_model, newdata=data.frame(RM=rm_seq))) # 绘制对数模型的拟合线 lines(rm_seq, pred_price, col="blue", lwd=2)
内容的提问来源于stack exchange,提问作者Andrea Whittaker
相关产品推荐
相关产品推荐

