2017-11-25 16 views
-1

通常の分布の3つの数値をプロットしようとしていますが、私は1つの良い数字(英国)しか得ていません。残りの2つ(米国と日本)は、正常な曲線が不完全です。複数のプロットを作成するとき、フィット分布がカットされます

グラフをヒストグラムに当てはめたので、それぞれの図が2つのグラフ、つまりヒストグラムとガウス分布を保持する必要があると言えるでしょう。

私のコードの一部を見て、これを修正する方法を教えてください。 私は非常に提案、感謝に感謝しています。

マイmatplotlibの数字:fitted distributionfitted distribution

for item in totalIPs: 
    USA=totalIPs[18] 
    JAPAN=totalIPs[10] 
    UK=totalIPs[17] 
    AUSTRALIA=totalIPs[0] 

#print(USA) 
#print(JAPAN) 
#print(UK) 
#print(AUSTRALIA) 
#print('done') 

#print(country) 
#print(ipFirmnames) 
#print(totalIPs) 
#print("done")  

#Calculating mean and standard deviation 
#from sublists in country list of lists 
#i could write a function for this but dont know how 

mu_USA=statistics.mean(USA) 
mu_JAPAN=statistics.mean(JAPAN) 
mu_UK=statistics.mean(UK) 

std_USA=statistics.stdev(USA) 
std_JAPAN=statistics.stdev(JAPAN) 
std_UK=statistics.stdev(UK) 

plt.figure(1) 
plt.hist(USA, bins=10, normed=True, alpha=0.6, color='g') 

plt.figure(2) 
plt.hist(JAPAN,bins=10,normed=True,alpha=0.6, color ='g') 

plt.figure(3) 
plt.hist(UK, bins=10,normed=True, alpha=0.6, color = 'g') 

standardize_USA=(np.array(USA)-mu_USA)/std_USA 
standardize_JAPAN=(np.array(JAPAN)-mu_JAPAN)/std_JAPAN 
standardize_UK=(np.array(UK)-mu_UK)/std_UK 

xmin, xmax = plt.xlim() 

x1=np.linspace(xmin, xmax, 100) 
x2=np.linspace(xmin, xmax, 100) 
x3=np.linspace(xmin, xmax, 100) 

fitted_pdf_USA=ss.norm.pdf(x1,mu_USA, std_USA) 
fitted_pdf_JAPAN=ss.norm.pdf(x3,mu_JAPAN, std_JAPAN) 
fitted_pdf_UK=ss.norm.pdf(x3,mu_UK, std_UK) 

plt.figure(1) 
plt.plot(x1, fitted_pdf_USA, 'K', linewidth=2) 

plt.figure(2) 
plt.plot(x2, fitted_pdf_JAPAN,'K', linewidth=2) 
fitted_pdf_JAPAN=ss.norm.pdf(x2,mu_JAPAN, std_JAPAN) 


plt.figure(3) 
plt.plot(x3, fitted_pdf_UK,'K', linewidth=2) 

#plt.show() 
print(standardize_USA) 
print(standardize_JAPAN) 

#print(USA) 
print(UK) 
print(JAPAN) 
+1

これまでのところ私の側からの唯一の提案です:あなたが助けたい問題の[mcve]を提供してください。 – ImportanceOfBeingErnest

+0

アドバイスをいただきありがとうございます。私はPythonとStackoverflowの新機能ですので、私は規約に慣れていません。私は次回のことを心に留めておきます。ところで、私のプロットで問題の原因となっているものの考え方は? – MyWrathAcademia

+0

実際にヘルプが必要であり、私たちはそれを提供する必要があるにしても、私たちがしたいことを理解することは難しいです。 [PyMC](http://docs.pymc.io/notebooks/LKJ.html)には、開始に役立つサンプルコードがあります。既知のフレームワークとステップバイステップのノートブックを使用することで、私たちはあなたを手助けするのに非常に役立ちます。 –

答えて

0

fitted distributionあなたが持っているカーブの制限が一部

xmin, xmax = plt.xlim() 

メイク個々にのみ1つの曲線から得られることである問題グラフの制限ではなく、それぞれのデータからすべてのプロットの制限を取得し、問題を解決します。 numpyのmax()min()を使用してください。

x1=np.linspace(USA.min(),USA.max(),100) 

それぞれのデータを持つすべてのプロットに対して実行します。この方法で滑らかな曲線が得られますが、限界はグラフではなくデータです。それが小さすぎる場合は、乗算(1.1*max()など)または合計(max()+10; minはデータに依存します)によって制限値を上げてください。

+0

これは本当に面白いです。私はあなたが間違いを見つけようと努力してきたので、あなたが正しいと願っています。あなたは代わりに値を使うべき限界を使う代わりに分を使いますか?私はあなたのコードを見ることを楽しみにしています – MyWrathAcademia

+0

@mywrathacademiaうん、すべてのセットの最大値と最小値を使用して動作するはずです。しかし、コメントに指摘されているように、あなたの例では問題を再現するには十分ではありません。より良い質問をするにはエディションが良いでしょう。 – Guto

+0

私は働いていました。グートありがとう、あなたが問題を見つけた方法はとても印象的でした。私は今あなたが示唆したようにそれぞれのデータを使用しています。曲線は非常に騒音であったので、ソート機能を使用しなければならなかった。実際のデータと比較してxminとxmaxの制限値を使用したとき、データセットの1つにスムーズなカーブが得られました。これがなぜなのか? – MyWrathAcademia

関連する問題