Heim  >  Artikel  >  Backend-Entwicklung  >  Python testet, ob Jarque-Bera der Normalverteilung entspricht

Python testet, ob Jarque-Bera der Normalverteilung entspricht

零到壹度
零到壹度Original
2018-04-09 16:19:0611952Durchsuche


Der Inhalt dieses Artikels besteht darin, zu testen, ob Jarque-Bera der Normalverteilung in Python entspricht. Es hat einen bestimmten Referenzwert.

Normalverteilung ist ein Test der Normalität einer Bevölkerungsverteilung. Wenn die Sequenz der Normalverteilung folgt, folgt die JB-Statistik:

Python testet, ob Jarque-Bera der Normalverteilung entspricht

asymptotisch verteilt. Dabei ist n die Stichprobengröße, S und K die Schiefe bzw. Kurtosis der Zufallsvariablen. Die Berechnungsformel lautet wie folgt:


Python testet, ob Jarque-Bera der Normalverteilung entspricht


Die für Schiefe und Kurtosis in Pythons sicipy.stats aufgerufenen Funktionen sind stats.skew(y) und stats.kurtosis(y), wobei die Formel für Kurtosis

Python testet, ob Jarque-Bera der Normalverteilung entspricht

In Excel lautet die Berechnungsformel für Schiefe und Wölbung wie folgt:


Python testet, ob Jarque-Bera der Normalverteilung entspricht

Implementieren wir die Formeln zur Berechnung von Schiefe und Skew in der Scipy-Bibliothek von Python und erstellen Sie eine Normalverteilungstest.

Code

import numpy as npimport scipy.stats as statsdef self_JBtest(y):
    # 样本规模n
    n = y.size
    y_ = y - y.mean()    """
    M2:二阶中心钜
    skew 偏度 = 三阶中心矩 与 M2^1.5的比
    krut 峰值 = 四阶中心钜 与 M2^2 的比
    """
    M2 = np.mean(y_**2)
    skew =  np.mean(y_**3)/M2**1.5
    krut = np.mean(y_**4)/M2**2

    """
    计算JB统计量,以及建立假设检验
    """
    JB = n*(skew**2/6 + (krut-3 )**2/24)
    pvalue = 1 - stats.chi2.cdf(JB,df=2)
    print("偏度:",stats.skew(y),skew)
    print("峰值:",stats.kurtosis(y)+3,krut)
    print("JB检验:",stats.jarque_bera(y))    return np.array([JB,pvalue])

y1 = stats.norm.rvs(size=10)

y2 = stats.t.rvs(size=1000,df=4)

print(self_JBtest(y1))

print(self_JBtest(y2))
Ergebnis

=============== RESTART: C:\Users\tinysoft\Desktop\JB正态性检验.py =============== 

  偏度: 0.5383125387398069 0.53831253874 

  峰值: 2.9948926317585918 2.99489263176 

  JB检验: (0.48297818444514068, 0.78545737133644544) 

  [ 0.48297818  0.78545737] 

  偏度: -1.0488825341925703 -1.04888253419 

  峰值: 13.40804986639119 13.4080498664 

  JB检验: (4697.0050126426095, 0.0) 

  [ 4697.00501264     0.        ]

Das obige ist der detaillierte Inhalt vonPython testet, ob Jarque-Bera der Normalverteilung entspricht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn