R

逆變換方法,理論圖與樣本不匹配

  • February 4, 2022

假設密度函數是

$$ f_X(x)=\left{1(1+x)2x0 0otherwise.

\right. $$

我正在嘗試編寫一個算法來生成一個大小的樣本 n=104 通過使用逆變換方法從這個分佈。為什麼我的直方圖看起來不像下面的那樣“漂亮”?

n <- 10^4
u <- runif(n)
x <- (-u)/(u-1)
# histogram
hist(x, prob = TRUE, main = bquote(f(x)==1/((1+x)^2))) #density histogram of sample
y <- seq(0, 100, .01)
lines(y, 1/((1+y)^2))    #density curve f(x)

輸出: 在此處輸入圖像描述

另一個密度的漂亮直方圖: 漂亮的圖表

我看不出逆變換方法的實現有什麼問題。

第一個分佈是強烈右傾的。如果您運行模擬,您應該看到大約 95% 的觀察值將小於 19 (=0.95/0.05),但最大的樣本通常要大得多,比如幾千個。

因此,大多數樣本都很小,但非常大樣本的概率很小。直方圖上的條具有固定的寬度,因此您最終會看到第一個條包含大多數觀察值,然後是右側的其他幾個條,它們只是很小的矩形條。

對於這個特定的分佈,由於支持是正實數,您可以在對數尺度上繪製直方圖以更好地查看它,但您需要導出轉換後的密度。如果 X 有密度:

fX(x)=1(1+x)2,x0

然後你可以檢查 Y:=log(X) 有密度:

fY(y)=ey(1+ey)2,yR

然後,如果你繪製它:

hist(log(x), prob = TRUE, main = "Histogram for Y", xlab = "Y")
z <- seq(-10,10,length.out = 100)
lines(z, (exp(z)/(1+exp(z))^2))

直方圖

你可以看到他們的一致性相當好。

供參考,分佈 Y 稱為邏輯分佈,並且 X 具有對數邏輯分佈。

引用自:https://stats.stackexchange.com/questions/563147