2016-05-22 12 views
1

次のように私は、データ値の配列を持っている:確率密度のプロットイベントの到着時間の関数(PDF)?

0.000000000000000000e+00 
3.617000000000000171e+01 
1.426779999999999973e+02 
2.526699999999999946e+01 
4.483190000000000168e+02 
7.413999999999999702e+00 
1.132390000000000043e+02 
8.797000000000000597e+00 
1.362599999999999945e+01 
2.080880900000000111e+04 
5.580000000000000071e+00 
3.947999999999999954e+00 
2.615000000000000213e+00 
2.458000000000000185e+00 
8.204600000000000648e+01 
1.641999999999999904e+00 
5.108999999999999986e+00 
2.388999999999999790e+00 
2.105999999999999872e+00 
5.783000000000000362e+00 
4.309999999999999609e+00 
3.685999999999999943e+00 
6.339999999999999858e+00 
2.198999999999999844e+00 
3.568999999999999950e+00 
2.883999999999999897e+00 
7.307999999999999829e+00 
2.515000000000000124e+00 
3.810000000000000053e+00 
2.829000000000000181e+00 
2.593999999999999861e+00 
3.963999999999999968e+00 
7.258000000000000007e+00 
3.543000000000000149e+00 
2.874000000000000110e+00 
................... and so on. 

私はデータ値の確率密度関数をプロットしたいです。私は(Wiki)scipy.stats.gaussian_kdeと言いました。しかし、私はそれが正しいかどうかは分かりません。 私はPythonを使用しています。単純なデータプロットコードは次のとおりです:

from matplotlib import pyplot as plt 
plt.plot(Data) 

しかし、今私はPDF(確率密度関数)をプロットしたいと思います。しかし、私はそうするためにPythonのライブラリを取得していません。

+0

* discrete *データを使用しているため、PDFは「ビン」に分類されます。これらのビンを作成することは、倍精度では困難です。なぜなら、これらのビンを平等にすることは非常に難しいからです。したがって、現在のPDFはほぼ確実に平らな線(N個の固有値を数えています)になります。これらを丸めなどの方法で比較する方法を紹介する必要があります。 –

+0

小数点以下2桁まで四捨五入することができます。どのように私はプロットすることができますか? @ScottStainton – KrunalParmar

+1

四捨五入後、各数値の出現を数え、それをあなたが持っているデータの総量で割る必要があります。これにより、各値の確率が得られます。この値をプロットするのがあなたのPDFです。 –

答えて

4

データセットが信頼できるカーネル密度推定を可能にするために非常に小さいです。 (私はあなたがやろうとしているものを正しく理解している場合)ので、私は別のデータを使用して手順をdemostrateます

import numpy as np 
import scipy.stats 

# generate data samples 
data = scipy.stats.expon.rvs(loc=0, scale=1, size=1000, random_state=123) 

に推定は、単に

scipy.stats.gaussian_kde(data,bw_method=bw) 

呼び出すことによって取得することができカーネル密度を設定しますbwは、推定手順の(オプションの)パラメータです。このデータ・セット、およびbwための3つの値を考慮するためのフィットのような大きなbw値は、この例ではコスト(と、しかし、より滑らかなPDF推定をもたらすこと

# test values for the bw_method option ('None' is the default value) 
bw_values = [None, 0.1, 0.01] 

# generate a list of kde estimators for each bw 
kde = [scipy.stats.gaussian_kde(data,bw_method=bw) for bw in bw_values] 


# plot (normalized) histogram of the data 
import matplotlib.pyplot as plt 
plt.hist(data, 50, normed=1, facecolor='green', alpha=0.5); 

# plot density estimates 
t_range = np.linspace(-2,8,200) 
for i, bw in enumerate(bw_values): 
    plt.plot(t_range,kde[i](t_range),lw=2, label='bw = '+str(bw)) 
plt.xlim(-1,6) 
plt.legend(loc='best') 

enter image description here

注以下に示します。 )が可能であり、これはここでは当てはまらない。

1

使用numpy.histogram

例:あなたが提供する

# a is your data array 
hist, bins = np.histogram(a, bins=100, normed=True) 
bin_centers = (bins[1:]+bins[:-1])*0.5 
plt.plot(bin_centers, hist) 
関連する問題