R語言的各種統計分布函數

2021-02-21 生信技能樹

來源於我的R語言讀書筆記:

http://www.bio-info-trainee.com/1656.html

首先推薦一個博客:

1.二項分布Binomial distribution:binom

二項分布指的是N重伯努利實驗,記為X ~ b(n,p),E(x)=np,Var(x)=np(1-p)

pbinom(q,size,prob), q是特定取值,比如pbinom(8,20,0.2)指第8次伯努利實驗的累計概率。size指總的實驗次數,prob指每次實驗成功發生的概率

dbinom(x,size,prob), x同上面的q同含義。dfunction()對於離散分布來說結果是特定值的概率,對連續變量來說是密度(Density)

rbinom(n, size, prob),產生n個b(size,prob)的二項分布隨機數

qbinom(p, size, prob),quantile function 分位數函數。

分位數:

若概率0<p<1,隨機變量X或它的概率分布的分位數Za。是指滿足條件p(X>Za)=α的實數。如t分布的分位數表,自由度f=20和α=0.05時的分位數為1.7247。 --這個定義指的是上側α分位數

α分位數:

實數α滿足0 <α<1 時,α分位數是使P{X< xα}=F(xα)=α的數xα

雙側α分位數是使P{X<λ1}=F(λ1)=0.5α的數λ1、使 P{X>λ2}=1-F(λ2)=0.5α的數λ2。

qbinom是上側分位數,如qbinom(0.95,100,0.2)=27,指27之後P(x>=27)>=0.95。即對於b(100,0.2)為了達到0.95的概率至少需要27次重複實驗。

2.負二項分布negative binomial distribution (帕斯卡分布)nbinom

擲骰子,擲到一即視為成功。則每次擲骰的成功率是1/6。要擲出三次一,所需的擲骰次數屬於集合 { 3, 4, 5, 6, ... } 。擲到三次一的擲骰次數是負二項分布的隨機變量。

dnbinom(4,3,1/6)=0.0334898,四次連續三次1的概率為這個數。

概率函數為f(k;r,p)=choose(k+r-1,r-1)*p^r*(1-p)^k, 當r=1時這個特例分布是幾何分布

rnbinom(n,size,prob,mu) 其中n是需要產生的隨機數個數,size是概率函數中的r,即連續成功的次數,prob是單詞成功的概率,mu未知..(mu是希臘字母υ的讀音)

3.幾何分布Geometric Distribution,geom

n次伯努利試驗,前n-1次皆失敗,第n次才成功的機率

dgeom(x,prob),注意這裡的x取值是0:n,即dgeom(0,0.2)=0.2,以上的二項分布和負二項分布也是如此。

ngeom(n,prob)

4.超幾何分布Hypergeometric Distribution,hyper

它描述了由有限個(m+n)物件中抽出k個物件,成功抽出指定種類的物件的次數(不歸還)。

概率:p(x) = choose(m, x) choose(n, k-x) / choose(m+n, k) for x = 0, ..., k.

當n=1時,這是一個0-1分布即伯努利分布,當n接近無窮大∞時,超幾何分布可視為二項分布

rhyper(nn,m,n,k),nn是需要產生的隨機數個數,m是白球數(計算目標是取到x個白球的概率),n是黑球數,k是抽取出的球個數

dhyper(x, m, n, k)

5.泊松分布 Poisson Distribution,pois

p(x) = lambda^x exp(-lambda)/x!

for x = 0, 1, 2, .... The mean and variance are E(X) = Var(X) = λ.  x ~ π(λ)

泊松分布的參數λ是單位時間(或單位面積)內隨機事件的平均發生率.泊松分布適合於描述單位時間內隨機事件發生的次數。如某一服務設施在一定時間內到達的人數,電話交換機接到呼叫的次數,汽車站臺的候客人數,機器出現的故障數,自然災害發生的次數等等.

rpois(n, lambda)

