欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据学习(十一)-假设检验实践

程序员文章站 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,根据相关系数值可以得知,两个特征的相关性较弱。

相关标签: 数据