數據特征分析-正太分布

期望值,即在一個離散性隨機變量試驗中每次可能結果的概率乘以其結果的總和。

若隨機變量X服從一個數學期望為μ、方差為σ^2的正態分布,記為N(μ,σ^2),其概率密度函數為正態分布的期望值μ決定了其位置,其標準差σ決定了分布的幅度。當μ = 0、σ = 1時的正態分布是標準正態分布。正態分布的圖示如下:

在實際場景中,數據可能不完全符合正態分布,因此需要對數據進行檢驗,驗證是否符合正態分布。

一、通過直方圖初步判斷

df = pd.DataFrame(np.random.randn(1000)+2,columns=['value'])
fig,axes = plt.subplots(1,2,figsize = (10,4))
ax1 = axes[0]
ax1.scatter(df.index,df.values)ax2 = axes[1]
df.hist(bins = 20,alpha = 0.7,ax = ax2)
df.plot(kind = 'kde',secondary_y = True,ax = ax2)  #使用y軸作為副坐標軸

?

二、通過qq圖判斷

qq圖通過把測試樣本數據的分位數與已知分布進行比較,從而檢驗數據的分布情況。

qq圖是一種散點圖,對應于正態分布的qq圖,就是有標準正態分布的分位數為橫坐標、樣本值為縱坐標的散點圖。

參考直線:四分之一分位點和四分之三分位點,看散點是否落在這條線附近。

qq圖繪制思路:

①數據清洗后進行排序(x(1)<x(2)<...<x(n))

②排序后,計算出每個數據對應的百分位p(i),即第i個數據x(i)為p(i)分位數,其中p(i) = (i-0.5)/n(pi有多種算法,該種最常用)

③繪制直方圖 + qq 圖,直方圖作為參考

# qq圖判斷
df = pd.DataFrame(np.random.randn(1000)+2,columns=['value'])
mean = df['value'].mean()
std = df['value'].std()
print('平均值為%.2f,標準差為%.2f'%(mean,std))
df.sort_values('value',inplace = True)
df_r = df.reset_index(drop = False) #t變為DataFrame
df_r['p'] = (df_r.index-0.5)/len(df_r)
df_r['q'] = (df_r['value']-mean)/std
print(df_r.head())
fig,axes = plt.subplots(1,3,figsize = (20,4))
des = df['value'].describe()
# x1,y1 = 0.25,des['25%']
# x2,y2 = 0.75,des['75%']

ax1 = axes[0]
ax1.scatter(df.index,df['value'])ax2 = axes[1]
df['value'].hist(bins = 20,ax = ax2)
df['value'].plot(kind='kde',secondary_y = True,ax = ax2)ax3 = axes[2]
ax3.plot(df_r['p'],df_r['value'],'b')
# ax3.plot([x1,x2],[y1,y2],'r')
ax3.plot([0.25,0.75],[des['25%'],des['75%']],'r')

?

?

三、k-s檢驗

k-s是比較一個頻率分布f(x)與理論分布g(x)的檢測方法,將樣本數據的累計頻率分布與特定的理論分布(比如正態分布)進行比較,如果兩者差距小,則推論樣本分布取自某特定分布。

H0:樣本的總體分布 服從 某特定分布

H1:樣本的總體分布 不服從 某特定分布

f(x):樣本的累計分布函數

g(x):理論分布的分布函數

D:f(x)-g(x)的絕對值的最大值,即max(abs(f(x)-g(x)))

根據D與D(u,a)比較,如果p>0.05則接受H0,p<0.05則拒絕H0接受H1.

from scipy import stats
data = np.random.randint(70,80,100)
df = pd.DataFrame(data,columns=['value'])
u = df['value'].mean()  #求均值
std = df['value'].std()  #求標準差
stats.kstest(df['value'],'norm',(u,std))
# KstestResult(statistic=0.12748380545258786, pvalue=0.07085249921876394)
# 結果中pvalue=0.07,大于0.05

?

k-s檢驗的推導過程

