使用r语言预测产品销量

Tensor Tensor     2022-09-02     490

关键词:

使用R语言预测产品销量

 

通过不同的广告投入,预测产品的销量。因为响应变量销量是一个连续的值,所以这个问题是一个回归问题。数据集共有200个观测值,每一组观测值对应一种市场情况。

 

数据特征

  • TV:对于一个给定市场的单一产品,用于电视上的广告费用(以千为单位)
  • Radio:用于广告媒体上投资的广告费用
  • Newspaper:用于报纸媒体上的广告费用

响应

  • Sales:对应产品的销量

 

加载数据

> data <- read.csv("http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv",colClasses=c("NULL",NA,NA,NA,NA))
> head(data)     
  TV Radio Newspaper Sales
1 230.1  37.8      69.2  22.1
2  44.5  39.3      45.1  10.4
3  17.2  45.9      69.3   9.3
4 151.5  41.3      58.5  18.5
5 180.8  10.8      58.4  12.9
6   8.7  48.9      75.0   7.2
# 显示Sales和TV的关系
> plot(data$TV, data$Sales, col="red", xlab='TV', ylab='sales')

# 用线性回归拟合Sales和TV广告的关系
> fit=lm(Sales~TV,data=data)
# 查看估算出来的系数
> coef(fit)
(Intercept)          TV 
 7.03259355  0.04753664
# 显示拟合出来的模型的线
> abline(fit)

# 显示Sales和Radio的关系
> plot(data$Radio, data$Sales, col="red", xlab='Radio', ylab='Sales')

# 用线性回归拟合Sales和Radio广告的关系
> fit1=lm(Sales~Radio,data=data)
# 查看估算出来的系数
> coef(fit1)
(Intercept)       Radio 
  9.3116381   0.2024958
# 显示拟合出来的模型的线
> abline(fit1)

# 显示Sales和Newspaper的关系
> plot(data$Newspaper, data$Sales, col="red", xlab='Radio', ylab='Sales')

# 用线性回归拟合Sales和Radio广告的关系
> fit2=lm(Sales~Newspaper,data=data)
# 查看估算出来的系数
> coef(fit2)
(Intercept)   Newspaper 
 12.3514071   0.0546931
# 显示拟合出来的模型的线
> abline(fit2)

# 创建散点图矩阵
> pairs(~Sales+TV+Radio+Newspaper,data=data, main="Scatterplot Matrix")

第一行图形显示TVRadioNewspaperSales的影响。纵轴为Sales,横轴分别为TVRadioNewspaper。从图中可以看出,TV特征和销量是有比较强的线性关系的。

划分训练集和测试集

> trainRowCount <- floor(0.8 * nrow(data))
> set.seed(1)
> trainIndex <- sample(1:nrow(data), trainRowCount)
> train <- data[trainIndex,]
> test <- data[-trainIndex,]
> dim(data)
[1] 200   4
> dim(train)
[1] 160   4
> dim(test)
[1] 40  4

拟合线性回归模型

> model <- lm(Sales~TV+Radio+Newspaper, data=train)
> summary(model)
Call:
lm(formula = Sales ~ TV + Radio + Newspaper, data = train)

Residuals:
    Min      1Q  Median      3Q     Max 
-8.7734 -0.9290  0.2475  1.2213  2.8971 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)  2.840243   0.353175   8.042 2.07e-13 ***
TV           0.046178   0.001579  29.248  < 2e-16 ***
Radio        0.189668   0.009582  19.795  < 2e-16 ***
Newspaper   -0.001156   0.006587  -0.176    0.861    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.745 on 156 degrees of freedom
Multiple R-squared:  0.8983,    Adjusted R-squared:  0.8963 
F-statistic: 459.2 on 3 and 156 DF,  p-value: < 2.2e-16

预测和计算均方根误差

> predictions <- predict(model, test)
> mean((test["Sales"] - predictions)^2)
[1] 2.050666

特征选择

在之前的各变量和销量之间关系中,我们看到Newspaper和销量之间的线性关系比较弱,并且上面模型中Newspaper的系数为负数,现在去掉这个特征,看看线性回归预测的结果的均方根误差。

 

> model1 <- lm(Sales~TV+Radio, data=train)
> summary(model1)
Call:
lm(formula = Sales ~ TV + Radio, data = train)

Residuals:
    Min      1Q  Median      3Q     Max 
-8.7434 -0.9121  0.2538  1.1900  2.9009 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 2.821417   0.335455   8.411 2.35e-14 ***
TV          0.046157   0.001569  29.412  < 2e-16 ***
Radio       0.189132   0.009053  20.891  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.74 on 157 degrees of freedom
Multiple R-squared:  0.8983,    Adjusted R-squared:  0.897 
F-statistic:   693 on 2 and 157 DF,  p-value: < 2.2e-16

> predictions1 <- predict(model1, test)
> mean((test["Sales"] - predictions1)^2)
[1] 2.050226

 

从上可以看到2.050226<2.050666,将Newspaper这个特征移除后,得到的均方根误差变小了,说明Newspaper不适合作为预测销量的特征,则去掉Newspaper特征后得到了新的模型。

基于steam的游戏销量预测—part1—爬取steam游戏相关数据的爬虫

...steam游戏标签,评论,以及在steamspy爬取对应游戏的销量使用相关:urllib,lxml,selenium,chrome解释:  流程图如下  1.首先通过steam商店搜索页面的链接,打开steam搜索页面,然后用如下正则表达式来得到前100个左右的游戏的... 查看详情

