【程序員眼中的統計學(7)】正態分布的運用:正態之美


正態分布的運用:正態之美

作者 白寧超
2015年10月15日18:30:07

摘要:程序員眼中的統計學系列是作者和團隊共同學習筆記的整理。首先提到統計學,很多人認為是經濟學或者數學的專利,與計算機並沒有交集。誠然在傳統學科中,其在以上學科發揮作用很大。然而隨着科學技術的發展和機器智能的普及,統計學在機器智能中的作用越來越重要。本系列統計學的學習基於《深入淺出統計學》一書(偏向代碼實現,需要讀者有一定基礎,可以參見后面PPT學習)。正如(吳軍)先生在《數學之美》一書中闡述的,基於統計和數學模型對機器智能發揮重大的作用。諸如:語音識別、詞性分析、機器翻譯等世界級的難題也是從統計中找到開啟成功之門鑰匙的。尤其是在自然語言處理方面更顯得重要,因此,對統計和數學建模的學習是尤為重要的。最后感謝團隊所有人的參與。( 本文原創,轉載注明出處正態分布的運用:正態之美  )

 目錄


【程序員眼中的統計學(1)】 信息圖形化:第一印象

【程序員眼中的統計學(2)】集中趨勢度量:分散性、變異性、強大的距

【程序員眼中的統計學(3)】概率計算:把握機會

【程序員眼中的統計學(4)】離散概率分布的運用:善用期望

【程序員眼中的統計學(5)】排列組合:排序、排位、排

【程序員眼中的統計學(6)】幾何分布、二項分布及泊松分布:堅持離散

【程序員眼中的統計學(7)】正態分布的運用:正態之美

【程序員眼中的統計學(8)】統計抽樣的運用:抽取樣本

【程序員眼中的統計學(9)】總體和樣本的估計:進行預測

【程序員眼中的統計學(10)】假設檢驗的運用:研究證據

【程序員眼中的統計學(11)】卡方分布的應用

【程序員眼中的統計學(12)】相關與回歸:我的線條如何?

1正態分布描述

正態分布是最重要的一種概率分布。正態分布概念是由德國的數學家和天文學家Moivre(棣莫弗)於1733年受次提出的,但由於德國數學家Gauss(高斯)率先將其應用於天文學家研究,故正態分布又叫高斯分布。正態分布起源於誤差分析,早期的天文學家通過長期對一些天體的觀測收集到了大量數據,並利用這些數據天體運動的物理模型,其中第谷與開 普勒在建模中提出了一條原則—“模型選擇的最終標准是其與觀測數據的符合程度”,這個“符合程度”實質上蘊涵了誤差概率理論的問題,伽例略是第一個在其著作中提出隨機誤差這一概念的人。因其曲線呈鍾形,因此人們又經常稱之為鍾形曲線。我們通常所說的標准正態分布是μ = 0,σ = 1的正態分布。

1.1正態分布的定義

正態分布(Normal distribution)又名高斯分布(Gaussian distribution),是一個在數學、物理及工程等領域都非常重要的概率分布,在統計學的許多方面有着重大的影響力。正態分布之所以被稱為正態,是因為它的形態看起來合乎理想。在現實生活中,遇到測量之類的大量連續數據時,你"正常情況下"會期望看到這種形態。

1.2正態分布符號定義

若隨機變量X服從一個數學期望為μ、方差為的高斯分布,記為N(μ,)。其概率密度函數為正態分布的期望值μ決定了其位置,其標准差σ決定了分布的幅度。因其曲線呈鍾形,因此人們又經常稱之為鍾形曲線。正態分布有兩個參數,即均數(μ)和標准差(σ)。 μ是位置參數,當σ固定不變時, μ越大,曲線沿橫軸,越向右移動;反之, μ越小,則曲線沿橫軸,越向左移動。是形狀參數,當μ固定不變時,σ越大,曲線越平闊;σ越小,曲線越尖峭。通常用表示標准正態分布。

1.3正態分布公式

正態分布函數密度曲線可以表示為:x服從正態分布,記為X~N(m,s2)其中μ為均值,s為標准差X∈(-∞,+ )標准正態分布另正態分布的μ為0s1

標准正態分布圖形如下所示

 

1.4正態分布函數密度曲特征

A、正態分布函數密度曲線在橫軸上方均數處最高。

B、正態分布函數密度曲線以均數為中心,左右對稱。

