欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python數(shù)據(jù)正態(tài)性檢驗(yàn)實(shí)現(xiàn)過(guò)程

 更新時(shí)間:2020年04月18日 09:43:57   作者:落日峽谷  
這篇文章主要介紹了Python數(shù)據(jù)正態(tài)性檢驗(yàn)實(shí)現(xiàn)過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

在做數(shù)據(jù)分析或者統(tǒng)計(jì)的時(shí)候,經(jīng)常需要進(jìn)行數(shù)據(jù)正態(tài)性的檢驗(yàn),因?yàn)楹芏嗉僭O(shè)都是基于正態(tài)分布的基礎(chǔ)之上的,例如:T檢驗(yàn)。

在Python中,主要有以下檢驗(yàn)正態(tài)性的方法:

1.scipy.stats.shapiro ——Shapiro-Wilk test,屬于專(zhuān)門(mén)用來(lái)做正態(tài)性檢驗(yàn)的模塊,其原假設(shè):樣本數(shù)據(jù)符合正態(tài)分布。

注:適用于小樣本。

其函數(shù)定位為:

def shapiro(x):
  """
  Perform the Shapiro-Wilk test for normality.

  The Shapiro-Wilk test tests the null hypothesis that the
  data was drawn from a normal distribution.

  Parameters
  ----------
  x : array_like
    Array of sample data.

  Returns
  -------
  W : float
    The test statistic.
  p-value : float
    The p-value for the hypothesis test.

x參數(shù)為樣本值序列,返回值中第一個(gè)為檢驗(yàn)統(tǒng)計(jì)量,第二個(gè)為P值,當(dāng)P值大于指定的顯著性水平,則接受原假設(shè)。

2.scipy.stats.kstest(K-S檢驗(yàn)):可以檢驗(yàn)多種分布,不止正態(tài)分布,其原假設(shè):數(shù)據(jù)符合正態(tài)分布。

其函數(shù)定義為:

def kstest(rvs, cdf, args=(), N=20, alternative='two-sided', mode='approx'):
  """
  Perform the Kolmogorov-Smirnov test for goodness of fit.

  This performs a test of the distribution G(x) of an observed
  random variable against a given distribution F(x). Under the null
  hypothesis the two distributions are identical, G(x)=F(x). The
  alternative hypothesis can be either 'two-sided' (default), 'less'
  or 'greater'. The KS test is only valid for continuous distributions.

  Parameters
  ----------
  rvs : str, array or callable
    If a string, it should be the name of a distribution in `scipy.stats`.
    If an array, it should be a 1-D array of observations of random
    variables.
    If a callable, it should be a function to generate random variables;
    it is required to have a keyword argument `size`.
  cdf : str or callable
    If a string, it should be the name of a distribution in `scipy.stats`.
    If `rvs` is a string then `cdf` can be False or the same as `rvs`.
    If a callable, that callable is used to calculate the cdf.
  args : tuple, sequence, optional
    Distribution parameters, used if `rvs` or `cdf` are strings.
  N : int, optional
    Sample size if `rvs` is string or callable. Default is 20.
  alternative : {'two-sided', 'less','greater'}, optional
    Defines the alternative hypothesis (see explanation above).
    Default is 'two-sided'.
  mode : 'approx' (default) or 'asymp', optional
    Defines the distribution used for calculating the p-value.

     - 'approx' : use approximation to exact distribution of test statistic
     - 'asymp' : use asymptotic distribution of test statistic

  Returns
  -------
  statistic : float
    KS test statistic, either D, D+ or D-.
  pvalue : float
    One-tailed or two-tailed p-value.

參數(shù)是:

rvs:待檢驗(yàn)數(shù)據(jù)。

cdf:檢驗(yàn)分布,例如'norm','expon','rayleigh','gamma'等分布,設(shè)置為'norm'時(shí)表示正態(tài)分布。

alternative:默認(rèn)為雙側(cè)檢驗(yàn),可以設(shè)置為'less'或'greater'作單側(cè)檢驗(yàn)。

model:'approx'(默認(rèn)值),表示使用檢驗(yàn)統(tǒng)計(jì)量的精確分布的近視值;'asymp':使用檢驗(yàn)統(tǒng)計(jì)量的漸進(jìn)分布。

其返回值中第一個(gè)為統(tǒng)計(jì)量,第二個(gè)為P值。

3.scipy.stats.normaltest:正態(tài)性檢驗(yàn),其原假設(shè):樣本來(lái)自正態(tài)分布。