dpois(x,lambda)

連續型

6.均勻分布 Uniform Distribution,unif

f(x) = 1/(max-min) for min <= x <= max.

runif(n,min,max).

生成16位數的隨機數:as.character(runif(1,1000000000000000,9999999999999999))

dunif(x,min,max)=1,恆定等於1/(max-min).

對於連續變量,dfunction的值是x去特定值代入概率密度函數得到的函數值。

7.正態分布Normal Distribution,norm

f(x) = 1/(sqrt(2 pi) sigma) e^-((x - mu)^2/(2 sigma^2))

其中mu是均值,sigma是standard deviation標準差

理論上可以證明如果把許多小作用加起來看做一個變量,那麼這個變量服從正態分布

rnorm(n,mean=0,sd=1)後兩個參數如果不填則默認為0,1。

dnorm(x,mean,sd),sd是標準差。

畫出正態分布概率密度函數的大致圖形:

x<-seq(-3,3,0.1)

plot(x,dnorm(x)) plot中的x,y要有相關關係才會形成函數圖。

qnorm(p,mean,sd),這個還是上側分位數,如qnorm(0.05)=-1.644854,即x<=這個數的累計概率小於0.05

3sigma法則:對於正態分布的x,x取值在(mean-3sd,mean+3sd)幾乎是在肯定的。

因為pnorm(3)-pnorm(-3)=0.9973002

用正太分布產生一個16位長的隨機數字:

as.character(10^16*rnorm(1))

8.伽瑪分布Gamma Distribution,gamma

http://zh.wikipedia.org/w/index.php?title=伽瑪分布&variant=zh-cn

假設隨機變量X為 等到第α件事發生所需之等候時間。

f(x)= 1/(s^a Gamma(a)) x^(a-1) e^-(x/s) for x >= 0, a > 0 and s > 0.

Gamma分布中的參數α,稱為形狀參數(shape parameter),即上式中的s,β稱為尺度參數(scale parameter)上式中的a

E(x)=s*a, Var(x)=s*a^2. 當shape=1/2,scale=2時,這樣的gamma分布是自由度為1的開方分

dgamma(x,shape,rate=1,scale=1/rate), 請注意R在這裡提供的rate是scale尺度參數的倒數,如果dgamma(0,1,2)則表示dgamma(0,shape=1,rate=2),而 非dgamma(0,shape=1,scale=2)

pgamma(q, shape, rate = 1, scale = 1/rate, lower.tail = TRUE,

log.p = FALSE)

qgamma(p, shape, rate = 1, scale = 1/rate, lower.tail = TRUE,

log.p = FALSE)

rgamma(n, shape, rate = 1, scale = 1/rate)

9.指數分布Exponential Distribution,exp

指數分布可以用來表示獨立隨機事件發生的時間間隔,比如旅客進機場的時間間隔、中文維基百科新條目出現的時間間隔等等。

記作X ~ Exponential(λ)。

f(x) = lambda e^(- lambda x) for x >= 0.

其中lambda λ > 0是分布的一個參數,常被稱為率參數(rate parameter). E(x)=1/λ,Var(x)=1/λ^2

dexp(x, rate = 1, log = FALSE)

pexp(q, rate = 1, lower.tail = TRUE, log.p = FALSE)

qexp(p, rate = 1, lower.tail = TRUE, log.p = FALSE)

rexp(n, rate = 1)

假設在公交站臺等公交車平均10分鐘有一趟車,那麼每小時候有6趟車,即每小時出現車的次數~ Exponential(1/6)

我們可以產生10個這些隨機數看看rexp(10,1/6)

60/(rexp10,1/6)即為我們在站臺等車的隨機時間,如下:

[1]  6.443148 24.337131  6.477096  2.824638 15.184945 14.594903

[7]  7.133842  8.222400 42.609784 15.182827

可以看見竟然有一個42.6分鐘的隨機數出現,據說這種情況下你可以投訴上海的公交公司。

