假設檢驗的基本思想:
若對總體的某個假設是真實的,那么不利於或者不能支持這一假設的事件A在一次試驗中是幾乎不可能發生的。如果事件A真的發生了,則有理由懷疑這一假設的真實性,從而拒絕該假設。
實質分析:
假設檢驗實質上是對原假設是否正確進行檢驗,因此檢驗過程中要使原假設得到維護,使之不輕易被拒絕;否定原假設必須有充分的理由。同時,當原假設被接受時,也只能認為否定該假設的根據不充分,而不是認為它絕對正確。
1、檢驗指定的數列是否服從正態分布
借助假設檢驗的思想,利用K-S檢驗可以對數列的性質進行檢驗,看代碼:
1
2
3
4
5
6
7
|
from
scipy.stats
import
kstest
import
numpy as np
x
=
np.random.normal(
0
,
1
,
1000
)
test_stat
=
kstest(x,
'norm'
)
#>>> test_stat
#(0.021080234718821145, 0.76584491300591395)
|
首先生成1000個服從N(0,1)標准正態分布的隨機數,在使用k-s檢驗該數據是否服從正態分布,提出假設:x從正態分布。
最終返回的結果,p-value=0.76584491300591395,比指定的顯著水平(假設為5%)大,則我們不能拒絕假設:x服從正態分布。
這並不是說x服從正態分布一定是正確的,而是說沒有充分的證據證明x不服從正態分布。因此我們的假設被接受,認為x服從正態分布。
如果p-value小於我們指定的顯著性水平,則我們可以肯定的拒絕提出的假設,認為x肯定不服從正態分布,這個拒絕是絕對正確的。
2、檢驗指定的兩個數列是否服從相同分布
1
2
3
4
5
|
from
scipy.stats
import
ks_2samp
beta
=
np.random.beta(
7
,
5
,
1000
)
norm
=
np.random.normal(
0
,
1
,
1000
)
ks_2samp(beta,norm)
#>>>(0.60099999999999998, 4.7405805465370525e-159)
|
我們先分別使用beta分布和normal分布產生兩個樣本大小為1000的數列,使用ks_2samp檢驗兩個數列是否來自同一個樣本,提出假設:beta和norm服從相同的分布。
最終返回的結果,p-value=4.7405805465370525e-159,比指定的顯著水平(假設為5%)小,則我們完全可以拒絕假設:beta和norm不服從同一分布。