C、正態分布函數密度曲線有兩個參數,即均數(μ)和標准差( s )。 μ是位置參數,當s固定不變時, μ越大,曲線沿橫軸,越向右移動;反之, μ越小,則曲線沿橫軸,越向左移動。是形狀參數,當μ固定不變時, s越大,曲線越平闊; s 越小,曲線越尖峭。通常用N( μ , )表示均數為μ ,方差為s的正態分布。用N(0,1)表示標准正態分布。

D、正態分布函數密度曲線下面積的總和為1。

1.5正態概率計算公式

如圖下圖所示a到b的陰影部分面積其中ab為自變量,μ為期望s為標准差。

對於標准正態分布概率求解公式如下,即令一般正態概率公式μ0s1,上下限為負無窮到正無窮即可得到,通常我們用來表示標准正態概率。

1.5標准正態分布方差和期望

標准正態分布期望E(x)=μ

標准正態分布方差Var(x)=

1.6正態概率計算步驟

第一步:確定數據分布:在做正態概率分計算,首先確定數據是否符合正態分布,確定正態分布的均值和方差。對一些不符和正態分布的數據進行取對數或者樣本重新排列稱符合正態分布的標准后,在確定均值和方差。

第二步:標准化(平移,收放):對一般正態分布進行標准化,標准化的過程為先平移,平移過程用公式表達即,再對結果進行收放,收放過程即為,其中y= 則標准化公式:其中Z為標准分,x為隨機變量,μ為均值,s為標准差。

第三步:使用概率表:通過標准分,進行查表(標准正態分布概率表),得到具體的概率。

2正態概率的應用

例:某公司准備通過考試招工300名。其中280名正式工,20名臨時工。實際報考人數為1675名。考試滿分400分。考試不久后,通過當地新聞媒體得到如下消息:考試平均成績是166分,360分以上的高分考生31名。某考生的成績為256分。問他能否被錄取?若被錄取,能否是正式工?

數學建模:由具體問題,我們可以假設考生的成績分布符合正態分布。設考生的成績為x,最低分數線為,均值μ166,方差設為,正態分布可以記作:

解決思想:根據條件求出方差 根據正態分布求出最低分數線 ,根據考生的成績算出該考生在所有考生中的比例

3正態分布的優缺點

3.1正態分布優點

對於社會上遇到的大部分問題,其概率分布規律基本都滿足正態分布,為了計算某種概率,我們就可以通過數學建模利用正態分布方便解決問題。

一般來說,如果一個量是由許多微小的獨立隨機因素影響的結果,那么就可以認為這個量具有正態分布(見中心極限定理)。從理論上看,正態分布具有很多良好的性質 ,許多概率分布可以用它來近似;還有一些常用的概率分布是由它直接導出的,例如對數正態分布、t分布、F分布等。

在一定條件下可以利用正態分布近似估算二項分布和泊松分布。

3.2正態分布缺點

無法近似估算符合幾何分布的問題,無法精確解決離散數據概率。

3.3正態分布不適用場景

    數據離散性太大,數據不符合正態分布特點,通過對數據進行取對數或者重新排序亦無法達到正態分布特點,無法得出均數(期望)和標准差。

3.4正態分布適用場景

    連續型數據或者數據離散性小,數據基本符合正態分布特點,或者對不符合的數據進行取對數或者樣本重新排序達到正態分布特點,有具體的均數(期望)和標准差。

4正態概率算法輸入數據

4.1正態概率算法輸入數據

* @param μ double,表示正態分布均數(期望)

* @param double,表示正態分布標准差(方差的開平方)

4.2正態概率算法中間結果

* @param z double,表示正態分布標准差

4.3正態分布算法輸出結果

* @return S1 double,表示正態概率值

4.4正態概率算法圖形化展示

5正態概率算法異常和誤差

5.1正態概率算法可能異常或誤差

異常:算出的標准差超出概率表出現異常

誤差:保留小數位數造成不精確

5.2正態概率算法異常或誤差處理

異常:解決,過小捕獲異常並給予概率為0。

誤差:解決,進行小數點位數自定義保留封裝,根據具體精度進行設置。

6正態概率算法描述

6.1類和方法描述

類源碼見源程序: Distribution.src.NormalDistribution.zheng04

