comp <- sample(c(0, 1), size = 100, prob = c(0.7, 0.3), replace = t)
rnorm(100, mean = ifelse(comp == 0, 0, 1), sd = ifelse(comp == 0, 1, 2))
猜測分布是兩個正態分佈的混合,需要估計出函式中的5個引數:p、μ1、μ2、σ1、σ2。
在r中編寫對數似然函式時,5個引數都存放在向量para中,由於nlminb()是計算極小值的,因此函式function中最後返回的是對數似然函式的相反數。
1
2
3
4
5
6
7
8
> l1=
function
(para)
+
做引數估計,使用nlminb()之前最大的要點是確定初始值,初始值越接近真實值,計算的結果才能越精確。我們猜想資料的分布是兩個正態的混合,概率p直接用0.5做初值即可。通過直方圖中兩個峰對應的x軸數值(大概為50和80>,就可以將初值設定為μ1和μ2。而概率p處於((0,1)區間內,引數σ1,σ2是正態分佈的標準差,必須大於0,所以通過lower和upper兩個引數進行一定的約束。
1
2
3
4
5
6
7
8
9
10
11
12
> geyser.est=
nlminb
(
c
(0.5,50,10,80,10),l1,lower=
c
(0.0001,-
inf
,0.0001,-
inf
,0.0001),upper=
c
(0.9999,
inf
,
inf
,
inf
,
inf
))
>
options
(digits=3)
> geyser.est$par
[1] 0.308 54.203 4.952 80.360 7.508
> p=geyser.est$par[1]
> mu1=geyser.est$par[2];sigma1=geyser.est$par[3]
> mu2=geyser.est$par[4];sigma2=geyser.est$par[5]
> x=
seq
(40,120)
>
#將估計的參凌丈函式代入原密度函式
> f=p*
dnorm
(x,mu1,sigma1)+(1-p)*
dnorm
(x,mu2,sigma2)
>
hist
(waiting,freq=f)
>
lines
(x,f)
SKlearn 隨機生成測試樣本 分類樣本
from sklearn.datasets.samples generator import make classification x,y make classification n samples 200,n features 4,n informative 2,n redundant 2,n ...
Matlab 概率密度函式
以下函式均是對應分布模型的概率密度函式 函式函式功能 y binopdf x,n,p 產生引數為n,p的二項分布,x為取值點,y為對應的值 y poisspdf x,lambda 泊松分布,引數為lambda y geopdf x,p 幾何分布,引數為p y unidpdf x,m 離散型均勻分布,...
均勻分布的概率密度函式 理解概率密度函式
概率密度函式是概率論中的核心概念之一,用於描述連續型隨機變數所服從的概率分布。在機器學習中,我們經常對樣本向量x的概率分布進行建模,往往是連續型隨機變數。很多同學對於概率論中學習的這一抽象概念是模糊的。在今天的文章中,sigai將直觀的解釋概率密度函式的概念,幫你更深刻的理解它。回憶我們在學習概率論...