python數據分布檢驗


1、讀取數據

2、查看數據基本特征

3、繪制圖形

在直方圖的基礎上畫一個真正的正態分布的圖與繪制QQ圖

plt.hist(log_returns.flatten(),bins = 70,normed=True)
x = np.linspace(plt.axis()[0],plt.axis()[1])
plt.plot(x, scs.norm.pdf(x,loc = r/M,scale = sigma/np.sqrt(M)),'r',lw = 2)
plt.show()
sm.qqplot(log_returns.flatten()[::500],line='s')
plt.show()

 

DataFrame.hist(bins=10)
#Make a histogram of the DataFrame.

 

5、檢驗是否符合正態

u = pd.Series(x.tolist()).mean()
std = pd.Series(x.tolist()).std() kstest(pd.Series(x.tolist()), 'norm',(u,std)) from scipy.stats import shapiro shapiro(pd.Series(x.tolist())) from scipy.stats import anderson anderson(pd.Series(x.tolist()), dist ='norm') from scipy.stats import normaltest normaltest(pd.Series(x.tolist()),axis=0)

  這個正態分布的假設檢驗的零假設當然就是分布是正態分布的。結果我們發現,p-value很大,所以我們不能拒絕原假設。當然,這一塊邏輯是存在一定缺陷的,也就是說,我們不能拒絕原假設,但是統計意義是,其實我們並不能直接接受這就是正態分布這一零假設了,所以通常我們都需要配上QQ圖來說明。

6、繪制箱形圖,觀察是否存在異常點

7、將數據轉化成正態分布數據

7.1線性變化

  一旦我們收集到變量的樣本數據,我們就可以對樣本進行線性變化,並計算Z得分:

  1. 計算平均值
  2. 計算標准偏差
  3. 對於每個 x,使用以下方法計算 Z:

7.2使用Boxcox變換

  我們可以使用 SciPy 包將數據轉換為正態分布:

scipy.stats.boxcox(x, lmbda=None, alpha=None)
import pandas as pd
import numpy as np import seaborn as sns df = pd.read_excel(r"非正態數據集.xlsx") sns.distplot(df["price"],color = "#D86457") from scipy import stats stats.boxcox_normmax(df["price"]) x = stats.boxcox(df["price"],stats.boxcox_normmax(df["price"])) sns.distplot(x,color = "#D86457") fig = plt.figure() ax = fig.add_subplot(111) stats.boxcox_normplot(df["price"], -20, 20,plot = ax) plt.axvline(x = stats.boxcox_normmax(df["price"]),color = "#D86457") plt.show()
 

7.3使用 Yeo-Johnson 變換

sklearn.preprocessing.PowerTransformer(method=’yeojohnson’,standardize=True, copy=True)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM