首页 > 其他分享 >R语言使用Bass模型进行手机市场产品周期预测|附代码数据

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

时间:2024-02-23 11:12:45浏览次数:19  
标签:isales ## 代码 预测 cum 模型 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模型预测销量时间序列数据

标签:isales,##,代码,预测,cum,模型,Bass
From: https://www.cnblogs.com/tecdat/p/18029053

相关文章

  • R语言逻辑回归(Logistic Regression)、回归决策树、随机森林信用卡违约分析信贷数据集
    原文链接:http://tecdat.cn/?p=23344最近我们被客户要求撰写关于信用卡违约分析的研究报告,包括一些图形和统计输出。本文中我们介绍了决策树和随机森林的概念,并在R语言中用逻辑回归、回归决策树、随机森林进行信用卡违约数据分析决策树是由节点和分支组成的简单树状结构。根据每......
  • 代码+案例,实战解析BeautifulSoup4
    本文分享自华为云社区《从HTML到实战:深入解析BeautifulSoup4的爬虫奇妙世界》,作者:柠檬味拥抱。网络上的信息浩如烟海,而爬虫技术正是帮助我们从中获取有用信息的重要工具。在爬虫过程中,解析HTML页面是一个关键步骤,而BeautifulSoup4正是一款功能强大的解析器,能够轻松解析HTML和XML......
  • 代码随想录 day58 判断子序列 不同的子序列
    判断子序列dp[i][j]表示以下标i-1为结尾的字符串s,和以下标j-1为结尾的字符串t,相同子序列的长度为dp[i][j]。if(s[i-1]==t[j-1])t中找到了一个字符在s中也出现了if(s[i-1]!=t[j-1])相当于t要删除元素,继续匹配不同的子序列dp[i][j]:以i-1为结尾的s子序列中......
  • 欢迎 Gemma: Google 最新推出开源大语言模型
    今天,Google发布了一系列最新的开放式大型语言模型——Gemma!Google正在加强其对开源人工智能的支持,我们也非常有幸能够帮助全力支持这次发布,并与HuggingFace生态完美集成。Gemma提供两种规模的模型:7B参数模型,针对消费级GPU和TPU设计,确保高效部署和开发;2B参数模型则......
  • 开源大语言模型作为 LangChain 智能体
    概要开源大型语言模型(LLMs)现已达到一种性能水平,使它们适合作为推动智能体工作流的推理引擎:Mixtral甚至在我们的基准测试中超过了GPT-3.5,并且通过微调,其性能可以轻易的得到进一步增强。引言针对因果语言建模训练的大型语言模型(LLMs)可以处理广泛的任务,但它们经常......
  • paddlepaddle推理部署模型转onnx模型与onnx推理
    1.ONNX(OpenNeuralNetworkExchange)ONNX是一个开放的神经网络交换格式,它旨在提供一个统一的框架,使深度学习模型能够在不同的深度学习框架之间进行交换和共享。主要目标是解决深度学习框架之间的互操作性问题。在深度学习领域,有许多不同的框架,如TensorFlow、PyTorch、Caff......
  • 从源代码到可执行文件
    编写好源文件之后,对源文件进行编译和链接就可以生成可执行文件了。编译和链接的操作需要使用编译器和链接器来完成。不同编译语言所编写的源代码翻译成本机代码之后就成了同一种语言。负责将用C语言等高级语言编写的源代码翻译成本机代码的程序称为编译器,用不同的编译语言编写的源......
  • 感知面试手撕代码
    *给你三个点,怎么计算三个夹角的角度?思路:用点积除叉积python:importnumpyasnpdefangle_between(v1,v2):"""Returnstheangleinradiansbetweenvectors'v1'and'v2'"""cosang=np.dot(v1,v2)sinang=np.linal......
  • 水资源管理的“千里眼”:揭秘管道蓄水可视化模型的力量
    随着水资源日益紧缺,合理、高效的水资源管理变得至关重要。而在这个领域,管道蓄水3D模型,让我们能够更直观、更深入地了解水资源的流动和储存情况。 一、揭秘管道蓄水可视化模型管道蓄水3D模型运用先进的数字孪生和3D建模技术,将水管道系统中的水流、水位、水质等数据进行实时采集......
  • 代码随想录算法训练营day02 | leetcode 977. 有序数组的平方、35.搜索插入位置、34.在
    题目链接:977.有序数组的平方-简单题目描述:给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例1:输入:nums=[-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为[16,1,0,9,100]排序后,数组变为[0,1,9,16,100]......