其函數(shù)定義為:

def normaltest(a, axis=0, nan_policy='propagate'):
  """
  Test whether a sample differs from a normal distribution.

  This function tests the null hypothesis that a sample comes
  from a normal distribution. It is based on D'Agostino and
  Pearson's [1]_, [2]_ test that combines skew and kurtosis to
  produce an omnibus test of normality.


  Parameters
  ----------
  a : array_like
    The array containing the sample to be tested.
  axis : int or None, optional
    Axis along which to compute test. Default is 0. If None,
    compute over the whole array `a`.
  nan_policy : {'propagate', 'raise', 'omit'}, optional
    Defines how to handle when input contains nan. 'propagate' returns nan,
    'raise' throws an error, 'omit' performs the calculations ignoring nan
    values. Default is 'propagate'.

  Returns
  -------
  statistic : float or array
    ``s^2 + k^2``, where ``s`` is the z-score returned by `skewtest` and
    ``k`` is the z-score returned by `kurtosistest`.
  pvalue : float or array
    A 2-sided chi squared probability for the hypothesis test.

其參數(shù):

axis=None 可以表示對(duì)整個(gè)數(shù)據(jù)做檢驗(yàn),默認(rèn)值是0。

nan_policy:當(dāng)輸入的數(shù)據(jù)中有nan時(shí),'propagate',返回空值;'raise' 時(shí),拋出錯(cuò)誤;'omit' 時(shí),忽略空值。

其返回值中,第一個(gè)是統(tǒng)計(jì)量,第二個(gè)是P值。

4.scipy.stats.anderson:由 scipy.stats.kstest 改進(jìn)而來(lái),用于檢驗(yàn)樣本是否屬于某一分布(正態(tài)分布、指數(shù)分布、logistic 或者 Gumbel等分布)

其函數(shù)定義為:

def anderson(x, dist='norm'):
  """
  Anderson-Darling test for data coming from a particular distribution

  The Anderson-Darling tests the null hypothesis that a sample is
  drawn from a population that follows a particular distribution.
  For the Anderson-Darling test, the critical values depend on
  which distribution is being tested against. This function works
  for normal, exponential, logistic, or Gumbel (Extreme Value
  Type I) distributions.

  Parameters
  ----------
  x : array_like
    array of sample data
  dist : {'norm','expon','logistic','gumbel','gumbel_l', gumbel_r',
    'extreme1'}, optional
    the type of distribution to test against. The default is 'norm'
    and 'extreme1', 'gumbel_l' and 'gumbel' are synonyms.

  Returns
  -------
  statistic : float
    The Anderson-Darling test statistic
  critical_values : list
    The critical values for this distribution
  significance_level : list
    The significance levels for the corresponding critical values
    in percents. The function returns critical values for a
    differing set of significance levels depending on the
    distribution that is being tested against.

其參數(shù):

x和dist分別表示樣本數(shù)據(jù)和分布。

返回值有三個(gè),第一個(gè)表示統(tǒng)計(jì)值,第二個(gè)表示評(píng)價(jià)值,第三個(gè)是顯著性水平;評(píng)價(jià)值和顯著性水平對(duì)應(yīng)。

對(duì)于不同的分布,顯著性水平不一樣。

Critical values provided are for the following significance levels:

  normal/exponenential
    15%, 10%, 5%, 2.5%, 1%
  logistic
    25%, 10%, 5%, 2.5%, 1%, 0.5%
  Gumbel
    25%, 10%, 5%, 2.5%, 1%

關(guān)于統(tǒng)計(jì)值與評(píng)價(jià)值的對(duì)比:當(dāng)統(tǒng)計(jì)值大于這些評(píng)價(jià)值時(shí),表示在對(duì)應(yīng)的顯著性水平下,原假設(shè)被拒絕,即不屬于某分布。

If the returned statistic is larger than these critical values then for the corresponding significance level, the null hypothesis that the data come from the chosen distribution can be rejected.

5.skewtest 和kurtosistest 檢驗(yàn):用于檢驗(yàn)樣本的skew(偏度)和kurtosis(峰度)是否與正態(tài)分布一致,因?yàn)檎龖B(tài)分布的偏度=0,峰度=3。

偏度:偏度是樣本的標(biāo)準(zhǔn)三階中心矩。

峰度:峰度是樣本的標(biāo)準(zhǔn)四階中心矩。

6. 代碼如下:

import numpy as np
from scipy import stats

a = np.random.normal(0,2,50)
b = np.linspace(0, 10, 100)

