美文网首页
数据分布及假设检验-python

数据分布及假设检验-python

作者: Vicky_1ecd | 来源:发表于2019-08-08 11:45 被阅读0次

利用python来对数据分布进行描述分析和假设检验

数据选自Journal of the American Medical Association(http://jse.amstat.org/v4n2/datasets.shoemaker.html
)关于体温、性别、心率的临床数据,并对以下问题进行数据分析:

  1. 人类体温均值真的是98.6F吗?(Journal of the American Medical Association entitled "A Critical Appraisal of 98.6 Degrees F, the Upper Limit of the Normal Body Temperature
  2. 体温样本数据是否服从正态分布?
  3. 不正常的体温是多少?
  4. 男性和女性的正常体温有明显的区别吗?
  5. 体温和心率是否有相关性?

为了找到以上问题的答案,我们使用python来对样本数据做一下分析。

1. 人类体温均值真的是98.6F吗? 体温散点图

注:样本共130条数据,其中male数据65条,female数据65条。

import pandas as pd
df = pd.read_csv('http://jse.amstat.org/datasets/normtemp.dat.txt', header = None,sep = '\s+' ,names=['体温','性别','心率']) #读取数据
df['体温'].describe()
'''
count    130.000000
mean      98.249231
std        0.733183
min       96.300000
25%       97.800000
50%       98.300000
75%       98.700000
max      100.800000
'''

结论:可以看到 体温的均值为 98.25 F.

2. 体温样本数据是否服从正态分布?

检测体温是否服从正态分布:以下分别使用 kstest、shapiro、normaltest三种方法来检验。

u = df['体温'].mean()  # 计算均值
std = df['体温'].std()  # 计算标准差
ks_test = kstest(df['体温'], 'norm',(u,std))
#KstestResult(statistic=0.06472685044046644, pvalue=0.645030731743997)

shapiro_test = scipy.stats.shapiro(df['体温'])
#(0.9865770936012268, 0.233174666762352)

normaltest_test = normaltest(df['体温'], axis=None) 
#NormaltestResult(statistic=2.703801433319236, pvalue=0.2587479863488212) 

结论:三种检验的pvalue值均大于5%,因此体温值服从正态分布。

体温分布直方图

我们通过绘制体温的密度分布直方图也可以看出来服从正态分布。

3. 不正常的体温是多少?

利用箱线图剔除异常值 体温分布箱线图
# 计算上下四分位数
Q1 = df['体温'].quantile(q = 0.25)  #97.8
Q3 = df['体温'].quantile(q = 0.75)  #98.7

#异常值判断标准, 1.5倍的四分位差 计算上下须对应的值
low_quantile = Q1 - 1.5*(Q3-Q1)   #96.44999999999999
high_quantile = Q3 + 1.5*(Q3-Q1)  #100.05000000000001

# 输出异常值
value = df['体温'][(df['体温'] > high_quantile) | (df['体温'] < low_quantile)]
'''
超过上下须的异常体温值:
0       96.3
65      96.4
129    100.8
'''

结论:体温值大于100.05F,小于96.45F的均为异常体温。

4. 男性和女性的正常体温有明显的区别吗?

剔除异常体温后,分析样本中男女体温是否有明显区别

df2 = df.loc[(df['体温'] != 96.3)&(df['体温'] != 96.4)&(df['体温'] != 100.8)]  #排除异常值
df3 = df2.loc[df2['性别']==1]
man_narmal_mean_temperature = df3['体温'].mean() #男士体温均值 98.13281250000003
df4 = df2.loc[df2['性别']==2]
woman_narmal_mean_temperature = df4['体温'].mean()#女士体温均值 98.38730158730158

结论:女性体温均值比男性体温均值偏高.

5. 体温和心率是否有相关性?

df2.corr()
'''
          体温        性别        心率
体温  1.000000  0.192293  0.243285
性别  0.192293  1.000000  0.054193
心率  0.243285  0.054193  1.000000
'''
df2.corr('kendall')
'''
          体温        性别        心率
体温  1.000000  0.159488  0.176732
性别  0.159488  1.000000  0.064551
心率  0.176732  0.064551  1.000000
'''

df2.corr('spearman')
'''
         体温        性别        心率
体温  1.000000  0.190609  0.265460
性别  0.190609  1.000000  0.077409
心率  0.265460  0.077409  1.000000

5. 结论:由上面三种相关系数可以看出 心率和体温具有正相关。

具体相关计算公式还有待进一步计算得出。

相关文章

  • 数据分布及假设检验-python

    利用python来对数据分布进行描述分析和假设检验 数据选自Journal of the American Med...

  • 学习汇总

    python python假设检验(很全):python假设检验统计功能包:scipy 统计模型包:statsmo...

  • 统计(九)_置换检验

    对于正态分布或其他已知分布的数据,有相应的假设检验与置信区间的计算方法,但是当数据抽样自未知或混合分布、样本量过小...

  • 统计(十)_自助法

    对于正态分布或其他已知分布的数据,有相应的假设检验与置信区间的计算方法,但是当数据抽样自未知或混合分布、样本量过小...

  • Python做假设检验

    目前看到的最全的假设检验的文章 python假设检验

  • 爬虫环境配置(Ubuntu)

    python环境安装 MongoDb环境及安装 用于存储结构化字典数据。 Redis环境anzhaung 分布式爬...

  • 假设检验(下):系统性偏差是怎么回事

    第4章 概率分布 4.7 假设检验(下):系统性偏差是怎么回事 ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ ️4.7 假设检验...

  • 假设检验(上):怎样检验一个假说靠不靠谱

    第4章 概率分布 4.6假设检验(上):怎样检验一个假说靠不靠谱 ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ ️4.6假设检验...

  • 参数估计与假设检验

    ①标准误 ②标准正态分布 ③t分布 ④参数估计 总体率的估计 ⑤假设检验 假设检验是假定H0成立的条件下计算检验统...

  • 数据特征分析

    本文内容摘自《Python数据分析与挖掘实战》 1. 分布分析 分布分析能揭示数据的分布特征和分布类型。 1.1 ...

网友评论

      本文标题:数据分布及假设检验-python

      本文链接:https://www.haomeiwen.com/subject/nsvtjctx.html