使用nls()和预测器的R Bass扩散
研究人员在估计bass曲线时如何包括额外的预测因子/自变量?我已经读到Bass扩散不接受额外的预测值,但我看到一些论文声称它们接受。话虽如此,R中的使用nls()和预测器的R Bass扩散,r,nls,R,Nls,研究人员在估计bass曲线时如何包括额外的预测因子/自变量?我已经读到Bass扩散不接受额外的预测值,但我看到一些论文声称它们接受。话虽如此,R中的nls()函数是否可以实现这一点?我已经创建了一些玩具数据和一个没有额外预测器的例子,广告 短暂性脑缺血发作 库(data.table) 选项(scipen=999) rm(list=ls()) df library(data.table) options(scipen=999) rm(list=ls()) df <- data.table
nls()
函数是否可以实现这一点?我已经创建了一些玩具数据和一个没有额外预测器的例子,广告
短暂性脑缺血发作
库(data.table)
选项(scipen=999)
rm(list=ls())
df
library(data.table)
options(scipen=999)
rm(list=ls())
df <- data.table(
year = seq(1979, 1988, by=1),
T = 1:10,
sales = c(840, 1470, 2110, 4000, 7590, 10950, 10530, 9470, 7790, 5890),
advert = c(100,100,100,100,100,75,75,50,50,25))
df[, sales_cumulative := cumsum(sales)]
est_bass <- nls(sales ~ M*(((P+Q)^2/P)*exp(-(P+Q)*T))/(1+(Q/P)*exp(-(P+Q)*T))^2,
# add P and Q below
start=c(list(M = 60630, P = 0.03, Q = 0.38)),
data = df)
coef(est_bass)
# P, Q, M parameters
m = coef(est_bass)[1]
p = coef(est_bass)[2]
q = coef(est_bass)[3]
Tdelt <- (1:100)/10
ngete <- exp(-(p+q)*Tdelt)
# plot pdf
par(mfrow=c(1,2))
Bpdf <- m*((p+q)^2/p)*ngete/(1+(q/p)*ngete)^2
plot(Tdelt, Bpdf, xlab = "Year from 1979", ylab = "Sales per year", type = "l")
points(df$T, df$sales) # compare to original
# plot cdf
Bcdf <- m*(1-ngete)/(1+(q/p)*ngete)
plot(Tdelt, Bcdf, xlab = "Year from 1979", ylab = "Cumulative sales", type = "l")
points(df$T, df$sales_cumulative)