股市预测,销量预测,病毒传播...一个时间序列建模套路搞定全部!⛵

股市预测,销量预测,病毒传播...使用Merlion时间序列建模搞定全部!本文详解全部流程:加载和转换数据、建立和训练模型、模型结果后处理、评估模型性能。股市预测,销量预测,病毒传播...使用Merlion时间序列建模搞定全部... 查看详情

如何在R中预测多个时间序列

...0个产品(50列)。每列都有一个产品的每日销售额。我想使用ets预测这些产品。所以我在下面创建了这段代码,当我运行它时,我只得到一个时间序列和一些我不理解的信息。在此先感谢:)y<-read.csv(" 查看详情

r语言时间序列(timeseries)分析实战:使用arima模型预测时间序列

R语言时间序列(timeseries)分析实战:使用ARIMA模型预测时间序列目录 查看详情

r语言使用gls函数拟合模型并可视化模型的预测值及其置信区间实战

R语言使用gls函数拟合模型并可视化模型的预测值及其置信区间实战 目录R语言使用gls函数拟合模型并可视化模型的预测值及其置信区间实 查看详情

r语言构建xgboost模型:使用xgboost的第一颗树(前n颗树)进行预测推理或者使用全部树进行预测推理比较误分类率指标

R语言构建xgboost模型:使用xgboost的第一颗树(前N颗树)进行预测推理或者使用全部树进行预测推理、比较误分类率指标目录 查看详情

获得新观察的预测(R 编程语言)

...guage)【发布时间】:2021-11-0513:21:12【问题描述】:我正在使用R编程语言。我在R中为这个数据集创建了一个决策树(预测“diabetes”列是“pos”还是“neg”):#loadlibrarieslibrary(pdp)library(C50)#loaddata 查看详情

r语言使用线性回归模型来预测(predict)单个样本的目标值(响应值response)实战

R语言使用线性回归模型来预测(predict)单个样本的目标值(响应值、response)实战目录 查看详情

r语言使用机器学习算法预测股票市场

quantmod介绍quantmod是一个非常强大的金融分析报,包含数据抓取,清洗,建模等等功能.1.获取数据 getSymbols  默认是数据源是yahoo    获取上交所股票为getSymbols("600030.ss"),深交所为getSymbols("000002.sz"). ss表示上交所... 查看详情

r语言使用lm函数拟合多元线性回归模型假定预测变量之间有交互作用(multiplelinearregressionwithinteractions)

R语言使用lm函数拟合多元线性回归模型、假定预测变量之间有交互作用(Multiplelinearregressionwithinteractions) 目录 查看详情

2022年全球市场牙科激光设备总体规模主要生产商主要地区产品和应用细分研究报告

...市场份额等。针对未来几年基于区块链的身份的发展前景预测,本文预测到2028年,主要包括全球和主要地区销量、收入的预测,分类销量和收入的预测,以及主要应用基于区块链的身份的销量和收入预测等。据GIR... 查看详情

r语言使用赤信息指标aic函数比较两个回归分析模型的差异从而决定是否删除某些预测变量(comparingmodelswiththeaic)

R语言使用赤信息指标AIC函数比较两个回归分析模型的差异、从而决定是否删除某些预测变量(ComparingmodelswiththeAIC)目录 查看详情

r语言构建xgboost模型预测推理:输出预测概率预测标签

 R语言构建xgboost模型、预测推理:输出预测概率、预测标签目录 R 查看详情

用户画像销量预测微观宏观bi

...我们业务的bi做的思路是什么呢 数据中心怎么做销量预测呢 没有购买者个体的微观的行为历史记录预测怎么做总体的宏观的销量预测呢? 实体的商超像沃尔玛家乐福华润万家他们是怎么玩的呢   查看详情

r语言实战应用精讲50篇(二十)-r语言时间序列预测模型:arimavsknn(代码片段)

...模型来预测时间序列数据总是很困难。其中一个原因是,使用时间序列数据的模型往往会暴露出序列相关性。在这篇文章中,我们将比较经典的随机过程--自回归移动平均(ARIMA)。k近邻(KNN)回归(一种有监督的机器学习方法... 查看详情

r语言实战应用精讲50篇(二十)-r语言时间序列预测模型:arimavsknn(代码片段)

...模型来预测时间序列数据总是很困难。其中一个原因是,使用时间序列数据的模型往往会暴露出序列相关性。在这篇文章中,我们将比较经典的随机过程--自回归移动平均(ARIMA)。k近邻(KNN)回归(一种有监督的机器学习方法... 查看详情

r语言构建logistic回归模型并评估模型:模型预测结果抽样可视化模型分类预测的概率分布情况使用wvplots包绘制roc曲线并计算auc值

R语言构建logistic回归模型并评估模型:模型预测结果抽样、可视化模型分类预测的概率分布情况、使用WVPlots包绘制ROC曲线并计算AUC值目录 查看详情

我如何在 R 中为多个产品做自动 arima?

...1-11-1501:59:46【问题描述】:我正在R中创建自动arima模型来预测我的需求。我为1个产品及其工作做这件事。我以xlsx格式导出,分列:Sku(产品),日期预测(未来3个月)点预测,低95%和高95%。我的代码是:ps:葡萄牙语中的变量... 查看详情