Python SciPy中的概率密度函数的行为与预期不同

Python SciPy中的概率密度函数的行为与预期不同,python,numpy,scipy,statistics,normal-distribution,Python,Numpy,Scipy,Statistics,Normal Distribution,我试图用Python绘制正态分布曲线。首先,我使用正态概率密度函数手动完成,然后我发现在统计模块下的scipy中有一个退出函数pdf。然而,我得到的结果却大不相同 下面是我尝试过的示例: import numpy as np import matplotlib.pyplot as plt import scipy.stats as stats mean = 5 std_dev = 2 num_dist = 50 # Draw random samples from a normal (Gau

我试图用Python绘制正态分布曲线。首先,我使用正态概率密度函数手动完成,然后我发现在统计模块下的scipy中有一个退出函数
pdf
。然而,我得到的结果却大不相同

下面是我尝试过的示例:

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

mean = 5
std_dev = 2
num_dist = 50

# Draw random samples from a normal (Gaussion) distribution
normalDist_dataset = np.random.normal(mean, std_dev, num_dist)

# Sort these values.
normalDist_dataset = sorted(normalDist_dataset)

# Create the bins and histogram
plt.figure(figsize=(15,7))
count, bins, ignored = plt.hist(normalDist_dataset, num_dist, density=True)

new_mean = np.mean(normalDist_dataset)
new_std = np.std(normalDist_dataset)

normal_curve1 = stats.norm.pdf(normalDist_dataset, new_mean, new_std)
normal_curve2 = (1/(new_std *np.sqrt(2*np.pi))) * (np.exp(-(bins - new_mean)**2 / (2 * new_std**2)))

plt.plot(normalDist_dataset, normal_curve1, linewidth=4, linestyle='dashed')
plt.plot(bins, normal_curve2, linewidth=4, color='y')
结果显示了我得到的两条曲线之间的差异

我的猜测是,这与
bin
pdf
的行为与通常的公式不同有关。我对两个图使用了相同和新的平均值和标准差。那么,如何更改代码以匹配
stats.norm.pdf
的功能呢


我还不知道哪条曲线是正确的。

函数
plot
只是将点与线段连接起来。您的箱子没有足够的圆点来显示平滑曲线。可能的解决办法:

....
normal_curve1 = stats.norm.pdf(normalDist_dataset, new_mean, new_std)
bins = normalDist_dataset # Add this line
normal_curve2 = (1/(new_std *np.sqrt(2*np.pi))) * (np.exp(-(bins - new_mean)**2 / (2 * new_std**2)))
....

函数
plot
仅将点与线段连接起来。您的箱子没有足够的圆点来显示平滑曲线。可能的解决办法:

....
normal_curve1 = stats.norm.pdf(normalDist_dataset, new_mean, new_std)
bins = normalDist_dataset # Add this line
normal_curve2 = (1/(new_std *np.sqrt(2*np.pi))) * (np.exp(-(bins - new_mean)**2 / (2 * new_std**2)))
....

尝试,例如,
num\u dist=50000
,并将
plt.hist
bins
参数从
num\u dist
更改为
bins=100
。尝试,例如,
num\u dist=50000
,并将
plt.hist
bins
参数从
num\code>bins=100