假设检验实例(python)
- 数据集下载地址:Journal of Statistics Education - Data Archive
用ctrl+F键搜索normtemp下载txt文件
- 数据集描述:http://ww2.amstat.org/publications/jse/datasets/normtemp.txt
包括130条记录,我们主要利用体温和性别来进行实验
import pandas as pd
import pylab
import math
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
from scipy.stats import norm
import scipy.stats
import warnings
warnings.filterwarnings("ignore")df = pd.read_csv('normtemp.txt',sep=' ',names = ['Temperature','Gender','Heart Rate'])
df.describe()
体温的分布是正态的吗?
observed_temperatures = df['Temperature'].sort_values()#将参数导入
#按从小到大的顺序进行
bin_val = np.arange(start= observed_temperatures.min(), stop= observed_temperatures.max(), step = .05)
mu, std = np.mean(observed_temperatures), np.std(observed_temperatures)#均值和方差p = norm.pdf(observed_temperatures, mu, std)#画出pdfplt.hist(observed_temperatures,bins = bin_val, density=True, stacked=True)#直方图
plt.plot(observed_temperatures, p, color = 'red')
plt.xticks(np.arange(95.75,101.25,0.25),rotation=90)
plt.xlabel('Human Body Temperature Distributions')
plt.xlabel('human body temperature')
plt.show()print('Average (Mu): '+ str(mu) + ' / ' 'Standard Deviation: '+str(std))
Average (Mu): 98.24923076923076 / Standard Deviation: 0.7303577789050376
从图中可以看出该分布符合正态分布的样子。
再次进行检验:
x = observed_temperatures#Shapiro-Wilk Test: https://en.wikipedia.org/wiki/Shapiro%E2%80%93Wilk_test
shapiro_test, shapiro_p = scipy.stats.shapiro(x)
print("Shapiro-Wilk Stat:",shapiro_test, " Shapiro-Wilk p-Value:", shapiro_p)k2, p = scipy.stats.normaltest(observed_temperatures)
print('p:',p)#Another method to determining normality is through Quantile-Quantile Plots.
scipy.stats.probplot(observed_temperatures, dist="norm", plot=pylab)
pylab.show()
算出p值为0.2587479863488212
Shapiro-Wilk Stat: 0.9865769743919373 Shapiro-Wilk p-Value: 0.2331680953502655
p: 0.2587479863488212
画出ECDF:
def ecdf(data):#Compute ECDFn = len(data)x = np.sort(data)y = np.arange(1, n+1) / nreturn x, y# Compute empirical mean and standard deviation# Number of samples
n = len(df['Temperature']) # Sample mean
mu = np.mean(df['Temperature']) # Sample standard deviation
std = np.std(df['Temperature']) print('Mean temperature: ', mu, 'with standard deviation of +/-', std)#Random sampling of the data based off of the mean of the data.
normalized_sample = np.random.normal(mu, std, size=10000)
x_temperature, y_temperature = ecdf(df['Temperature'])
normalized_x, normalized_y = ecdf(normalized_sample)# Plot the ECDFs
fig = plt.figure(figsize=(8, 5))
plt.plot(normalized_x, normalized_y)
plt.plot(x_temperature, y_temperature, marker='.', linestyle='none')
plt.ylabel('ECDF')
plt.xlabel('Temperature')
plt.legend(('Normal Distribution', 'Sample data'))
Mean temperature: 98.24923076923076 with standard deviation of +/- 0.730357778905038
可以看出上下波动的值很低。
有学者提出98.6是人类的平均体温,我们该这样认为吗?
在这里我们选择t检验,因为我们只能计算样本的标准差。
from scipy import statsCW_mu = 98.6
stats.ttest_1samp(df['Temperature'], CW_mu, axis=0)
Ttest_1sampResult(statistic=-5.4548232923640771, pvalue=2.4106320415610081e-07)
T-Stat -5.454 p-value近乎0了. 我们该拒绝这样的假设
男性和女性的体温有明显差异吗?
两独立样本t检验 H0: 没有明显差异 H1: 有明显差异
female_temp = df.Temperature[df.Gender == 2]
male_temp = df.Temperature[df.Gender == 1]
mean_female_temp = np.mean(female_temp)
mean_male_temp = np.mean(male_temp)
print('Average female body temperature = ' + str(mean_female_temp))
print('Average male body temperature = ' + str(mean_male_temp))# Compute independent t-test
stats.ttest_ind(female_temp, male_temp, axis=0)
Average female body temperature = 98.39384615384616
Average male body temperature = 98.1046153846154
Ttest_indResult(statistic=2.2854345381654984, pvalue=0.02393188312240236)
由于P值=0.024 < 0.05,我们需要拒绝原假设,我们有%95的自信认为是有差异的!
假设检验实例(python)相关推荐
- python零基础实例-Python初学零基础也不怕,从0开始!
Python3 列表.列表是咱们在python中最常用的数据模型,他承担的重要的人物,也展示出了他强大的一面. 序列是Python中最根本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索 ...
- python程序实例讲解_python入门编程实例 python入门编程实例解析
python入门编程实例 python入门编程实例解析 python入门编程实例及解析: 题目:有1.2.3.4四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 程序分析:可填在百位.十 ...
- python代码实例-python程序实例
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. github.comteamssixdouluo-download.gi ...
- python列表转化为数字信号_python 经典数字滤波实例 Python 数字信号处理程序实现分享解...
常用的数字滤波的方法都有哪些,写出其中三种数字经典滤波的概念,是根据傅里叶分析和变换提出的一个工程概念.根据高等数学理论,任何一个满足一定条件的信号,都可以被看成是由无限个正弦波叠加而成.换句话说,就 ...
- Python3 实例--Python 平方根(**,cmath,复数的i和j部分)
#Python3 实例--Python 平方根 print("Python3 实例--Python 平方根") #求正数的平方根 num = float(input()) num_ ...
- 手把手的K-means聚类算法教程(含简介及教育数据应用实例 Python实现)
手把手的K-means聚类算法教程(含简介及教育数据应用实例 Python实现) 1. K-MEANS的基本原理 2. 数据预处理 2.1 数据读取:from Excel 2.2 数据预处理:标准化Z ...
- python课堂实例,Python电子教案2 1 Python程序实例解析课堂
<Python电子教案2 1 Python程序实例解析课堂>由会员分享,可在线阅读,更多相关<Python电子教案2 1 Python程序实例解析课堂(41页珍藏版)>请在人人 ...
- 模拟退火算法详细讲解(含实例python代码)
模拟退火算法详细讲解(含实例python代码) (一)模拟退火算法简介 (二)模拟退火算法原理 (三)退火过程中参数控制 (四)算法步骤 (五)实例分析 最近老师要求做模拟退火算法实验,看了很多博客之 ...
- pythonsuper多重继承_python多重继承实例 python多重继承下super问题
python的多重继承问题有些事,有些人,有些风景,一旦入眼入心,即便刹那,也是永恒.当生活心怀歹毒地将一切都搞成了黑色幽默,小编顺水推舟把自己变成了一个受过高等教育的流氓. 楼上的回答的很正确,简单 ...
- python爬虫beautifulsoup实例-Python爬虫学习(二)使用Beautiful Soup库
(一)使用Beautiful Soup库(默认将HTML转换为utf-8编码) 1,安装Beautiful Soup库:pip install beautifulsoup4 2,简单使用: impor ...
最新文章
- 【算法总结】数学问题-最大公约数和最小公倍数
- iOS swift2.3 迁移到3.0 遇到的一些问题
- 迎接奥运会 里约把机场的IT建设翻新了下
- Spring Cloud(二) 配置Eureka Client
- hdu 3681(bfs+dfs+状态压缩)
- 花呗分期计算器_花呗分期10000元利息怎么算?取决于你的分期期数!
- linux teaming状态命令,Linux 网卡Teaming
- 央视报道短视频侵权 呼吁多方配合保护影视版权
- AJAX JSONP源码实现(原理解析)
- 随笔1:音频编解码科学家
- hdu 1285 确定比赛名次
- HDU1555 How many days?【水题+模拟】
- Unity3D基础14:碰撞检测
- html标签的显示模式(块级标签,行内标签,行内块标签)
- hdu 5150 Sit sit sit
- 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP 1
- 阿里云前端周刊 - 第 18 期
- 基于微信小程序的课堂考勤系统设计与实现
- 《统计会犯错——如何避免数据分析中的统计陷阱》目录—导读
- 华为手机怎么把计算机放到桌面,将华为手机投影到计算机屏幕