r语言 - 如何在威布尔分布中设置"length"参数。我正在尝试对直邮营销活动随时间推移的响应曲线进行建模



我正试图拟合一条曲线,以模拟一段时间以来来自直接邮件活动的响应。使用R,我能够使用fitdist()函数获得形状和比例因子。然后我在weibull()函数中使用形状和比例作为参数。然而,我们的活动通常持续63天(8周),拟合的威布尔曲线的"长度"过早被截断。有没有办法设置"长度"?

或者有没有更好的方法来模拟Direct Mail营销活动的响应???

谢谢!

set.seed(5)
install.packages("MASS")
library("MASS")
responses <-c(4,5,1,12,24,16,16,15,5,18,7,12,5,13,6,2,9,2,5,1,4,4,5,3,3,4,7,3,9,2,2,4,3,2,5,4,3,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,3,2,1,1,1,1,1,1,1,1,1)                                                                                        
f <- fitdistr(responses,'weibull')
f #check the shape and scale
#plug in the shape and scale. 284 is the number of total responders that we're trying to fit the curve to. 
weibulldraws <- as.data.frame(table(round(.5 +   rweibull(284,1.0753863,4.6579543))))
weibulldraws

使用table()将矢量制成表格时,结果中只显示矢量中出现的值;如果要包含其他值,则需要创建一个将这些值作为级别包含在内的因子。因此,如果你想在末尾包括所有的零,那么在制表之前,将你的结果转化为一个具有适当水平的因子:

set.seed(5)
wshape <- 1.0753863
wscale <- 4.6579543
n <- 284
rvals <- round(rweibull(n,wshape,wscale)+0.5)
frvals <- factor(rvals,levels=0:63)
weibulldraws <- as.data.frame(table(frvals))

如果您想绘制与威布尔相关的理论曲线(即密度曲线,而不是对应于从分布中随机抽取的表格),则使用curve()dweibull()函数:

curve(n*dweibull(x,wshape,wscale),from=0,to=63)

(使用add=TRUE将曲线添加到现有绘图中)。

最新更新