我有一系列 future 的约会。我想使用关于标准偏差和尚未安排事件的平均值的假设来“预测”该事件在任何给定日期发生的 future 概率。假设我有一个 Pandas DF,其 min/max
日期为 1/8/16
和 2/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/