数据学习(十一)-假设检验实践
程序员文章站
2022-03-09 09:13:42
...
读取数据
import pandas as pd
import numpy as np
from scipy import stats
data=pd.read_csv('G:\\Datasets\\test.csv')
data
结果如下:
根据数据回答以下问题:
1.人体体温的总体均值是否为98.6华氏度?
#人体体温的总体均值是否为98.6华氏度?
print("样本均值")
print(data['Temperature'].mean())
print("样本标准差")
print(data['Temperature'].std())
#该数据样本结果人体温度的总体均值为 98.24923076923076
结果如下:
#由于我们只是抽取小部分样本,要以小样本估计大样本的均值
#提出的原假设和备选假设为 H0:mu=98.6,H1:mu!=98.6
#计算检验统计量的具体数值
#在总体方差未知的情况下,用样本方差来代替总体方差
import math
z=(data['Temperature'].mean()-98.6)/(data['Temperature'].std()/math.sqrt(data.shape[0]))
abs(z)
#因为|z|=5.45大于1.96,所以拒绝原假设,所以人体温度总体均值不是98.6华氏度
结果如下:
因为|z|=5.45大于1.96,所以拒绝原假设,所以人体温度总体均值不是98.6华氏度。
#导入画图工具包
import matplotlib.pyplot as plt
import seaborn as sbn
plt.plot(data['Temperature'])
如下:
2、人体的温度是否服从正态分布?
#查看四分位数的值,前面已经计算了标准差
sifen=np.percentile(data['Temperature'], (25,50,75), interpolation='midpoint')
cha=sifen[2]-sifen[0]
a=cha/data['Temperature'].std()
a
#根据计算值,我们得知1.2275约等于1.3 ,所以符合正太分布
结果如下:
根据计算值,我们得知1.2275约等于1.3 ,所以符合正太分布。
#计算概率密度
mu2=data['Temperature'].mean()
sigma=data['Temperature'].std()
print(mu2)
print(sigma)
y = stats.norm.pdf(data['Temperature'],mu2,sigma)
print(y)
结果如下:
# 第3步,绘图
plt.plot(data['Temperature'],y)
plt.xlabel("随机变量:x")
plt.ylabel('概率:y')
plt.title('正态分布:$\mu$=%.1f,$\sigma^2$=%.1f' % (mu2,sigma))
plt.grid()
plt.show()
#由图可知,人体的温度是服从正态分布的,但根据图可知,数据中存在一些异常数据
#我们需要对其清除
结果如下:
分割数据集
#数据集分为男生和女生
data_man=data[data['Gender']==1]
data_women=data[data['Gender']==2]
data_man
结果如下:
3、人体体温中存在的异常数据是哪些?
X=range(0,65)
plt.plot(X,data_man['Temperature'])
plt.plot(X,data_women['Temperature'])
plt.show()
#由图可以看出男女的体温有一些差异,女生的温度整体比较高
#由图可知,存在一些数据为异常数据
如图:
#我们将大于99华氏度的数据视为异常数据
data[data['Temperature']>99]
结果如下:
4、男女体温是否存在明显差异?
#男女体温的是否存在明显差异
#我们做出假设检验,这是两个样本的差异性检验
#我们提出原假设,H0:mu1-mu2=0, H1:mu1-mu2!=0
#由于两个总体的方差未定,所以我们采用未知方差的公式
s1=data_man['Temperature'].std()
s2=data_women['Temperature'].std()
z=(data_man['Temperature'].mean()-data_women['Temperature'].mean())/math.sqrt((math.pow(s1,2)/65)+(math.pow(s2,2)/65))
print("检验统计量的值为:")
abs(z)
#由于|Z|=2.2854345381654997 > 1.96
#所以拒绝原假设,认为男女体温存在明显差异
由于|Z|=2.2854345381654997 > 1.96,所以拒绝原假设,认为男女体温存在明显差异。
5、体温与心率间的相关性(强?弱?中等?)
#展示分布图
X=range(0,65)
#plt.plot(X,data['Temperature'])
plt.plot(X,data_man['HeartRate'])
plt.show()
plt.plot(X,data_man['Temperature'])
plt.show()
结果如下:
data[['Temperature','HeartRate']].corr()
结果如下:
import seaborn as sbn
sbn.heatmap(data[['Temperature','HeartRate']].corr(),annot=True)
#根据结束结果和如图所示,两个特征的相关性为0.253656
#根据相关系数值可以得知,两个特征的相关性不是很高
结果如下:
根据结束结果和如图所示,两个特征的相关性为0.253656,根据相关系数值可以得知,两个特征的相关性较弱。
上一篇: PHPMailer是什么
下一篇: php数据缓存有几种形式
推荐阅读