不過x符合指數分布,1/x還符合指數分布嗎?

pexp(6,1/6)=0.6321206, 也就是說這種情況下只有37%的可能公交車會10分鐘以內來。

按照以上分析一個小時出現的公交車次數應該不符合指數分布。

10.卡方分布(non-central)Chi-Squared Distribution,chisq

它廣泛的運用於檢測數學模型是否適合所得的數據,以及數據間的相關性。數據並不需要呈正態分布

k個標準正態變量的平方和即為自由度為k的卡方分布。

E(x)=k,Var(x)=2k.

dchisq(x, df, ncp=0, log = FALSE)

pchisq(q, df, ncp=0, lower.tail = TRUE, log.p = FALSE)

qchisq(p, df, ncp=0, lower.tail = TRUE, log.p = FALSE)

rchisq(n, df, ncp=0)

其中df為degrees of freedom。ncp是non-centrality parameter (non-negative).ncp=0時是central卡方分布,ncp不為0時,表示這個卡方分布是由非標準正態分布組合而成,ncp=這些正態 分布的均值的平方和。

11.β分布Beta Distribution,beta

變量x僅能出現於0到1之間。

空氣中含有的氣體狀態的水分。表示這種水分的一種辦法就是相對溼度。即現在的含水量與空氣的最大含水量(飽和含水量)的比值。我們聽到的天氣預告用語中就經常使用相對溼度這個名詞。

相對溼度的值顯然僅能出現於0到1之間(經常用百分比表示)。冬季塔裡木盆地的日最大相對溼度和夏季日最小相對溼度。證實它們都符合貝塔分布

dbeta(x, shape1, shape2, ncp = 0, log = FALSE)

pbeta(q, shape1, shape2, ncp = 0, lower.tail = TRUE, log.p = FALSE)

qbeta(p, shape1, shape2, ncp = 0, lower.tail = TRUE, log.p = FALSE)

rbeta(n, shape1, shape2, ncp = 0)

shape1,shape2是beta分布的兩個參數。E(x)=s1/(s1+s2),var(x)=s1*s2/(s1+s2)^2 * (s1+s2+1)

12.t分布Student t Distribution,t

應用在當對呈正態分布的母群體的均值進行估計。當母群體的標準差是未知的但卻又需要估計時,我們可以運用學生t 分布。

學生t 分布可簡稱為t 分布。其推導由威廉·戈塞於1908年首先發表,當時他還在都柏林的健力士釀酒廠工作。因為不能以他本人的名義發表,所以論文使用了學生 (Student)這一筆名。之後t 檢驗以及相關理論經由羅納德·費雪的工作發揚光大,而正是他將此分布稱為學生分布。

dt(x, df, ncp, log = FALSE)

pt(q, df, ncp, lower.tail = TRUE, log.p = FALSE)

qt(p, df, ncp, lower.tail = TRUE, log.p = FALSE)

rt(n, df, ncp)

其中df是自由度,ncp是non-centrality parameter delta,If omitted, use the central t distribution。ncp出現時表示分布由非標準的卡方分布構成。

13.F分布

一個F-分布的隨機變量是兩個卡方分布變量的比率。F-分布被廣泛應用於似然比率檢驗,特別是方差分析中

df(x, df1, df2, ncp, log = FALSE)

pf(q, df1, df2, ncp, lower.tail = TRUE, log.p = FALSE)

qf(p, df1, df2, ncp, lower.tail = TRUE, log.p = FALSE)

rf(n, df1, df2, ncp)

df1,df2是兩個自由度,ncp同t分布中的ncp。

