日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python样本期望值_用 python 做 z 检验,t 检验

發布時間:2025/3/19 python 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python样本期望值_用 python 做 z 检验,t 检验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

1. z 檢驗

2. t 檢驗

Python 中的假設檢驗一般用到 scipy 或 statsmodels 包,需要注意的是,這兩個包里面各種檢驗的置信度都是 0.05。

1. z 檢驗

對于大樣本數據(樣本量 ≥ \geq≥ 30),或者即使是小樣本,但是知道其服從正態分布,并且知道總體分布的方差時,需要用 z 檢驗。在 python 中,由于 scipy 包沒有 z 檢驗,我們只能用 statsmodels 包中的 ztest 函數。ztest 函數的一般用法如下:

ztest(x1, x2=None, value=0, alternative=`two-sided’)

輸入參數:

x1

數組,第一個樣本的數據值

x2

數組,第二個樣本的數據值,默認沒有值

value

浮點型數值,若是單樣本,則 value 是樣本假設的均值

若是雙樣本,則 value是兩個樣本均值的差值

alternative

若為 `larger’,備選假設 H1 大于 value 值

若為 `smaller’,備選假設 H1 小于 value 值

輸出參數:

tstats

統計量值

pvalue

p 值

假設有下面表格的數據:

23

36

42

34

39

34

35

42

53

28

49

39

46

45

39

38

45

27

43

54

36

34

48

36

47

44

48

45

44

33

24

40

50

32

39

31

檢測其均值是否為 39, 該問題顯然是一個雙側檢驗,由于樣本個數大于 30,則使用 z 檢驗,python 代碼如下:

>>> import statsmodels.stats.weightstats as sw

>>> arr=[23,36,42,34,39,34,35,42,53,28,49,39,

... 46,45,39,38,45,27,43,54,36,34,48,36,

... 47,44,48,45,44,33,24,40,50,32,39,31]

>>> sw.ztest(arr, value=39)

(0.3859224924939799, 0.6995540720244979)

從 ztest 的運行結果可以看出,統計量值為 0.385,而 p 值是 0.699,在置信度 α = 0.05 \alpha=0.05α=0.05 時,由于 p 值大于 α \alphaα,接受原假設,認為該樣本的均值是 39。

若要檢測該樣本均值是否大于 39,即原假設 H0:μ > 39 \mu>39μ>39,備選假設為:μ ≤ 39 \mu\leq 39μ≤39,則我們需要在代碼中增加一個參數 alternative=``smaller”:

>>> sw.ztest(arr, value=39, alternative="smaller")

(0.3859224924939799, 0.650222963987751)

檢測結果的 p 值為 0.650,大于置信度 0.05,則接受原假設,認為樣本均值大于39。假設另外一個樣本 2 的數據:

41

34

36

32

32

35

33

31

35

34

37

34

31

36

37

34

33

37

33

38

38

37

34

36

36

31

33

36

37

35

33

34

33

35

34

34

34

35

35

34

檢測兩個樣本的均值是否相等,因為兩個樣本都是大樣本,使用 z 檢驗, python 代碼如下:

>>> arr2 = [41, 34, 36, 32, 32, 35, 33, 31, 35, 34,

... 37, 34, 31, 36, 37, 34, 33, 37, 33, 38,

... 38, 37, 34, 36, 36, 31, 33, 36, 37, 35,

... 33, 34, 33, 35, 34, 34, 34, 35, 35, 34]

>>> sw.ztest(arr, arr2, value=0)

(3.775645601380307, 0.0001595937672736755)

從 ztest 的檢驗結果可以看出,p 值小于 0.05, 則拒絕原假設,認為兩個樣本的均值不相等。

2. t 檢驗

小樣本(樣本量小于30個),一般用 t 檢驗。對于 t 檢驗,可以根據樣本特點,用 scipy 包中的 ttest_1sample(單樣本 t檢驗函數),ttest_ind(兩個獨立樣本的 t 檢驗),ttest_rel (兩個匹配樣本的 t 檢驗)。但這些函數得到都是雙側 t 檢驗的 p 值。如果是單側檢驗,我們還要進行一些換算,得到單側檢驗的 p 值。

ttest_1sample 函數的語法為:

ttest_1samp(a, popmean)

輸入參數:

a

數組,樣本的數據值

popmean

原假設 H 0 H_0H0? 中樣本的期望值

輸出參數:

tstats

統計量值

pvalue

p 值

下面是一個樣本的數據:

99.3 98.7 100.5 101.2 98.3 99.7 99.5 102.1 100.5 99.3\quad 98.7\quad 100.5\quad 101.2\quad 98.3\quad 99.7\quad 99.5\quad 102.1\quad 100.599.398.7100.5101.298.399.799.5102.1100.5

檢測樣本均值是否等于100,對其進行雙側 t 檢驗的語法為:

>>> import scipy.stats as st

>>> a = [99.3, 98.7, 100.5, 101.2, 98.3, 99.7, 99.5, 102.1, 100.5]

>>> st.ttest_1samp(a, 100)

Ttest_1sampResult(statistic=-0.054996133220328265, pvalue=0.9574902045208937)

從結果可以看出,雙側檢驗的 p 值為 0.95, 大于置信度 0.05,因此接受原假設,認為樣本的均值是100。若是單側檢驗中的左側檢驗,則 p 值為 0.957 / 2 = 0.4785 0.957/2=0.47850.957/2=0.4785,若是右側檢驗,則 p 值為 1 ? 0.957 / 2 = 0.5215 1-0.957/2=0.52151?0.957/2=0.5215。

假設有另外一個樣本的數據:

91.1 93.7 93.6 96.1 94.3 92.2 94.0 95.7 97.1 91.1\quad 93.7\quad 93.6\quad 96.1\quad 94.3\quad 92.2\quad 94.0\quad 95.7\quad 97.191.193.793.696.194.392.294.095.797.1

若兩個樣本相互獨立,檢測兩個樣本的均值是否相等,使用 ttest_ind 函數。

ttest_ind 函數的語法為:

ttest_ind(a, b, axis=0, equal_var=True)

輸入參數:

a

數組,樣本的數據值

b

數組,樣本2的數據值

axis

一般為 0

equal_var

若為 true,表示兩個樣本由相同的方差

若為 false,表示兩個樣本的方差不同,使用合并方差

輸出參數:

tstats

統計量值

pvalue

p 值

假設兩個樣本的方差不同,則獨立雙樣本的 t 檢驗 python 代碼為:

\begin{lstlisting}[Language=Python]

>>> a = [99.3, 98.7, 100.5, 101.2, 98.3, 99.7, 99.5, 102.1, 100.5]

>>> b = [91.1, 93.7, 93.6, 96.1, 94.3, 92.2, 94.0, 95.7, 97.1]

>>> st.ttest_ind(a, b, equal_var = False)

Ttest_indResult(statistic=7.723221821038956, pvalue=2.4331092243754622e-06)

從上面結果可以看出,p 值小于置信度 0.05,拒絕原假設,認為兩個兩個樣本的均值不同。

若兩個樣本是匹配樣本,使用函數 ttest_rel,它的語法更簡單,只需在函數里輸入兩個樣本的數組即可。假設上面兩個樣本為匹配樣本,python 代碼為:

>>> import scipy.stats as st

>>> a = [99.3, 98.7, 100.5, 101.2, 98.3, 99.7, 99.5, 102.1, 100.5]

>>> b = [91.1, 93.7, 93.6, 96.1, 94.3, 92.2, 94.0, 95.7, 97.1]

>>> st.ttest_rel(a, b)

Ttest_relResult(statistic=10.845107419335658, pvalue=4.617509769582176e-06)

結果顯示,p 值小于置信度 0.05,拒絕原假設,認為這兩個匹配樣本的均值不同。

總結

以上是生活随笔為你收集整理的python样本期望值_用 python 做 z 检验,t 检验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。