乐趣区

关于数据挖掘:R语言使用Bass模型进行手机市场产品周期预测附代码数据

原文链接:http://tecdat.cn/?p=17725

最近咱们被客户要求撰写对于 Bass 模型的钻研报告,包含一些图形和统计输入。

巴斯 Bass 扩散模型已胜利地用于预测各种新推出的产品以及成熟产品的市场份额

次要观点

该模型的次要思维来自两个起源:

  1. 消费者不受社会影响的产品志愿。
  2. 因为其他人曾经采纳了该产品,所以偏向于采纳该产品。因而,在优质产品的生命周期中的晚期采纳者的影响变得足够弱小,以至驱使许多其他人也采纳该产品。

Bass 模型显示了如何应用销售数据的前几个期间的信息来对将来的销售做出相当好的预测。能够很容易地看出,尽管该模型来自营销畛域,但它也能够很容易地用于对现金流量的预测进行建模以确定初创公司的价值。

历史事例

Bass 模型的文献中有一些经典的例子。例如,请参见下图所示的 80 年代 VCR 的理论与预测市场增长状况。

 

 

根本思维

将单个人从零工夫到工夫 tt 购买产品的累计概率定义为 F(t)。那么,在工夫 tt 的购买概率为密度函数 f(t)= F’(t)。

从目前来看,在目前没有购买的状况下,工夫 t 的购买率合乎逻辑,即

 

建模就像在给定工夫 t 建模产品的采用率

微分方程

巴斯倡议将此采用率定义为

 

在这里,咱们能够将 p 定义为 采纳产品的消费者的  独立比率,将 q 定义为模拟率,因为 q 能够  模仿累积采纳强度 F(t)的影响。

因而,如果咱们能够找到某产品的 p 和 q,则能够预测其随着工夫的采纳,从而生成销售的工夫门路。总结一下:

  • p:翻新系数。
  • q:模拟系数。

求解 F(t)的模型

咱们重写方程:

并留神 F(0)= 0。

解决方案中的步骤是:

另一种解决方案

一种代替办法(这是学生 Muhammad Sagarwalla 依据 Alexey Orlovsky 的想法提出的)如下。

 

所以咱们写

 

 

 

咱们失去

 

 

 

与公式(*)雷同。以前的解决方案是

 

 

求解 f(t)

 

 因而,如果指标市场的大小为 m,则在每个 t 处,采用率简略地由 m×f(t)给出。

例如,设置 m = 100,000,p = 0.01 和 q = 0.2。而后,采用率如下图所示。

