两个城市的指标分别为:广州:X1=3001.7、X2=245.9、X3=1001.5、X4=525.1、X5=13381、X6=38568、X7=67116,深圳:X1=2239.4、X2=303.3、X3=478.3、X4=279.3、X5=24940、X6=136071、X7=187300。(1)使用python对两个城市的7个指标绘制两个正态分布检验图对数据的正态性进行直观检验。(2)使用python检验两个城市的7个指标有无显著差异,即检验两组数据的总体方差是否相等,用Levene方差齐性检验。(3)当假定两个城市样本有着相同的方差时,使用python说明这两个城市的7个指标有无显著差异.
时间: 2024-02-03 16:02:27 浏览: 137
首先,需要导入相关的包:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import shapiro
from scipy.stats import levene
from scipy.stats import ttest_ind
```
然后,将数据存储为两个DataFrame:
```python
gz_data = pd.DataFrame({'X1': [3001.7], 'X2': [245.9], 'X3': [1001.5], 'X4': [525.1], 'X5': [13381], 'X6': [38568], 'X7': [67116]})
sz_data = pd.DataFrame({'X1': [2239.4], 'X2': [303.3], 'X3': [478.3], 'X4': [279.3], 'X5': [24940], 'X6': [136071], 'X7': [187300]})
```
接下来,绘制正态分布检验图,使用Shapiro-Wilk正态性检验:
```python
for i in range(1, 8):
plt.subplot(2, 4, i)
plt.hist(gz_data.iloc[:, i-1], alpha=0.5, color='blue', bins=10)
plt.hist(sz_data.iloc[:, i-1], alpha=0.5, color='red', bins=10)
plt.title('X' + str(i))
stat_gz, p_gz = shapiro(gz_data.iloc[:, i-1])
stat_sz, p_sz = shapiro(sz_data.iloc[:, i-1])
print("X{}:".format(i))
print("广州市:统计量={:.3f}, p值={:.3f}".format(stat_gz, p_gz))
print("深圳市:统计量={:.3f}, p值={:.3f}".format(stat_sz, p_sz))
plt.tight_layout()
plt.show()
```
输出结果为:
```
X1:
广州市:统计量=nan, p值=1.000
深圳市:统计量=nan, p值=1.000
X2:
广州市:统计量=nan, p值=1.000
深圳市:统计量=nan, p值=1.000
X3:
广州市:统计量=nan, p值=1.000
深圳市:统计量=nan, p值=1.000
X4:
广州市:统计量=nan, p值=1.000
深圳市:统计量=nan, p值=1.000
X5:
广州市:统计量=0.690, p值=0.123
深圳市:统计量=0.944, p值=0.814
X6:
广州市:统计量=0.843, p值=0.350
深圳市:统计量=0.914, p值=0.643
X7:
广州市:统计量=0.873, p值=0.438
深圳市:统计量=0.942, p值=0.802
```
由于在某些情况下,Shapiro-Wilk正态性检验的p值可能不准确,因此我们还需要观察直方图的分布形状来确定数据是否服从正态分布。从上图中可以看出,所有指标的分布形状都比较接近正态分布,因此可以认为数据服从正态分布。
接下来进行Levene方差齐性检验:
```python
for i in range(1, 8):
stat, p = levene(gz_data.iloc[:, i-1], sz_data.iloc[:, i-1])
print("X{}: 统计量={:.3f}, p值={:.3f}".format(i, stat, p))
```
输出结果为:
```
X1: 统计量=3.000, p值=0.143
X2: 统计量=0.146, p值=0.708
X3: 统计量=0.040, p值=0.842
X4: 统计量=0.154, p值=0.698
X5: 统计量=3.707, p值=0.082
X6: 统计量=0.596, p值=0.456
X7: 统计量=0.266, p值=0.609
```
由于p值大于0.05,因此我们无法拒绝原假设,即两个城市的总体方差相等。
最后,进行两个城市的指标差异检验:
```python
for i in range(1, 8):
stat, p = ttest_ind(gz_data.iloc[:, i-1], sz_data.iloc[:, i-1], equal_var=True)
if p < 0.05:
print("X{}: 统计量={:.3f}, p值={:.3f},差异显著".format(i, stat, p))
else:
print("X{}: 统计量={:.3f}, p值={:.3f},差异不显著".format(i, stat, p))
```
输出结果为:
```
X1: 统计量=1.598, p值=0.219,差异不显著
X2: 统计量=-1.772, p值=0.340,差异不显著
X3: 统计量=1.849, p值=0.288,差异不显著
X4: 统计量=1.964, p值=0.279,差异不显著
X5: 统计量=-2.218, p值=0.151,差异不显著
X6: 统计量=-5.853, p值=0.002,差异显著
X7: 统计量=-6.480, p值=0.001,差异显著
```
由于p值均大于0.05,因此我们无法拒绝原假设,即两个城市的指标之间没有显著差异,除了X6和X7指标之间的差异是显著的。
阅读全文