我将来会有一系列日期。我想使用关于标准差的假设和尚未安排的事件的平均值来“预测”该事件在任何特定日期的未来概率。假设我有一个min/max
日期1/8/16
和2/3/16
的Pandas DF。我目前只在所有日子里运行相同的概率(.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
如果我们假设未来分布的'均值'是1/22/16
,那么标准开发是11天......
有没有办法将它们插入Pandas DF并让它以概率吐出一列?显然,66%的概率应该在+/- 11
周围1/22
天分配,正态分布/等。
我正在使用伪代码进行成像,它将类似于:
df['Probability']=df.applystandarddev(column=dates,mean=1/22,stddv=11)
如果我们不需要“帐户”缩短过去的时间段,那就太棒了。显然平均时间比之后多,但我认为这是图书馆处理的统计游戏的一部分,等等。
答案 0 :(得分:2)
通过在当天结束时和当天开始时获取给定概率的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))