2016-08-31 15 views
1

日付範囲が - 1925-01-011992-01-01の間です。その範囲の間にxの日付のリストを生成し、それらのxの日付が「通常の」(ベルの曲線 - 画像を参照)分布に従って生成されるようにしたいと思います。範囲内の日付の正規分布を生成する

あり(numpyscipy、などを使用して)整数でこれをやっについてstackoverflowの上の多くの多くの答えがありますが、私は日付@サシャさんのコメントを1として

enter image description here

+5

日付をダニ、秒、または他の1-d単位に変換します(これは、日付の非常に一般的な操作ですが、内部的にも自然な形式です)。次に、normal-distの位置は、(新しい1d形式の)中間要素のようになり、分散/標準偏差を調整するだけで済みます。後で、サンプルを元に戻します。 – sascha

答えて

2

と固体の例を見つけることができません

#!/usr/bin/env python3 

import time 
import numpy 

_DATE_RANGE = ('1925-01-01', '1992-01-01') 
_DATE_FORMAT = '%Y-%m-%d' 
_EMPIRICAL_SCALE_RATIO = 0.15 
_DISTRIBUTION_SIZE = 1000 

def main(): 
    time_range = tuple(time.mktime(time.strptime(d, _DATE_FORMAT)) 
         for d in _DATE_RANGE) 
    distribution = numpy.random.normal(
     loc=(time_range[0] + time_range[1]) * 0.5, 
     scale=(time_range[1] - time_range[0]) * _EMPIRICAL_SCALE_RATIO, 
     size=_DISTRIBUTION_SIZE 
    ) 
    date_range = tuple(time.strftime(_DATE_FORMAT, time.localtime(t)) 
         for t in numpy.sort(distribution)) 
    print(date_range) 

if __name__ == '__main__': 
    main() 

ノート代わりに_EMPIRICAL_SCALE_RATIOの、あなたがGENERするscipy.stats.truncnormを使用することができます(してください):、時間値の日付からの変換には、仕事をしていません食べた:truncated normal distribution

関連する問題