我尝试使用函数 lsqcurvefit 来查找Bass Diffusion Model的 p 和 q 参数。
一开始我是这样写 Bass 函数的:
function F = Bass(x, cummulativeAdoptersBefore)
m = 1500000;
F = x(1)*m + (x(2)-x(1))*cummulativeAdoptersBefore + x(2)/m*cummulativeAdoptersBefore.^2;
end
x(1) = p x(2) = q
然后是 FitBass:
function [ x, resnorm ] = FitBass(priorCumulativeAdopters, currentAdoptersCount)
xData = priorCumulativeAdopters;
yData = currentAdoptersCount;
x0 = [0.08; 0.41];
[x, resnorm] = lsqcurvefit(@Bass, x0, xData, yData);
end
但是当比较结果 F = Bass(x, cummulativeAdoptersBefore) 时,其中 x 是匹配参数的向量,yData 是实际数据,我注意到 F(下曲线 - x ~ 1)甚至与 yData 不相似:
是否有人知道这里可能出了什么问题,或者在这种情况下(以及一般情况下)如何找到参数 x 以获得令人满意的拟合?
谢谢!