1

我试图拟合一条曲线,以获得一篇新闻文章的点赞数作为文章年龄函数的估计函数。我有一个包含 5000 个数据点的数据集。X 轴是自发布以来的时间,以小时为单位,y 轴是它拥有的共享数量。

该函数的局限性在于它不允许有负导数(文章变老时不会失去喜欢)并且在x = 0时,y不能大于0。

我设法得到这样的东西的唯一方法是使用函数 a*log(x-1)/log(b)+c 并且仅将其应用于前 240 个小时左右。如果我采用更长的时间跨度,它只会变成 y(0) > 0 的线性估计。我还必须挑选出所有高于 500 的数据点,否则它会变得很高。

我使用了以下 MATLAB 代码

modelFunc = @(p,x) p(1) .* log(x-1)/log(p(2)) + p(3);
coef = nlinfit(B(:,2),B(:,1),modelFunc,[1 2 0 0])

但是这个方法有几个问题使得结果接近无用:

  • 我认为这是一个对数增长

  • 我及时随机选择了截止值,使图表“看起来不错”

  • 我随机选择了“异常高赞”的截止值

所以这条估计线更多地基于我眼中看起来不错的东西,而不是数学计算......

关于如何获得良好估计的任何想法?

数据集和近似函数

关闭一些数据点

4

0 回答 0