相關焦點

  • R學習用R語言做分析(3)——統計分布
    這一篇的內容是數據描述,就從R中內嵌的一些簡單分布開始吧。        一、各種統計分布在R中的名稱       R給出了詳盡的統計表。這張表取自《An Introduction to R》中概率分布一章,基本涵蓋了R中所有的概率函數。
  • R語言的各種統計分布函數,你應該了解的都在這!
    正在學習R語言統計學的小夥伴,可能會被各種專有名詞所困擾,小編為大家梳理了一下,話不多說,進入正題
  • R語言統計相關函數總結
    R語言在統計分析方面起了很大的作用,並且其開開放性更是促進了大量分析R包的出現。
  • R語言:用R計算各種統計值
    (normal distribution)標準正態分布(standard normal distribution)使用R語言的內建實例數據框:faithfulhead(faithful)## eruptions waiting## 1 3.600 79## 2 1.800 54##
  • 基於Python腳本的R語言的函數
    本文介紹了採用創建一個Python腳本,用該腳本模仿R風格的函數的方法來方便地進行統計。 是用R語言還是用Python語言?這是一個曠日持久的爭論。在此,我們可以嘗試採用折中路線:創建一個Python腳本,用該腳本模仿R風格的函數,來方便地進行統計!
  • R語言 | 描述性統計(上)
    R: The R Project for Statistical Computinghttps://www.r-project.org/RStudio:https://rstudio.com/從本文開始,我們將正式進入使用R進行統計分析的路程,在此期間我們會同時對統計分析方法和R語言實現進行詳細解釋,並加入相應的繪圖方式。
  • R語言 | 推論性統計
    R: The R Project for Statistical Computinghttps://www.r-project.org/RStudio:https://rstudio.com/之前我們提到過,統計可以分為描述性統計和推論性統計(inferential statistics)。
  • 什麼是R語言
    書中給出了大量的範例代碼,是深入學習實踐R語言的良師益友,對R語言初學小白比較友好。什麼是R語言?我們猜想它是一種程式語言,類似C語言,Visual Basic等。既然已經有那麼多程式語言了,R語言究竟有什麼過人之處呢。我們為什麼要學習R語言?R語言以能夠創建漂亮的圖形而聞名,可以處理各種統計問題。很多強大的功能來自社區開發的數以千計的擴展(包)。
  • R語言:Newton法、似然函數
    hello,大家好,上一篇分享了如何用R語言實現蒙特卡洛模擬,並用蒙特卡洛模擬計算了分布的均值和方差,今天給大家分享如何用R語言來進行矩估計和似然函數的求解。因為在求解矩估計和似然函數時,可能會遇到非線性方程組,所以先給大家介紹一下如何用Newton法來求解非線性方程組。
  • R語言實戰(7)——基本統計分析
    R語言實戰(4)——數據管理R語言實戰(5) ——高級數據管理R語言實戰(6)——基本圖形引言:在前幾章中,我們學習了將數據導入R的幾種方法中,以及使用各種函數組織數據並將其轉換成為可用的格式。在完成前面2步後,我們下一步通常就是使用數值描述每個變量的分布,接下來則是兩兩探索變量之間的關係。本章,我們將學習用於生成基本的描述性統計量和推斷統計量的R函數。首先,我們初步學習定量變量的位置和尺度的衡量方式。然後我們進一步學習生成類別型變量的頻數表和列聯表的方法(以及連帶的卡方檢驗)。接下來,我們將考察連續型和有序型變量相關係數的多種形式。
  • 【R函數學習】R語言時間序列函數整理
    #arma模型library(fUnitRoots) #進行單位根檢驗library(FinTS) #調用其中的自回歸檢驗函數library(fGarch) #GARCH模型library(nlme) #調用其中的gls函數library(fArma) #進行擬合和檢驗【基本函數
  • Python+統計學 | 探索常用的數據分析統計分布
    本文用Python統計模擬的方法,介紹四種常用的統計分布,包括離散分布:二項分布和泊松分布,以及連續分布,指數分布和正態分布,最後查看人群的身高和體重數據所符合的分布。蒙特卡洛方法的名字來源也頗為有趣,相傳另一位發明者烏拉姆的叔叔經常在摩洛哥的蒙特卡洛賭場輸錢,賭博是一場概率的遊戲,故而以概率為基礎的統計模擬方法就以這一賭城命名了。使用統計模擬,首先要產生隨機數,在Python中,numpy.random 模塊提供了豐富的隨機數生成函數。
  • R語言從入門到精通:Day6-R語言數據操作進階及控制結構
    這裡就不一一舉例示範函數的使用了,大家不妨自己動手試一試。2.  統計函數(掌握)下面給大家列出常見的統計函數。概率函數(了解)數學課上,概率和統計都是放在一起學習的,有一門課程就叫做概統,但是這裡我們把概率函數和統計函數分開講解。
  • 醫學統計與R語言:標準Z值一定服從標準正態分布?
    將原始分數轉換成對應的Z分數不會改變其分布狀況,也不會改變其相對位置,所改變的只是分數值。對於任何形狀分布都可以計算Z值,所得的Z分數將會呈現原始分數的形狀。若原始數據為非正態分布,標準正態分布表不再適用。
  • R語言從入門到精通:Day12--R語言統計--回歸分析
    回歸作為一個廣義的概念,涵蓋了許多變種,R語言中也為其提供了強大而豐富的函數和選項(但顯然選項越多,對初學者越不友好),早在2005年,R中就有200多種關於回歸分析的函數 (https://cran.r-project.org/doc/contrib/Ricci-refcard-regression.pdf,這個文檔提供了部分回歸分析函數列表,供大家參考)。
  • 【R知識】R語言apply函數族筆記
    現在我的看法傾向於,R不是一種通用型的程式語言,而是一種統計領域的軟體工具。因此,不能用通用型編程的思維來設計R代碼。在    Andrew Lim 關於R和Python的對比回答中,R是一種面向數組(array-oriented)的語法,它更像數學,方便科學家將數學公式轉化為R代碼。而Python是一種通用程式語言,更工程化。在使用R時,要儘量用array的方式思考,避免for循環。
  • R函數了解一下?
    R函數是什麼?其實就是對一些程式語言的封裝,編寫函數可以減少重複代碼的書寫,讓R腳本可以簡潔運行,並且可以快速進行傳播。一般一個函數可以完成一項特定功能,統計中的函數比如sum、var、mean等,都有自己的工作範圍查看函數原始碼沒有被封裝的:敲函數名不加括號就可以查看自定義的函數myfunc <- function (選項參數) {    函數體}一定會用到的循環判斷常用的格式if條件判斷,如score=70
  • R語言向量化運算:apply函數族用法心得
    R語言和Python的忠實擁躉,為成為一名未來的數據科學家而奮鬥終生。個人公眾號:數據科學家養成記 (微信ID:louwill12)當初入坑R語言的時候,就在各種場合看到老司機的忠告,「儘量避免使用循環!」一開始並不明白這其中的奧義,直到後來對R語言有深入接觸後,才領會R語言在向量化運算方面的強大功能。本篇內容就總結小編在使用R語言向量化運算apply函數族的一些心得體會。
  • R 與 Python 雙語解讀統計分析基礎
    本系列文章的主要目的是結合 R 和 Python 兩種語言的代碼來理解統計分析中的一些概念和方法。主要是理解相關數學概念,不偏倚語言。為了讓掌握或學習不同語言的讀者都能閱讀,本號特提供兩種語言版本。在進行數據集的實際統計建模和分析之前,使用概要統計信息以及繪製數據的統計圖形進行一些簡單的探索通常會很有用。
  • R語言從入門到精通:Day10-R語言統計入門代碼大全
    到目前為止,R語言的數據操作和基礎繪圖部分已經講解完畢,換句話說,大家應該已經能將數據導入R中,並運用各種函數處理數據使其成為可用的格式,然後將數據用各種基礎圖形展示