統計學~體溫是否符合正態分佈?【第四周】

數據集

數據集來源:http://jse.amstat.org/v4n2/datasets.shoemaker.html ,我們取其中的體溫測試是否滿足正態分佈。

驗證

import pandas as pd
from scipy import stats
import matplotlib.pyplot as plt
import matplotlib as mpl

#讀取數據
df = pd.read_csv('http://jse.amstat.org/datasets/normtemp.dat.txt', header = None,sep = '\s+' ,names=['體溫','性別','心率']) 
#查看數據概覽
df.head()

結果數據:
在這裏插入圖片描述

# 查看數據描述
df['體溫'].describe()

輸出:
[外鏈圖片轉存失敗(img-Th0kBQeu-1565496321580)(./1565495490205.png)]

# 計算偏態係數
stats.skew(df['體溫'])
# out:-0.004367976879198404 
# 偏態係數小於0且接近0,曲線呈微左偏,大致呈對稱分佈

# 峯態係數
stats.kurtosis(df['體溫'])
# 峯態係數0.7049597854114715
# 峯態係數大於0且接近0,說明曲線微高聳

我們知道正態分佈時堆對稱的,偏度爲0,峯度爲0,從以上兩個係數可以判斷,體溫的分佈近似正態分佈,那到底是不是滿足分佈的正態性呢,需要使用真正的統計檢驗方法,而不是簡單地檢查峯度或偏度。

這裏使用 scipy.stats 提供的 shapiro 函數,對體溫分佈進行 Shapiro-Wilk 檢驗。該函數有兩個返回值,一個是檢驗的t統計量,另一個是p值。我們只需要知道如何使用p值判斷數據的正態性:如果p值小於等於0.05,就拒絕正態性假設,得出數據非正態分佈的結論。

# 檢驗是否滿足正態分佈
stats.shapiro(df['體溫'])
# out:(0.9865769743919373, 0.2331680953502655)
# 輸出結果中第一個爲統計數,第二個爲P值
# p值小於0.05,所以體溫滿足正態分佈

呈現

體溫滿足正態分佈,我們將繪製正態分佈曲線

import matplotlib.pyplot as plt
import matplotlib as mpl
#解決亂碼
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']

#繪製正態分佈圖形
t = df['體溫'].sort_values()
#計算合適的位置和比例
loc,scale = stats.norm.fit(t)
plt.plot(t, stats.norm.pdf(t,loc,scale),'b-',label = 'norm')
plt.title(u'體溫正態分佈圖')
plt.show()

輸出:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章