1

私は、正規分布N(2,1)をPython - [-1、5]の間隔で理論的な正規分布N(2,1)を計算してプロットする

vec = np.random.norm(2, 1, 7); 
ND = stats.norm(2, 1).pdf(vec) 
x = np.arange(1, 6, 1) 
plt.figure() 
plt.plot(x, 'r') 
plt.hist(ND) 
plt.show() 

あなたは、これは私に私が探している結果を与えるものではありません考え出したかもしれませんが:[-1、5]

の間隔は、ここで私が試したものです。

私の人生にとってはこれを理解できません。私はPythonでコーディングを始めたばかりの学生です。

-1から5までの範囲のnp.random.normalで乱数を生成するように求められましたが、インターバルが-1で始まると考えてどうすればいいのかまだ分かりません。

第二に、私は結果をプロットする必要が最後に(https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.norm.html

を私はscipy.statsから関数norm.pdfを使用するように求めてきたが、私は、この関数のドキュメントを理解していません。

私は何か助けていただきありがとうございます。私の無能を許してください...

+2

ようこそ。残念ながら、これはディスカッションフォーラムやチュートリアルサービスではありません。時間をかけて[ask]とそのページの他のリンクを読んでください。 – wwii

+0

@wwiiこの問題で私を助けるフォーラムを提案してもよろしいですか? – AlexT

+0

新しいツールを使用しようとするときは、マニュアルを開始するのがよいでしょう。ドキュメンテーションをしばらく使って、途中で試してみてください。 – wwii

答えて

1

N(2,1)分布を指定するには、平均2と分散(または標準偏差)1の正規分布が必要です。scipyの場合、meanは位置、および標準偏差をスケーリングします。

matplotlibを使用してpdfのプロットを作成するには、視覚的に滑らかなグラフを作成するために[-1、5]の間隔で十分な点を選択します。これはlinspaceの目的です。これらのポイントのそれぞれについて、norm.pdfを使用してpdfを計算します。ここで

from scipy.stats import norm 
from matplotlib import pyplot as plt 
import numpy as np 

x = np.linspace(-1, 5, 100, endpoint=True) 
pdf = [norm.pdf(_, loc=2, scale=1) for _ in x] 

plt.plot(x, pdf, 'b-') 
plt.show() 

私はnorm.rvsが全体の本当のラインの上にずれを生じさせることを知っているサイズ10のサンプルを作成します。したがって、所望のインターバルに対して逸脱を得るために、そのインターバルの外側のものを単に無視する。 `norm.rvs 'を呼び出すたびに、長さが1のnumpyの「配列」が生成されます。良い結果を得るには、その配列の最初の項目を選択し、それを全体のサンプルに追加します(希望の間隔内にある場合)。

sample_size = 10 
sample = [] 
while len(sample)<sample_size: 
    while True: 
     deviate = norm.rvs(loc=2, scale=1, size=1)[0] 
     if -1<=deviate<=5: 
      break 
    sample.append(deviate) 
print (sample) 
関連する問題