空气质量主要受哪些因素影响
- 猜想一:人口密度是否会对空气质量造成影响
- 猜想二:绿化率是否会影响空气质量
绘制空气质量、人口密度、绿化率的散点图矩阵,观察是否有影响
sns.pairplot(data[['AQI','PopulationDensity','GreenCoverageRate']], kind='reg')
我们也可以通过计算相关系数确认相关性,如下以空气质量与降雨量为例:
x = data['AQI']
y = data['Precipitation']
#计算AQI与Precipition的协方差
a = (x-x.mean())*(y-y.mean())
cov = np.sum(a)/(len(a)-1)
print('协方差:',cov)
#计算相关系数
corr = cov/np.sqrt(x.var()*y.var())
print('相关系数:',corr)
协方差: -10098.209013903044
相关系数: -0.40184407003013883
使用热图来更直观的展示全部类别的相关系数
plt.figure(figsize=(15,10))
ax = sns.heatmap(data.corr(), cmap=plt.cm.RdYlBu_r, annot=True, fmt='.2f')
通过上图可以看出:
- 纬度与空气质量指数的相关系数为0.55,可以认为随着维度的升高,空气质量指数也在增加,由此得出结论:南方的空气质量要优于北方。
- 降雨量与空气质量指数的相关系数为-0.4,可以认为随着降雨量的增加,空气质量指数在降低,由此得出结论:降雨量越大空气质量越好。
关于空气质量指数平均值为71的验证
有传闻称,全国所有城市的空气质量均值为71左右,验证这个消息是否可靠。
我们可以使用t检验进行验证:
- 原假设:空气质量均值等于71
- 备择假设:空气质量均值不等于71
- 进行双边检验
检验过程如下:
mean = data['AQI'].mean() #样本城市均值
std = data['AQI'].mean() #样本城市标准差
t = (mean-71)/(std/np.sqrt(len(data['AQI'])))
p = stats.t.sf(2*abs(t), df=len(data['AQI'])-1)
print('t值:', t)
print('p值:', p)
t值:1.8117630617496865
p值:0.07095431526986656
根据结论p值大于0.05,故我们没有足够的证据推翻原假设,故接受原假设。
因为我们使用的是t检验,数值服从t分布,故如果需要回去更加精准的置信区间,我们可以使用如下方法:
stats.t.interval(0.95, df=len(data)-1, loc=mean, scale=std/np.sqrt(len(data)))
(70.6277615675309, 80.0409690826239)
根据置信区间也可以看出数值71在置信区间内,故传闻有较大概率为真。