方法描述:通過對需要計算標准概率的的正態分布的均值和標准差進行計算得出具體標准分再通過調用org.apache.commons.math3.distribution類來實現。

6.2類和方法調用接口

見源程序:Distribution.src.NormalDistribution.zheng04

zheng04.java 下包含如下方法:

cumulativeProbability(double z) //需要求的正態分布的標准分

調用封裝方法:

NumFormat.java 下如下方法:

ZeroFormat (double num ,int n) //對num數值保留位數n的自行設置

        /**
         * 保留幾位小數
         * @param num double,預備格式數據
         * @return result double,保留指定小數點數據
         */
        public static double ZeroFormat(double num,int n)
        {
            BigDecimal bigDecimal=new BigDecimal(num);
            //DecimalFormat ff = new DecimalFormat("#.0000");  //保留四位小數
            //double result = Double.valueOf(ff.format(num));
            //return result;
            return bigDecimal.setScale(n, BigDecimal.ROUND_HALF_UP).doubleValue();
                    //setscale(n,BigDecimal.ROUND_HALF_UP).doubleValue;
        }

 

6.3源碼

package NormalDistribution;
import java.util.Scanner;

import org.apache.commons.math3.distribution.NormalDistribution;
/**
 * 
 * @(#)zheng01.java 
 * @Description:描述:根據提供的正態分布的均值和標准差得到正態概率的具體實現。
 * @Definitions:定義:在處理符合正態分布的連續型數據,知道了這組數據的均值和方差為了求得隨機變量符合某個范圍的概率為:P(X<x)這類問題稱之為正態概率。表達式為:X~N(μ,σ^2)             
 * @Explanation:符號解釋:μ為該組連續數據的均值;σ為該組連續數據的標准差。
 * @Comments:條件:在一組連續型數據,已知該組數據的均值和標准差,求解隨機變量x的正態概率。這種情況下適用於本算法。
 * @優點:知道正態分布具體的均值和標准差可以利用此算法快速求出小於隨機變量X的正態概率。
 * @缺點:無法近似估算符合幾何分布的問題,無法精確解決離散數據概率,對於沒有給出均值或者標准差的正態分布無法計算。
 * @適用場景:連續型數據或者數據離散性小,數據基本符合正態分布特點,或者對不符合的數據進行取對數或者樣本重新排序達到正態分布特點,有具體的均數(期望)和標准差。。
 * @不適用場景:數據離散性太大,數據不符合正態分布特點,通過對數據進行取對數或者重新排序亦無法達到正態分布特點,無法得出均數(期望)和標准差。
 * @輸入/出參數:見具體方法
 * @異常/誤差:
 *          異常:輸入數據不合法,如:要求輸入double數據,輸入字母。
 *          誤差:保留小數位數造成不精確
 *       解決:
 *          異常:輸入不合法給予提示。
 *          誤差:進行小數點位數自定義保留封裝,根據具體精度進行設置。
 * @Create Date:  2015年8月6日16:39:25
 * @since   JDK1.6  s
 * @author Magicfairytail
 */
public class zheng04 {

    public static void main(String[] args) {
        /**
         * 均值為 μ標准差σ的正態分布的具體實現
         * @param μ double型保留四位小數,表示正態分布均值
         * @param σ double型保留四位小數,表示正態分布標准差
         * @return S1 double型保留四位小數,表示p(X<x)的正態概率
         */
        NormalDistribution normalDistributioin = new NormalDistribution(0,1);//新建一個標准正態分布對象
        Scanner in=new Scanner(System.in);
        do {
            System.out.println("請輸入ц:");
            double ц=in.nextDouble();
            //ц=NumberFormat.ZeroFormat(ц);//對所得數據保留4位小數
            System.out.println("請輸入σ:");
            double σ=in.nextDouble();
            //σ=NumberFormat.ZeroFormat(σ);    //對所得數據保留4位小數            

            System.out.println("請輸入x:");
            double x=in.nextDouble();
            //x=NumberFormat.ZeroFormat(x);//對所得數據保留4位小數
            double z=(x-ц)/σ;
            z=NumberFormat.ZeroFormat(z,4);//對所得數據保留4位小數
                try {
                    double S1 = normalDistributioin.cumulativeProbability(z);
                    S1=NumberFormat.ZeroFormat(S1,4);//對所得數據保留4位小數
                    System.out.println("正態分布概率為:");
                    System.out.println(S1);
                    System.out.println();
                    System.out.println("請問您還要繼續輸入嗎?(1/0)");
                    
                } catch (Exception e) {
                    // 這里的異常為所得的結果過小導致異常,直接將結果自動置0
                    System.out.println("正態分布概率為:");
                    System.out.println("0");
                    System.out.println();
                    System.out.println("請問您還要繼續輸入嗎?(1/0)");
                }
            
        } while (in.nextInt()==1);//while循環,當輸入的值為1繼續,為其他值則終止程序
    }

}

 

