統計學之正態分佈檢驗

2021-09-26 03:16:11 字數 3939 閱讀 4320

本次主要是對資料集資料進行正態分佈檢驗,資料集位址為:

主要包括三列資料,體溫(f)、性別(1:男,2:女)、心率(次/分鐘)

1.資料統計

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import requests

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

import scipy.stats

##資料集

data=pd.read_excel('f:\\temperature.xlsx')

print(data.head(5))

l=data.ix[:,'體溫'].values #讀取所有行中『體溫』那一列

##print(l)

得到前5行資料

體溫  性別  心率

0 96.3 1 70

1 96.7 1 71

2 96.9 1 74

3 97.0 1 80

4 97.1 1 73

對溫度資料的資料分布情況進行統計

print('平均值:',np.mean(l))

print('中位數:',np.median(l))

print('眾數:',scipy.stats.mode(l))

print('標準差',np.std(l))

print('最大值',np.max(l))

print('最小值',np.min(l))

print('偏度:',scipy.stats.skew(l))

print('峰度',scipy.stats.kurtosis(l))

得到的結果為:

平均值: 98.24923076923078

中位數: 98.3

眾數: moderesult(mode=array([98.]), count=array([11]))

標準差 0.730357778905038

最大值 100.8

最小值 96.3

偏度: -0.004367976879198404

峰度 0.7049597854114715

2.資料展示散點圖

y=data.ix[:,'體溫'].values  #讀取『體溫』那一列

x=data.ix[:,'心率'].values #讀取『心率'那一列

z=data.ix[:,'性別'].values #讀取『性別'那一列

直方圖和密度函式

#繪製體溫直方圖和密度函式

df=pd.dataframe(l_tm)

df.hist(bins=20,alpha=0.5,color='r') #體溫的直方圖

df.plot(kind = 'kde', secondary_y=true) #體溫的密度函式

plt.legend()

plt.show()

直方圖

密度函式

由直方圖和密度函式可知體溫基本符合正態分佈。

2.正態分佈檢驗

正態分佈檢驗的方法有很多種,下面簡單介紹幾種。

(1)shapiro-wilk test

方法:scipy.stats.shapiro(x)

官方文件:scipy v1.1.0 reference guide

引數:x - 待檢驗資料

返回:w - 統計數;p-value - p值

print('統計數和p-value',scipy.stats.shapiro(l_tm))
統計數和p-value (0.9865770936012268, 0.233174666762352)
p=0.23>0.05

(2)scipy.stats.kstest

u=np.mean(l_tm)

std=np.std(l_tm)

print(scipy.stats.kstest (l_tm, 'norm', args = (u,std)))

kstestresult(statistic=0.06385348427883908, pvalue=0.6645320172840661)
3. anderson-darling test方法:scipy.stats.anderson (x, dist =『norm』 )

該方法是由 scipy.stats.kstest 改進而來的,可以做正態分佈、指數分布、logistic 分布、gumbel 分布等多種分布檢驗。預設引數為 norm,即正態性檢驗。

官方文件:scipy v1.1.0 reference guide

引數:x - 待檢驗資料;dist - 設定需要檢驗的分布型別

返回:statistic - 統計數;critical_values - 評判值;significance_level - 顯著性水平

print(scipy.stats.anderson (l_tm, dist ='norm' ))
andersonresult(statistic=0.5201038826714353, critical_values=array([0.56 , 0.637, 0.765, 0.892, 1.061]), significance_level=array([15. , 10. ,  5. ,  2.5,  1. ]))
(4)scipy.stats.normaltest方法:scipy.stats.normaltest (a, axis=0)

官方文件:scipy v0.14.0 reference guide

引數:a - 待檢驗資料;axis - 可設定為整數或置空,如果設定為 none,則待檢驗資料被當作單獨的資料集來進行檢驗。該值預設為 0,即從 0 軸開始逐行進行檢驗。

返回:k2 - s^2 + k^2,s 為 skewtest 返回的 z-score,k 為 kurtosistest 返回的 z-score,即標準化值;p-value - p值

print(scipy.stats.normaltest (l_tm, axis=0))
normaltestresult(statistic=2.703801433319236, pvalue=0.2587479863488212)
pvalue=0.26>0.05,因此體溫服從正態分

學習筆記 統計學入門(4 7) 正態分佈

索引 四 正態分佈 1 從樣本頻數分布到概率分布 直方圖 頻率圖的性質 1 直條的面積實質上是頻率 或者百分比 即 面積 高度 頻率 組距 寬度 組距 頻率 2 所有直條面積相加等於1 樣本量越來越大時,頻率 面積 去向概率 組距越來越小時,直方圖的頂替所成點並且各個直方條的頂鏈結成一條曲線,該曲線...

征服統計學02 什麼是正態分佈?

本文簡單介紹正態分佈 正態分佈簡介 正態分佈關鍵引數 均值 標準差 正態分佈曲線如何繪製 正態分佈曲線現象解釋 reference 正態分佈 normal distribution 又名高斯分布 gaussian distribution 又因其曲線酷似鐘形,得名鐘形曲線。還是以上篇提到的測量身高為...

在統計學中 正態分佈在統計學裡是怎樣的存在

正態分佈 normal distribution 是統計學裡最常見的分布之一。in probability theory,the normal or gaussian or gauss or laplace gauss distribution is a very common continuous...