使用nls()和预测器的R Bass扩散

使用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

研究人员在估计bass曲线时如何包括额外的预测因子/自变量?我已经读到Bass扩散不接受额外的预测值,但我看到一些论文声称它们接受。话虽如此,R中的
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)