7正態分布的變換

7.1在隨機變量獨立性的情況下,正態分布可以做以下的變換

; ;其中 ;

7.2在隨機變量獨立性的情況下,正態分布方差和期望的變換

; ; ;

;; ;

那么

7.3在隨機變量獨立觀察的情況下,正態分布方差和期望的變換

8正態分布估算二項分布

8.1正態分布估算二項分布條件

a、二項分布和正態分布的形狀十分相似

b、np和nq雙雙大於5可以用正態分布近似代替二項分布

若符合以上2個條件,正態分布的期望等於np,方差等於npq即;

其中n為二項分布實驗總次數,p為一次成功的概率,q為。記作

8.2誤差修正

8.2.1連續修正概念

將離散數據轉換為連續標度時,所做的小幅調整,這個過程叫做連續修正

8.2.2連續修正使用方法

總結起來就是"小加大減",即在計算 這種形式的概率時,關鍵是要確保所選擇的范圍中包含離散數值a,在一個連續標度上一般加上相鄰兩個自變量單位距離的一半(eg:修正后即為;自變量X的單位距離為1);而在在計算 這種形式的概率時,一定要確保所選擇的范圍中包含離散數值b,在一個連續標度上一般減去相鄰兩個自變量單位距離的一半(eg:修正后即為;自變量X的單位距離為1);處理介於型數據時,需要進行連續性修正,以便確保a和b均包含在內(eg:修正后即為;自變量X的單位距離為1) tip:這里的數據都為離散型數據,因為我們是拿正態分布來估算二項分布,所以就會存在誤差,通過對離散數據的連續修正則可以減小誤差。

9正態分布估算泊松分布

9.1正態分布估算泊松分布條件

a、泊松分布的形狀與正態分布相似

b、如果 ,則可用進行近似

若符合以上2個條件,我們就可以用正態分布近似估算泊松分布,正態分布的期望等於,方差等於; 其中為泊松分布的平均發生次數(或者發生率)。

tip:近似計算時注意連續性修正。

10正態分布估算應用

10.1正態分布近似估算二項分布應用

在12個問題中答對5題或5題以下的概率,其中每個問題只有兩個備選答案。

使用二項分布計算如下:

由題可知,即求出 ,其中

各個概率用下列公式進行計算:

其中

我們需要求 ,其中。為此,需要求。然后將算得的所有概率加起來。各個概率為:

將以上概率加起來,得到總概率為:

(保留三位小數)

使用正態分布近似計算:

,即 ,近似正態分布為,也就是。我們要求這里注意連續性修正應為,先計算標准差(保留兩位小數)

這與二項分布計算的0.387十分接近。

10.2正態分布近似估算泊松分布

游樂園過山車發生故障的次數符合泊松分布,其中 。求第一年的故障次數小於52次的概率有多大?

使用泊松分布計算:

如果某物體以某種平均頻率發生故障,則這種情況符合泊松分布,以均值為其參數,如果X表示一年內的故障次數,則

我們需要求 ,因此我們要求出52以內的所有X值分別對應的概率。

這個概率太過復雜這里給出計算方法

使用正態分布近似估算泊松分布:

如果用X表示一年內故障次數,則

由於 較大,我們可以用正態分布近似代替泊松分布。即可以用

我們需要求故障次數小於52的概率,由於用連續概率分布近似代替離散概率分布,所以必須進行連續性修正。我們不應將52計算在內,只需要求出

計算標准分

(保留兩位小數)

通過查詢標准正態概率表可得結果為0.9656,則一年內的故障次數小於52的概率為0.9656。

11 總結與共享 


11.1總結

11.2共享 

PPT:http://yunpan.cn/cFBpqXeWsV5eA 訪問密碼 ed27

開源代碼:http://yunpan.cn/cFBpBb46hgaA6 訪問密碼 8ff6


免責聲明!

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



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