R語(yǔ)言使用Bass模型進(jìn)行手機(jī)市場(chǎng)產(chǎn)品周期預(yù)測(cè)|附代碼數(shù)據(jù)
原文鏈接:http://tecdat.cn/?p=17725
最近我們被客戶要求撰寫關(guān)于Bass模型的研究報(bào)告,包括一些圖形和統(tǒng)計(jì)輸出。
巴斯Bass擴(kuò)散模型已成功地用于預(yù)測(cè)各種新推出的產(chǎn)品以及成熟產(chǎn)品的市場(chǎng)份額
主要觀點(diǎn)
該模型的主要思想來(lái)自兩個(gè)來(lái)源:
消費(fèi)者不受社會(huì)影響的產(chǎn)品意愿。
因?yàn)槠渌艘呀?jīng)采用了該產(chǎn)品,所以傾向于采用該產(chǎn)品。因此,在優(yōu)質(zhì)產(chǎn)品的生命周期中的早期采用者的影響變得足夠強(qiáng)大,以致驅(qū)使許多其他人也采用該產(chǎn)品。
Bass模型顯示了如何使用銷售數(shù)據(jù)的前幾個(gè)時(shí)期的信息來(lái)對(duì)未來(lái)的銷售做出相當(dāng)好的預(yù)測(cè)。可以很容易地看出,雖然該模型來(lái)自營(yíng)銷領(lǐng)域,但它也可以很容易地用于對(duì)現(xiàn)金流量的預(yù)測(cè)進(jìn)行建模以確定初創(chuàng)公司的價(jià)值。
歷史事例
Bass模型的文獻(xiàn)中有一些經(jīng)典的例子。例如,請(qǐng)參見下圖所示的80年代VCR的實(shí)際與預(yù)測(cè)市場(chǎng)增長(zhǎng)情況。
?
?
基本思想
將單個(gè)人從零時(shí)間到時(shí)間tt購(gòu)買產(chǎn)品的累計(jì)概率定義為F(t)。那么,在時(shí)間tt的購(gòu)買概率為密度函數(shù)f(t)= F'(t)。
從目前來(lái)看,在目前沒有購(gòu)買的情況下,時(shí)間t的購(gòu)買率符合邏輯,即
?
建模就像在給定時(shí)間t建模產(chǎn)品的采用率
微分方程
巴斯建議將此采用率定義為
?
在這里,我們可以將p定義為?采用產(chǎn)品的消費(fèi)者的??獨(dú)立比率,將q定義為模仿率,因?yàn)閝可以??模擬累積采用強(qiáng)度F(t)的影響。
因此,如果我們可以找到某產(chǎn)品的p和q,則可以預(yù)測(cè)其隨著時(shí)間的采用,從而生成銷售的時(shí)間路徑??偨Y(jié)一下:
p:創(chuàng)新系數(shù)。
q:模仿系數(shù)。
求解F(t)的模型
我們重寫方程:
并注意F(0)= 0。
解決方案中的步驟是:
另一種解決方案
一種替代方法(這是學(xué)生Muhammad Sagarwalla根據(jù)Alexey Orlovsky的想法提出的)如下。
?
所以我們寫
?
?
?
我們得到
?
?
?
與公式(*)相同。以前的解決方案是
?
?
求解f(t)
?
?因此,如果目標(biāo)市場(chǎng)的大小為m,則在每個(gè)t處,采用率簡(jiǎn)單地由m×f(t)給出。
例
例如,設(shè)置m = 100,000,p = 0.01和q = 0.2。然后,采用率如下圖所示。
f = function(p,q,t) {p = 0.01q = 0.20plot(t,m*f(p,q,t),type="l",col="blue",l
?
?
?
點(diǎn)擊標(biāo)題查閱往期內(nèi)容
R語(yǔ)言Bass模型進(jìn)行銷售預(yù)測(cè)
左右滑動(dòng)查看更多
01
02
03
04
R中的符號(hào)數(shù)學(xué)
#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ǎo)數(shù)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
#設(shè)置函數(shù)ff = function(p,q,t) {
? ?res
#評(píng)估plot(t,m*eval(ff(p,q,t)),type="l",col="red",lwd=3)
?
?
iPhone銷售預(yù)測(cè)
例如,讓我們看一下iPhone銷量的趨勢(shì)(我們將季度銷量存儲(chǔ)在一個(gè)文件中并讀入文件,然后進(jìn)行Bass模型分析)。
此計(jì)算的R代碼如下:
#使用蘋果iPHONE銷售數(shù)據(jù)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手機(jī)銷量
#讀取Galaxy銷售數(shù)據(jù)data = read.csv("tecdat/galaxy.csv")#獲取系數(shù)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 = 100t=seq(0plot(t,fn_f,type="l"lines(1:n,isales,col="red",lwd=2,lty=2)
?
?
全球半導(dǎo)體銷量
#讀取半導(dǎo)體銷售數(shù)據(jù)data = read.csv("tecdat/semi.csv")#獲取系數(shù)isales = dres = 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]^2m2 = (-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"
?
顯示數(shù)據(jù)框:
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
?
權(quán)衡p vs q
在Bass模型中,如果模仿系數(shù)相對(duì)于創(chuàng)新系數(shù)增加,那么以下哪一項(xiàng)是最有效的?
產(chǎn)品生命周期的高峰發(fā)生在稍后。
產(chǎn)品生命周期的高峰出現(xiàn)得更快。
兩個(gè)生命周期高峰的機(jī)會(huì)可能會(huì)增加。
高峰可能遲早會(huì)出現(xiàn),具體取決于創(chuàng)新系數(shù)。
使用高峰時(shí)間公式,用x = q / p代替:
x的微分:
從Bass模型中,我們知道q> p> 0,即x> 1,否則我們可以在0≤F<1區(qū)域獲得負(fù)的接受度或形狀,而沒有最大值。因此,?t? /?x的符號(hào)與:
?
但是這個(gè)非線性方程
根x≈3.59
換句話說(shuō),當(dāng)x> 3.59時(shí),導(dǎo)數(shù)?t? /?x為負(fù),而當(dāng)x <3.59時(shí)為正。對(duì)于x = q / p的低值,模仿系數(shù)q的增加會(huì)增加達(dá)到銷售高峰的時(shí)間,而對(duì)于q / p的高值,時(shí)間會(huì)隨著q的增加而減少。因此,該問(wèn)題的正確答案似乎是“它取決于p和q的值”。
t = seq(0,5,
.1)p = 0.1; lines(t,f(p,q,t),type="l",col="red",lwd=2)
?
在圖中,當(dāng)x變小時(shí),峰值更早。
點(diǎn)擊文末?“閱讀原文”
獲取全文完整代碼數(shù)據(jù)資料。
本文選自《R語(yǔ)言使用Bass模型進(jìn)行手機(jī)市場(chǎng)產(chǎn)品周期預(yù)測(cè)》。
點(diǎn)擊標(biāo)題查閱往期內(nèi)容
R語(yǔ)言Bass模型進(jìn)行銷售預(yù)測(cè)
R語(yǔ)言使用Bass模型進(jìn)行手機(jī)市場(chǎng)產(chǎn)品周期預(yù)測(cè)
R語(yǔ)言Bass模型進(jìn)行銷售預(yù)測(cè)
數(shù)據(jù)挖掘:香水電商銷售策略分析
機(jī)器學(xué)習(xí)助推精準(zhǔn)銷售預(yù)測(cè)
Python對(duì)商店數(shù)據(jù)進(jìn)行l(wèi)stm和xgboost銷售量時(shí)間序列建模預(yù)測(cè)分析
基于ARIMA、SVM、隨機(jī)森林銷售的時(shí)間序列預(yù)測(cè)
亞馬遜商品銷售數(shù)據(jù)爬蟲分析報(bào)告
R語(yǔ)言時(shí)間序列和ARIMA模型預(yù)測(cè)拖拉機(jī)銷售的制造案例研究
PYTHON中用PROPHET模型對(duì)天氣時(shí)間序列進(jìn)行預(yù)測(cè)與異常檢測(cè)
R語(yǔ)言用ARIMA模型,ARIMAX模型預(yù)測(cè)冰淇淋消費(fèi)時(shí)間序列數(shù)據(jù)
Python用ARIMA和SARIMA模型預(yù)測(cè)銷量時(shí)間序列數(shù)據(jù)