一. QQ圖php
fig = plt.figure() res = stats.probplot(train['SalePrice'], plot=plt) plt.show()
scipy.stats 用法算法
# -*- coding: utf-8 -*-
from scipy import stats
from numpy import random
# Distributions
# 經常使用分佈可參考本文檔結尾處
# 分佈可使用的方法見下列清單
data=random.normal(size=1000)
stats.norm.rvs(loc=0,scale=1,size=10,random_state=None) # 生成隨機數 stats.norm.pdf(-1.96,loc=0,scale=1) # 密度分佈函數,畫密度分佈圖時使用 stats.norm.cdf(-1.96,loc=0,scale=1) # 累計分佈函數,-1.96對應2.5% stats.norm.sf(-1.96,loc=0,scale=1) # 殘存函數(=1-cdf),-1.96對應97.5% stats.norm.ppf(0.025,loc=0,scale=1) # 累計分佈函數反過來 stats.norm.isf(0.975,loc=0,scale=1) # 殘存函數反過來 stats.norm.interval(0.95,loc=0,scale=1) # 置信度爲95%的置信區間 stats.norm.moment(n=2,loc=0,scale=1) # n階非中心距,n=2時是方差 stats.norm.median(loc=0,scale=1) # Median of the distribution. stats.norm.mean(loc=0,scale=1) # Mean of the distribution. stats.norm.var(loc=0,scale=1) # Variance of the distribution. stats.norm.std(loc=0,scale=1) # Standard deviation of the distribution. stats.norm.fit(data) # fit 估計潛在分佈的參數 # Statistical functions stats.describe([1,2,3]) # 返回多個統計量 stats.gmean([1,2,4]) # 幾何平均數 n-th root of (x1 * x2 * ... * xn) stats.hmean([2,2,2]) # 調和平均數 n / (1/x1 + 1/x2 + ... + 1/xn) stats.trim_mean([1,2,3,5],0.25) # 砍頭去尾均值,按比例砍 stats.sem(data) # Calculates the standard error of the mean stats.mode([1,1,2]) # 衆數 stats.skew(data) # 偏度 stats.kurtosis(data) # 峯度 stats.moment(data,moment=3) # n階中心矩,3階就是偏度,4階就是峯度 stats.skewtest(data) # 檢驗偏度是否符合正態分佈的偏度 stats.kurtosistest(data) # 檢驗峯度是否符合正態分佈的峯度 stats.normaltest(data) # 檢驗是否符合正態分佈 stats.variation([1,2,3]) # 變異係數(=std/mean*100%) stats.find_repeats([1,1,2,2,3]) # 重複值查找 stats.itemfreq([1,1,2,2,3]) # 頻次統計 stats.percentileofscore([1,2,3,4,5],2) # 返回數值的分位數 stats.scoreatpercentile([1,2,3,4,5],80,interpolation_method="lower") # 返回分位數對應的數值 stats.bayes_mvs(data) # 返回均值/方差/標準差的貝葉斯置信區間 stats.iqr([1,2,3,4,5],rng=(25,75)) # 計算 IQR stats.zscore(data) # 計算 zscore
stats.f_oneway(data,data+data,data+data+data) # 單因素方差分析,參數是(樣本組1,樣本組2,樣本組3) stats.pearsonr(data,data+data) # 皮爾森相關係數 stats.spearmanr(data,data+data) # 斯皮爾曼秩相關係數 stats.kendalltau(data,data+data) # 肯德爾相關係數 stats.pointbiserialr([1,1,1,0,0,0],[1,2,3,4,5,6]) # 點二系列相關,第一個變量須要是二分類變量 stats.linregress(data,data+data) # 線性最小二乘迴歸 stats.ttest_1samp(data,popmean=0) # 單樣本 t-檢驗: 檢驗整體平均數的值 stats.ttest_ind(data,data+data) # 雙樣本 t-檢驗: 檢驗不一樣整體的差別 stats.ttest_rel(data,data+data) # 配對樣本 t-檢驗 stats.ttest_ind_from_stats(mean1=0,std1=1,nobs1=100,mean2=10,std2=1,nobs2=150,equal_var=True) # 根據統計量作 t-檢驗 stats.wilcoxon(data,data+data) # 一種非參數的配對樣本檢驗。t-檢驗假定高斯偏差。可使用威爾科克森符號秩檢驗, 放鬆了這個假設 stats.kstest(data,'norm') # Kolmogorov–Smirnov檢驗: 檢驗單同樣本是否服從某一預先假設的特定分佈 stats.ks_2samp(data,data+data) # 檢測兩樣本分佈是否相同 stats.ranksums(data,data+data) # Wilcoxon rank-sum statistic 檢測兩樣本分佈是否相同 stats.chisquare(data,data) # 卡方檢驗,第一個參數是樣本分佈,第二個參數是指望分佈 # Circular statistical functions # 適用於環形數據,如時間(60分鐘一圈),角度(360度一圈) # 例如 0度 與 360度 的均值應該是 0度 stats.circmean([0,360],high=0,low=360) # 均值 stats.circvar([0,360],high=0,low=360) # 方差 stats.circstd([0,360],high=0,low=360) # 標準差 # Contingency table functions # 列聯表 stats.chi2_contingency([[10,10,20],[20,20,20]],lambda_="log-likelihood") # 卡方檢驗,n*m的列聯表,每一個格子樣本數要大於5,lambda_默認皮爾森 stats.fisher_exact([[8,2],[1,5]],alternative="two-sided") # 費舍爾精確檢驗,2*2的列聯表,alternative:two-sided,less,greater stats.contingency.expected_freq([[10,10,20],[20,20,20]]) # 返回列聯表的指望頻次(各變量獨立時的預期頻次) import numpy as np; stats.contingency.margins(np.array([[10,10,20],[20,20,20]]))# 返回列聯表的行列和 # Plot-tests # 圖檢驗:probplot與Q-Q圖的差別:P-P圖是用分佈的累計比,而Q-Q圖用的是分佈的分位數來作檢驗 import matplotlib.pyplot as plt data=random.normal(loc=0,scale=1,size=500) stats.probplot(data,dist=stats.norm,sparams=(0,1),plot=plt) # P-P圖(probability plot),參數sparams傳的是均值與標準差 stats.boxcox_normplot(abs(data),-3,3,plot=plt) # 不知幹啥用,Compute parameters for a Box-Cox normality plot stats.ppcc_plot(data,-3,3,dist=stats.norm,plot=plt) # 不知幹啥用,Calculate and optionally plot probability plot correlation coefficient. stats.ppcc_max(data,dist=stats.norm) # 不知幹啥用,返回 PPCC 取最大時對應的位置 # Univariate and multivariate kernel density estimation # 核密度估計用於估計未知的密度函數,屬於非參數檢驗方法之一 stats.gaussian_kde([data,data+random.normal(size=500)]) # 不知幹啥用,Representation of a kernel-density estimate using Gaussian kernels. """ --------------------------------------------------------------------------------------------------------- 全部分佈都是 rv_continuous(連續型分佈) 與 rv_discrete(離散型分佈) 的實例 rv_continuous([momtype, a, b, xtol, ...]) A generic continuous random variable class meant for subclassing. rv_discrete([a, b, name, badvalue, ...]) A generic discrete random variable class meant for subclassing. rv_histogram(histogram, *args, **kwargs) Generates a distribution given by a histogram. Continuous distributions 連續型分佈 alpha An alpha continuous random variable. beta A beta continuous random variable. chi2 A chi-squared continuous random variable. f An F continuous random variable. gamma A gamma continuous random variable. lognorm A lognormal continuous random variable. ncx2 A non-central chi-squared continuous random variable. ncf A non-central F distribution continuous random variable. nct A non-central Student’s T continuous random variable. norm A normal continuous random variable. pareto A Pareto continuous random variable. t A Student’s T continuous random variable. uniform A uniform continuous random variable. wald A Wald continuous random variable. …… Multivariate distributions 多元分佈 multivariate_normal A multivariate normal random variable. matrix_normal A matrix normal random variable. multinomial A multinomial random variable. random_correlation A random correlation matrix. …… Discrete distributions 離散型分佈 binom A binomial discrete random variable. hypergeom A hypergeometric discrete random variable. nbinom A negative binomial discrete random variable. poisson A Poisson discrete random variable. randint A uniform discrete random variable.