我有一系列 future 的约会。我想使用关于标准偏差和尚未安排事件的平均值的假设来“预测”该事件在任何给定日期发生的 future 概率。假设我有一个 Pandas DF,其 min/max 日期为 1/8/162/3/16 。我目前只是在所有日子( .037 ... )中运行相等的概率。

我把它放在一个看起来像这样的数据框中(我已经手动填写了所需的 Standard_dev_assisted_probability):

Poss_Date   Equal_probability  Standard_dev_assisted_probability

1/8/2016    0.037037            min date in poss date range
1/9/2016    0.037037
1/10/2016   0.037037
1/11/2016   0.037037            -1st dv / two thirds border
1/12/2016   0.037037
1/13/2016   0.037037
1/14/2016   0.037037
1/15/2016   0.037037
1/16/2016   0.037037
1/17/2016   0.037037
...         ...
1/22/2016   0.037037            mean / peak of distribution
...         ...
2/1/2016    .03707              +~1std dev
2/3/2016    0.037037            max date in poss range

如果我们假设 future 分布的“均值”是 1/22/16 ,而标准 dev 是 11 天......

有没有办法将它们插入 Pandas DF 并让它有概率吐出一列?显然,66% 的概率应该在 +/- 11 周围分配 1/22 天,具有正态分布等。

我用伪代码成像,它会是这样的:
df['Probability']=df.applystandarddev(column=dates,mean=1/22,stddv=11)

如果我们不需要“考虑”超过平均值的缩短时间,那就太好了。显然,平均值之前的时间比平均值之后的时间长,但我认为这是图书馆处理的统计游戏的一部分,等等。

最佳答案

通过在一天结束时和一天开始时获取给定概率的 CDF,我们能够找到当天事件发生的概率。

这是一个正态分布的例子。

from scipy.stats.distributions import norm

def prob_distribution(day, mean_day, std):
    start_z = float((day - mean_day).days) / std
    end_z = float((day - mean_day).days + 1) / std
    return norm.cdf(end_z) - norm.cdf(start_z)

df['Prob'] = df['Poss_Date'].apply(lambda day: prob_distribution(day, datetime(2016,2,1), 10))

关于python - 输入均值和标准差以在 DataFrame Pandas Python 中应用概率分布,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34688696/

10-12 17:39