f = function(p,q,t) {

p = 0.01
q = 0.20
plot(t,m*f(p,q,t),type="l",col="blue",l

 

 

 


点击题目查阅往期内容

R 语言 Bass 模型进行销售预测

左右滑动查看更多

01

02

03

04

R 中的符号数学

#BASS 模型

FF = expression(p*(exp((p+q)*t)-1)/(p*exp((p+q)*t)+q))
## expression(p * (exp((p + q) * t) - 1)/(p * exp((p + q) * t) + 
##     q))
# 取导数
D(FF,"t")
## p * (exp((p + q) * t) * (p + q))/(p * exp((p + q) * t) + q) - 
##     p * (exp((p + q) * t) - 1) * (p * (exp((p + q) * t) * (p + 
##         q)))/(p * exp((p + q) * t) + q)^2
# 设置函数
ff = function(p,q,t) {res
# 评估
plot(t,m*eval(ff(p,q,t)),type="l",col="red",lwd=3)

 

 

iPhone 销售预测

例如,让咱们看一下 iPhone 销量的趋势(咱们将季度销量存储在一个文件中并读入文件,而后进行 Bass 模型剖析)。

此计算的 R 代码如下:

# 应用苹果 iPHONE 销售数据
data = read.table("tecdat/iphone.txt",header=TRUE)
 
##   Quarter Sales_MM_units
## 1   Q3_07           0.27
## 2   Q4_07           1.12
## 3   Q1_08           2.32
## 4   Q2_08           1.70
## 5   Q3_08           0.72
## 6   Q4_08           6.89
print(tail(data))
##    Quarter Sales_MM_units
## 30   Q4_14          39.27
## 31   Q1_15          74.47
## 32   Q2_15          61.17
## 33   Q3_15          47.53
## 34   Q4_15          48.05
## 35   Q1_16          74.78
## 
## Call:
## lm(formula = isales ~ cum_isales + cum_isales2)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -14.050  -3.413  -1.429   2.905  19.987 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  3.696e+00  2.205e+00   1.676   0.1034    
## cum_isales   1.130e-01  1.677e-02   6.737 1.31e-07 ***
## cum_isales2 -5.508e-05  2.110e-05  -2.610   0.0136 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.844 on 32 degrees of freedom
## Multiple R-squared:  0.8729, Adjusted R-squared:  0.865 
## F-statistic: 109.9 on 2 and 32 DF,  p-value: 4.61e-15
b = res$coefficients
# 拟合模型
m1 = (-b[2]+sqrt(b[2] 
m2 = (-b[2]-sqrt(b[2]^2-4 
 
## cum_isales cum_isales 
##  -32.20691 2083.82202
## [1] 2083.822
##                                 (Intercept)           cum_isales2 
##                "p,q=" "0.00177381124189973"   "0.114767511363674"
## 绘制拟合的模型

 
plot(t,fn_f,type="l"

lines(1:n,isales,col="red",lwd=2,lty=2)

 

三星 Galaxy 手机销量

# 读取 Galaxy 销售数据
data = read.csv("tecdat/galaxy.csv")

#获取系数

res = lm(isales ~ cum_isales+cum_isales2)
print(summary(res))

## Residuals:
##      Min       1Q   Median       3Q      Max 
## -11.1239  -6.1774   0.4633   5.0862  13.2662 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  5.375e+01  4.506e+00  11.928 2.87e-10 ***
## cum_isales   7.660e-02  1.068e-02   7.173 8.15e-07 ***
## cum_isales2 -2.806e-05  5.074e-06  -5.530 2.47e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 7.327 on 19 degrees of freedom
## Multiple R-squared:  0.8206, Adjusted R-squared:  0.8017 
## F-statistic: 43.44 on 2 and 19 DF,  p-value: 8.167e-08
b = res$coefficients

#拟合模型

m1 = (-b[2]+sqrt(b[2]^2-4*
m2 = (-b[2]-sqrt(b[2]^
print(c(m1,m2))
## cum_isales cum_isales 
##  -578.9157  3308.9652
## [1] 3308.965
##                               (Intercept)          cum_isales2 
##               "p,q=" "0.0162432614649845" "0.0928432001791269"
# 绘制拟合模型
nqtrs = 100
t=seq(0

plot(t,fn_f,type="l"

lines(1:n,isales,col="red",lwd=2,lty=2)

 

 

寰球半导体销量

# 读取半导体销售数据
data = read.csv("tecdat/semi.csv")

#获取系数
isales = d

res = lm(isales ~ cum_isales+cum_isales2)

## Residuals:
##     Min      1Q  Median      3Q     Max 
## -42.359 -12.415   0.698  12.963  45.489 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  5.086e+01  8.627e+00   5.896 3.76e-06 ***
## cum_isales   9.004e-02  9.601e-03   9.378 1.15e-09 ***
## cum_isales2 -6.878e-06  1.988e-06  -3.459  0.00196 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 21.46 on 25 degrees of freedom
## Multiple R-squared:  0.9515, Adjusted R-squared:  0.9476 
## F-statistic: 245.3 on 2 and 25 DF,  p-value: < 2.2e-16


#拟合模型
m1 = (-b[2]+sqrt(b[2]^2
m2 = (-b[2]-sqrt(b[print(c(m1,m2))
## cum_isales cum_isales 
##  -542.4036 13633.3003
## [1] 13633.3
##                                 (Intercept)           cum_isales2 
##                "p,q=" "0.00373048366213552"  "0.0937656034785294"
# 绘制拟合的模型

plot(t,fn_f,type="l",

lines(1:n,isales,col="red"

 

显示数据框:

print(df)
##       t   V2       fn_f
## 1     0 1988  50.858804
## 2     1 1989  55.630291
## 3     2 1990  60.802858
## 4     3 1991  66.400785
## 5     4 1992  72.447856
## 6     5 1993  78.966853
## 7     6 1994  85.978951
## 8     7 1995  93.503005
## 9     8 1996 101.554731
## 10    9 1997 110.145765
## 11   10 1998 119.282622
## 12   11 1999 128.965545
## 13   12 2000 139.187272

 

衡量 p vs q

在 Bass 模型中,如果模拟系数绝对于翻新系数减少,那么以下哪一项是最无效的?

  1. 产品生命周期的顶峰产生在稍后。
  2. 产品生命周期的顶峰呈现得更快。
  3. 两个生命周期顶峰的机会可能会减少。
  4. 顶峰可能迟早会呈现,具体取决于翻新系数。

应用顶峰工夫公式,用 x = q / p 代替:

x 的微分:

从 Bass 模型中,咱们晓得 q > p> 0,即 x > 1,否则咱们能够在 0≤F<1 区域取得负的接受度或形态,而没有最大值。因而,∂t∗ /∂x 的符号与:

 

然而这个非线性方程

根 x≈3.59

换句话说,当 x > 3.59 时,导数∂t∗ /∂x 为负,而当 x <3.59 时为正。对于 x = q / p 的低值,模拟系数 q 的减少会减少达到销售顶峰的工夫,而对于 q / p 的高值,工夫会随着 q 的减少而缩小。因而,该问题的正确答案仿佛是“它取决于 p 和 q 的值”。

t = seq(0,5,
.1)
p = 0.1; 

lines(t,f(p,q,t),type="l",col="red",lwd=2)

 

在图中,当 x 变小时,峰值更早。


点击文末 “浏览原文”

获取全文残缺代码数据资料。

本文选自《R 语言应用 Bass 模型进行手机市场产品周期预测》。

点击题目查阅往期内容

R 语言 Bass 模型进行销售预测
R 语言应用 Bass 模型进行手机市场产品周期预测
R 语言 Bass 模型进行销售预测
数据挖掘:香水电商销售策略剖析
机器学习助推精准销售预测
Python 对商店数据进行 lstm 和 xgboost 销售量工夫序列建模预测剖析
基于 ARIMA、SVM、随机森林销售的工夫序列预测
亚马逊商品销售数据爬虫剖析报告
R 语言工夫序列和 ARIMA 模型预测拖拉机销售的制作案例钻研
PYTHON 中用 PROPHET 模型对天气工夫序列进行预测与异样检测
R 语言用 ARIMA 模型,ARIMAX 模型预测冰淇淋生产工夫序列数据
Python 用 ARIMA 和 SARIMA 模型预测销量工夫序列数据

退出移动版