在直方图上绘制线图,以获得python

时间:2016-01-13 22:56:03

标签: python plot histogram regression normal-distribution

我创建了一个脚本来绘制一个名为夜间的数据框中NO2与温度残差的直方图。

直方图显示了python脚本中其他地方回归线的残差的正态分布。

我正在努力找到一种在直方图上绘制钟形曲线的方法,如下例所示:

Plot Normal distribution with Matplotlib

如何获得残差直方图的拟合正态分布?

plt.suptitle('NO2 and Temperature Residuals night-time', fontsize=20)

WSx_rm = nighttime['Temperature']                                        
WSx_rm = sm.add_constant(WSx_rm)   
NO2_WS_RM_mod = sm.OLS(nighttime.NO2, WSx_rm, missing = 'drop').fit() 
NO2_WS_RM_mod_sr = (NO2_WS_RM_mod.resid / np.std(NO2_WS_RM_mod.resid)) 
#Histogram of residuals
ax = plt.hist(NO2_WS_RM_mod.resid)
plt.xlim(-40,50)
plt.xlabel('Residuals')
plt.show

2 个答案:

答案 0 :(得分:0)

以下是否适合您? (使用您提供的链接中的一些改编代码)

import scipy.stats as stats

plt.suptitle('NO2 and Temperature Residuals night-time', fontsize=20)

WSx_rm = nighttime['Temperature']                                        
WSx_rm = sm.add_constant(WSx_rm)   
NO2_WS_RM_mod = sm.OLS(nighttime.NO2, WSx_rm, missing = 'drop').fit() 
NO2_WS_RM_mod_sr = (NO2_WS_RM_mod.resid / np.std(NO2_WS_RM_mod.resid)) 
#Histogram of residuals
ax = plt.hist(NO2_WS_RM_mod.resid)
plt.xlim(-40,50)
plt.xlabel('Residuals')

# New Code: Draw fitted normal distribution
residuals = sorted(NO2_WS_RM_mod.resid) # Just in case it isn't sorted
normal_distribution = stats.norm.pdf(residuals, np.mean(residuals), np.std(residuals))
plt.plot(residuals, normal_distribution)

plt.show

答案 1 :(得分:0)

您可以利用seaborn库中的方法绘制带有钟形曲线的分布。在您提供的示例中,剩余变量对我来说还不清楚。您可能会看到下面的代码段仅供参考。

# y here is an arbitrary target variable for explaining this example    
residuals = y_actual - y_predicted 

import seaborn as sns
sns.distplot(residuals, bins = 10) # you may select the no. of bins
plt.title('Error Terms', fontsize=20)           
plt.xlabel('Residuals', fontsize = 15)     
plt.show()