使用R擬合分布


使用R擬合分布

幾個常用的概率函數介紹

這里,參考R語言實戰,以及[Fitting Distribution with R]的附錄。

一.認識各種分布的形態

1.1 連續型隨機變量的分布

首先,我們來回顧一遍各類分布函數的表達式,及其關系。
先逐一介紹與標准正態分布相關的一些分布:正態分布,卡方分布,t−

分布,F−分布,Wishart

分布。
先上個圖,一睹為快。
以上幾個分布之間的關系如以下結構圖所示。
[廣義線性模型導論3rd edition,p10]

1.1.1 正態分布

正態分布N(μ,σ2)

的密度函數:

正態分布的形態如圖。

library(ggplot2)
library(reshape2)
library(dplyr)
#產生分布數據
set.seed(123)
data_norm<-data.frame(x1 = rnorm(n = 200, m = 0, sd = 1),
                                          x2 = rnorm(n = 200, m = 0, sd = sqrt(2)),
                                          x3 = rnorm(n = 200, m = 0, sd = sqrt(0.5)),
                                          x4 = rnorm(n = 200, m = 1, sd = 1),
                                          x5 = rnorm(n = 200, m = -1, sd =1)
)
data_norm_long<-melt(data_norm)
ggplot(data = data_norm_long, aes(x = value, colour = variable))
  geom_density()

  ggtitle

("正態分布密度函數")

正態分布可以衍生出如下的分布。

1.1.2 卡方分布

若Zi∼ i.i.dN(0,1)

,則有

set.seed(123)
data_chisq<-data.frame(x1 = rchisq(200, 10, ncp = 0),
                       x2 = rchisq(200, 50, ncp =0),
                       x3 = rchisq(200, 100, ncp = 0))
data_chisq_long<-melt(data_chisq)

## No id variables; using all as measure variables

ggplot(data = data_chisq_long, aes(x = value, colour = variable))
  geom_density()
  ggtitle


("卡方分布密度函數")

1.1.3t−

分布

,並且Z和X2獨立,則有

set.seed(123)
data_t<-data.frame(x1 = rt(200, 10, ncp = 0),
                       x2 = rt(200, 50, ncp =0),
                       x3 = rt(200, 100, ncp = 0))
data_t_long<-melt(data_t)

## No id variables; using all as measure variables

ggplot(data = data_t_long, aes(x = value, colour = variable))
  geom_density()
  ggtitle

("t-分布密度函數")

1.1.4F−

分布

,並且X1和X2相互獨立,則有

set.seed(123)
data_f<-data.frame(x1 = rf(200,df1 = 10, df2 = 10, ncp = 0),
                       x2 = rf(200,df1 = 5, df2 = 3, ncp =0),
                       x3 = rf(200, df1 = 3, df2 = 5, ncp = 0))
data_f_long<-melt(data_f)

## No id variables; using all as measure variables

ggplot(data = data_f_long, aes(x = value, colour = variable))
  geom_density()
  ggtitle

("F-分布密度函數")

1.1.5Wishart

分布

Wishart

分布是χ2分布在p

維正態情況下的推廣。這里對多維情況暫不展開介紹。

1.2 離散型隨機變量的分布

1.2.1 伯努利(Bernoulli

)分布

伯努利分布記為Bernoulli(p)

,只有0和1兩種取值。概率測度函數如下:

1.2.2 二項(Binomial

)分布

二項分布B(n,p)

的可能取值范圍為0,1,...,n。其概率測度函數如下:


set.seed(123)
data_binom<-data.frame(x1 = rbinom(n = 1000, size = 10, prob = 0.6),
                                          x2 = rbinom(n = 1000, size = 50, prob = 0.6),
                                          x3 = rbinom(n = 1000, size = 100, prob = 0.6),
                                          x4 = rbinom(n = 1000, size = 500, prob = 0.6))

data_binom_long<-melt(data_binom)
ggplot(data = data_binom_long, aes(x = value, colour = variable))
  geom_density()

  ggtitle

("二項分布概率分布圖")

1.2.3 負二項(NegativeBinomial

)分布

負二項分布。

1.2.4 幾何(Geometric

)分布

1.2.5 泊松(Poission

)分布

1.3 指數分布族及其相互聯系

1.3.1 指數分布族

[廣義線性模型導論3rd edition,p58]

1.3.2 指數分布

1.3.3 Weibull分布

1.3.4 Beta分布

1.3.5 Gama分布

1.3.6 雙指數(DoubleExponential

)分布

1.4 其他分布

1.4.1 均勻(Uniform

)分布

1.4.2 柯西(Cauchy

)分布

1.4.3 對數正態(Lognormal

)分布

1.5 可視化探索的步驟舉例

首先,通過直方圖,經驗累積分布形態等來觀察數據的分布形態。

#產生一組服從N(10,2)分布的隨機數
set.seed(123)
x.norm<-rnorm(n = 200, m =10, sd = 2)
#繪制直方圖
hist(x.norm, main = "觀測樣本的直方圖")

#擬合密度曲線
plot(density(x.norm), main = "密度函數估計")

#繪制累積經驗分布圖
plot(ecdf(x.norm), main = "累積經驗分布函數")

#繪制QQ圖
z.norm<-(x.norm - mean(x.norm))/sd(x.norm)
qqnorm(z.norm)
abline(0,1)

其次,通過QQ圖來驗證數據是否符合正態分布。

二.模型選擇

三.參數估計

模擬估計

矩估計

極大似然估計

四.擬合優度指標

五.擬合優度檢驗


免責聲明!

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



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