df = pd.DataFrame(data,columns=['value'])
u = df['value'].mean()  #求均值
std = df['value'].std()  #求標準差
print('樣本均值%.2f,標準差%.2f'%(u,std))
s = df['value'].value_counts().sort_index()
df_s = pd.DataFrame({'血糖濃度':s.index,'頻數':s.values})
df_s['累計頻數'] = df_s['頻數'].cumsum()
df_s['累計頻率'] = df_s['累計頻數']/df_s['頻數'].sum()
df_s['標準化取值'] = (df_s['血糖濃度'] - u)/std
df_s['理論分布'] = [0.0764,0.1314,0.2090,0.3085,0.4247,0.5438,0.6628,0.7673,0.8508,0.9099]  #根據標準化取值查詢正態分布表得到
df_s['D'] = abs(df_s['累計頻率'] - df_s['理論分布'])
dmax = df_s['D'].max()
print('實際觀測D值為%.4f'%dmax)
df_s['累計頻率'].plot(style = '--r')
df_s['理論分布'].plot(style = '--g')
plt.legend(loc = 'upper left')   #紅色虛線表示累計頻率、綠色虛線表示理論分布的注釋位置
# 樣本均值74.64,標準差3.23
# 實際觀測D值為0.1110

根據D值為0.11,查詢顯著性水平表,可得知p>0.1,即滿足正態分布。

?

轉載于:https://www.cnblogs.com/Forever77/p/11355131.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/391676.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/391676.shtml
英文地址,請注明出處:http://en.pswp.cn/news/391676.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode 338. 比特位計數

給定一個非負整數 num。對于 0 ≤ i ≤ num 范圍中的每個數字 i &#xff0c;計算其二進制數中的 1 的數目并將它們作為數組返回。 示例 1: 輸入: 2 輸出: [0,1,1] 示例 2: 輸入: 5 輸出: [0,1,1,2,1,2] 解題思路 偶數&#xff1a;和偶數除以2以后的數字&#xff0c;具有相…

r語言調用數據集中的數據集_自然語言數據集中未解決的問題

r語言調用數據集中的數據集Garbage in, garbage out. You don’t have to be an ML expert to have heard this phrase. Models uncover patterns in the data, so when the data is broken, they develop broken behavior. This is why researchers allocate significant reso…

為什么不應該使用(長期存在的)功能分支

Isn’t the git history in the picture above nice to work with? There are probably many problems in that repository, but one of them is most definitely the use of feature branches. Let’s see how such a bad thing became such a common practice.上面圖片中的g…

(轉) Spring 3 報org.aopalliance.intercept.MethodInterceptor問題解決方法

http://blog.csdn.net/henuhaigang/article/details/13678023 轉自CSDN博客&#xff0c;因為一個jar包沒引入困擾我好長時間 &#xff0c;當時正在做spring AOP 的一個小測試&#xff0c;總在報錯&#xff0c;最后發現自己是問題3&#xff0c;引入一個jar包得到了解決 一 開發環…

數據特征分析-相關性分析

相關性分析是指對兩個或多個具備相關性的變量元素進行分析&#xff0c;從而衡量兩個變量的相關密切程度。 相關性的元素之間需要存在一定的聯系或者概率才可以進行相關性分析。 相關系數在[-1,1]之間。 一、圖示初判 通過pandas做散點矩陣圖進行初步判斷 df1 pd.DataFrame(np.…

leetcode 354. 俄羅斯套娃信封問題(dp+二分)

給定一些標記了寬度和高度的信封&#xff0c;寬度和高度以整數對形式 (w, h) 出現。當另一個信封的寬度和高度都比這個信封大的時候&#xff0c;這個信封就可以放進另一個信封里&#xff0c;如同俄羅斯套娃一樣。 請計算最多能有多少個信封能組成一組“俄羅斯套娃”信封&#…

fastlane use_legacy_build_api true

fastlane版本號&#xff1a;fastlane 1.108.0 Xcode版本號&#xff1a;8.1 MacOS版本號&#xff1a;10.12 使用fastlane打包 - Release / Ad-Hoc包時報錯: [13:36:59]: There was an error exporting your application [13:36:59]: Unfortunately the new Xcode export API is …

獲取所有權_住房所有權經濟學深入研究

獲取所有權Note from Towards Data Science’s editors: While we allow independent authors to publish articles in accordance with our rules and guidelines, we do not endorse each author’s contribution. You should not rely on an author’s works without seekin…

scala 單元測試_Scala中的法律測試簡介