# Shapiro-Wilk test
S,p = stats.shapiro(a)
print('the shapiro test result is:',S,',',p)

# kstest(K-S檢驗(yàn))
K,p = stats.kstest(a, 'norm')
print(K,p)

# normaltest
N,p = stats.normaltest(b)
print(N,p)

# Anderson-Darling test
A,C,p = stats.anderson(b,dist='norm')
print(A,C,p)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)獲取系統(tǒng)臨時(shí)目錄及臨時(shí)文件的方法示例

    Python實(shí)現(xiàn)獲取系統(tǒng)臨時(shí)目錄及臨時(shí)文件的方法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)獲取系統(tǒng)臨時(shí)目錄及臨時(shí)文件的方法,結(jié)合實(shí)例形式分析了Python文件與目錄操作相關(guān)函數(shù)與使用技巧,需要的朋友可以參考下
    2019-06-06
  • python實(shí)現(xiàn)俄羅斯方塊游戲(改進(jìn)版)

    python實(shí)現(xiàn)俄羅斯方塊游戲(改進(jìn)版)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)俄羅斯方塊游戲的改進(jìn)版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Django怎么在admin后臺(tái)注冊(cè)數(shù)據(jù)庫(kù)表

    Django怎么在admin后臺(tái)注冊(cè)數(shù)據(jù)庫(kù)表

    這篇文章主要介紹了Django怎么在admin后臺(tái)注冊(cè)數(shù)據(jù)庫(kù)表,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python中文件的寫(xiě)入讀取以及附加文字方法

    Python中文件的寫(xiě)入讀取以及附加文字方法

    今天小編就為大家分享一篇Python中文件的寫(xiě)入讀取以及附加文字方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法詳解

    VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法詳解

    這篇文章主要介紹了VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法,較為詳細(xì)的分析了VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的具體步驟、相關(guān)命令與操作注意事項(xiàng),需要的朋友可以參考下
    2019-07-07
  • pytest-fixture簡(jiǎn)介及其用法講解

    pytest-fixture簡(jiǎn)介及其用法講解

    這篇文章主要介紹了pytest-fixture及其用法,最基本的用法就是一個(gè)fixture作為一個(gè)測(cè)試用例的參數(shù)傳入,然后就可以在該測(cè)試用例中使用該fixture,需要的朋友可以參考下
    2023-01-01
  • Python的numpy選擇特定行列的方法

    Python的numpy選擇特定行列的方法

    這篇文章主要介紹了Python的numpy選擇特定行列的方法,有時(shí)需要抽取矩陣中特定行的特定列,比如,需要抽取矩陣x的0,1行的0,3列,結(jié)果為矩陣域,需要的朋友可以參考下
    2023-08-08
  • Python實(shí)現(xiàn)復(fù)制文檔數(shù)據(jù)

    Python實(shí)現(xiàn)復(fù)制文檔數(shù)據(jù)

    我們百度搜索一些東西得時(shí)候,經(jīng)常找到文檔里面然后就會(huì)發(fā)現(xiàn)需要充值才能復(fù)制!怎么可以不花錢(qián)也保存呢?今天就分享給大家一個(gè)python獲取文檔數(shù)據(jù)得方法,需要的可以收藏一下
    2022-12-12
  • Python中跨越多個(gè)文件使用全局變量的方法

    Python中跨越多個(gè)文件使用全局變量的方法

    全局變量是不屬于函數(shù)范圍的變量,可以在整個(gè)程序中使用,這表明全局變量也可以在函數(shù)體內(nèi)部或外部使用,這篇文章主要介紹了Python中跨越多個(gè)文件使用全局變量,需要的朋友可以參考下
    2023-09-09
  • PyQt實(shí)現(xiàn)異步數(shù)據(jù)庫(kù)請(qǐng)求的實(shí)戰(zhàn)記錄

    PyQt實(shí)現(xiàn)異步數(shù)據(jù)庫(kù)請(qǐng)求的實(shí)戰(zhàn)記錄

    開(kāi)發(fā)軟件的時(shí)候不可避免要和數(shù)據(jù)庫(kù)發(fā)生交互,但是有些 SQL 請(qǐng)求非常耗時(shí),如果在主線程中發(fā)送請(qǐng)求,可能會(huì)造成界面卡頓,本文將介紹一種讓數(shù)據(jù)庫(kù)請(qǐng)求變得和前端的 ajax 請(qǐng)求一樣簡(jiǎn)單,希望對(duì)大家有所幫助
    2023-12-12

最新評(píng)論