145

平均と分散が与えられた場合、正規分布をプロットする単純な関数呼び出しはありますか?

4

10 に答える 10

273
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
import math

mu = 0
variance = 1
sigma = math.sqrt(variance)
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
plt.plot(x, stats.norm.pdf(x, mu, sigma))
plt.show()

ガス分布、平均は 0 分散 1

于 2012-04-13T09:25:09.900 に答える
58

1回の呼び出しですべてを行う関数はないと思います。ただし、ガウス確率密度関数は にありscipy.statsます。

したがって、私が思いつく最も簡単な方法は次のとおりです。

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

# Plot between -10 and 10 with .001 steps.
x_axis = np.arange(-10, 10, 0.001)
# Mean = 0, SD = 2.
plt.plot(x_axis, norm.pdf(x_axis,0,2))
plt.show()

ソース:

于 2012-04-13T09:29:36.937 に答える
11

ウヌッブの答えは正しいです。しかし、私たちの平均はゼロよりも大きい場合も小さい場合もあるため、これを変更したいと思います。

x = np.linspace(-3 * sigma, 3 * sigma, 100)

これに:

x = np.linspace(-3 * sigma + mean, 3 * sigma + mean, 100)
于 2015-02-07T10:21:31.920 に答える
1

上記の例を試したときにmatplotlib.mlabがエラーメッセージを表示したため、scipyをインストールする必要がありましたMatplotlibDeprecationWarning: scipy.stats.norm.pdf。したがって、サンプルは次のようになります。

%matplotlib inline
import math
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats


mu = 0
variance = 1
sigma = math.sqrt(variance)
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
plt.plot(x, scipy.stats.norm.pdf(x, mu, sigma))

plt.show()
于 2018-07-05T09:34:34.287 に答える