scala 單元測試Property-based law testing is one of the most powerful tools in the scala ecosystem. In this post, I’ll explain how to use law testing and the value it’ll give you using in-depth code examples.基于財產的法律測試是scala生態系統中最強大的工具…

getBoundingClientRect說明

getBoundingClientRect用于獲取某個元素相對于視窗的位置集合。 1.語法&#xff1a;這個方法沒有參數。 rectObject object.getBoundingClientRect() 2.返回值類型&#xff1a;TextRectangle對象&#xff0c;每個矩形具有四個整數性質&#xff08; 上&#xff0c; 右 &#xf…

robot:接口入參為圖片時如何發送請求

https://www.cnblogs.com/changyou615/p/8776507.html 接口是上傳圖片&#xff0c;通過F12抓包獲得如下信息 由于使用的是RequestsLibrary&#xff0c;所以先看一下官網怎么傳遞二進制文件參數&#xff0c;https://2.python-requests.org//en/master/user/advanced/#post-multi…

開發小Tips-setValue

字典添加數據請用 [dict setValue:value forKey:key] 代替 [dict setObject:value forKey:key] 復制代碼這樣在一些網絡傳參時不用考慮nil的情況&#xff0c;?

瀏覽器快捷鍵指南_快速但完整的IndexedDB指南以及在瀏覽器中存儲數據

瀏覽器快捷鍵指南Interested in learning JavaScript? Get my JavaScript ebook at jshandbook.com有興趣學習JavaScript嗎&#xff1f; 在jshandbook.com上獲取我JavaScript電子書 IndexedDB簡介 (Introduction to IndexedDB) IndexedDB is one of the storage capabilities …

Java-Character String StringBuffer StringBuilder

Java Character 類 Character 類用于對單個字符進行操作character 類在對象包裝一個基本類型char的值 char ch "a";char uniChar \u039A;char[] charArray {a, b, c};使用Character的構造方法創建一個Character類對象 Character ch new Character(a);Charact…

已知兩點坐標拾取怎么操作_已知的操作員學習-第3部分

已知兩點坐標拾取怎么操作有關深層學習的FAU講義 (FAU LECTURE NOTES ON DEEP LEARNING) These are the lecture notes for FAU’s YouTube Lecture “Deep Learning”. This is a full transcript of the lecture video & matching slides. We hope, you enjoy this as mu…

缺失值和異常值處理

一、缺失值 1.空值判斷 isnull()空值為True&#xff0c;非空值為False notnull() 空值為False&#xff0c;非空值為True s pd.Series([1,2,3,np.nan,hello,np.nan]) df pd.DataFrame({a:[1,2,np.nan,3],b:[2,np.nan,3,hello]}) print(s.isnull()) print(s[s.isnull() False]…

leetcode 503. 下一個更大元素 II(單調棧)

給定一個循環數組&#xff08;最后一個元素的下一個元素是數組的第一個元素&#xff09;&#xff0c;輸出每個元素的下一個更大元素。數字 x 的下一個更大的元素是按數組遍歷順序&#xff0c;這個數字之后的第一個比它更大的數&#xff0c;這意味著你應該循環地搜索它的下一個更…

setNeedsDisplay看我就懂!

前言&#xff1a; setNeedsDisplay異步執行的。它會自動調用drawRect方法&#xff0c;這樣可以拿到 UIGraphicsGetCurrentContext&#xff0c;就可以繪制了。而setNeedsLayout會默認調用layoutSubViews&#xff0c;處理子視圖中的一些數據。 一、著手 我定義了一個UIView的子類…

如何使用ArchUnit測試Java項目的體系結構

by Emre Savc?由EmreSavc? 如何使用ArchUnit測試Java項目的體系結構 (How to test your Java project’s architecture with ArchUnit) In this post, I will show you an interesting library called ArchUnit that I met recently. It does not test your code flow or bu…

解決ionic3 android 運行出現Application Error - The connection to the server was unsuccessful

在真機上啟動ionic3打包成的android APK,啟動了很久結果彈出這個問題&#xff1a; Application Error - The connection to the server was unsuccessful 可能是我項目資源太多東西了&#xff0c;啟動的時間太久了&#xff0c;導致超時了。 解決方案是在項目目錄下的config.xml…