很多人在做数据分析时都会遇到一个常见问题:两个变量之间有没有关系?比如广告投入和销售额是不是正相关?这时候回归分析就派上用场了。R语言作为统计分析的利器,做回归分析不仅方便,而且结果清晰直观。
准备数据:从简单例子开始
假设你是一家小店老板,记录了最近10天的广告花费和当天的销售额。你想知道多投广告能不能带来更高收入。数据可以这样输入:
ad_spend <- c(2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
sales <- c(20, 25, 30, 40, 45, 50, 55, 60, 65, 70)
data <- data.frame(ad_spend, sales)
这里创建了一个包含两列的数据框,ad_spend 是广告支出,sales 是销售额。接下来就可以用线性回归来建模了。
用lm()函数做线性回归
R里最核心的回归函数是 lm()。语法很简单,格式是“因变量 ~ 自变量”:
model <- lm(sales ~ ad_spend, data = data)
这行代码的意思是:用 ad_spend 预测 sales。模型已经存进变量 model 里了,现在可以查看结果:
summary(model)
运行后会输出一堆信息,重点关注几个地方:系数(Estimate)那一列,intercept 是截距,ad_spend 对应的值是斜率。如果斜率是正的,说明广告花得越多,销售额越高。
画图看看拟合效果
光看数字不够直观,画个散点图加回归线更清楚:
plot(data$ad_spend, data$sales, main="广告支出 vs 销售额", xlab="广告支出", ylab="销售额")
abline(model, col="red")
图上每个点代表一天的数据,红线就是模型拟合出来的趋势线。如果点都靠近红线,说明模型效果不错。
预测新数据
现在你知道每天花多少钱打广告,也能预估能赚多少了。比如明天打算花12块做广告,可以这样预测:
new_data <- data.frame(ad_spend = 12)
predict(model, new_data)
返回的结果就是预计的销售额。这对安排预算很有帮助。
多个变量也能处理
现实中影响销售的因素不止一个,可能还有促销活动、天气等。R也能轻松应对多变量情况。比如再加上一个促销变量:
promotion <- c(0, 1, 0, 1, 0, 1, 0, 1, 0, 1)
data <- data.frame(ad_spend, sales, promotion)
model_multi <- lm(sales ~ ad_spend + promotion, data = data)
summary(model_multi)
这时输出里会分别显示广告支出和促销活动的影响。如果两个变量的p值都小,说明它们对销售都有显著作用。
做回归分析不是为了炫技,而是为决策提供依据。R语言把复杂的计算过程简化成几行代码,真正让你把精力放在理解数据背后的意义上。