R

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

  • February 4, 2022

假設密度函數是

$$ f_X(x)=\left{\begin{aligned}\frac{1}{(1+x)^2} & \quad x \ge 0 \ 0 & \quad \text{otherwise.}\end{aligned}\right. $$

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

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 $ 有密度:

$$ f_X(x) = \frac{1}{(1+x)^2}, \quad x \geq 0 $$

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

$$ f_Y(y) = \frac{e^y}{(1+e^y)^2}, y \in \mathbb{R} $$

然後,如果你繪製它:

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

comments powered by Disqus