簡體   English   中英

混合泊松分布:R 中的均值和方差

[英]Mixture Poisson distribution: mean and variance in R

所以,我試圖模擬混合泊松分布:

data2 <- data.frame(x = c(rpois(n = 50, lambda = 0), rpois(n = 450, lambda = 10)))

然后在其上繪制直方圖和密度函數,對於分布函數,我使用了spatstat包中的函數dmixpois 這是情節的代碼:

ggplot(data2, aes(x = x)) +
  geom_histogram(aes(y = ..density..), bins = 15) +
  geom_line(aes(x = x, y = dmixpois(data2$x, mu = 9, sd = sqrt(41))))

這是情節: 在此處輸入圖像描述

顯然,密度函數是錯誤的。 據我所知,混合泊松分布的均值是單一分布均值的線性組合,方差為 Eλ + Varλ。 在圖中我只使用了方差項,但如果我添加 lambda 的期望值,我會得到更加陡峭的密度。 計算有什么問題?

您正在模擬的“混合泊松”與spatstat中的混合泊松模型不同,后者只是假設泊松分布的 lambda 本身是一個正態分布的隨機變量。 從文檔:

實際上,泊松均值參數 lambda 通過設置 lambda = invlink(Z) 隨機化,其中 Z 具有高斯 N(μ,σ²) 分布。

因此,它不會模擬兩個獨立泊松分布的混合。

看起來您正在模擬的是零膨脹泊松分布,也就是說,對於任何給定的觀察,有可能獲得零計數泊松分布計數的分布。 VGAM包中有一個特定的dzipois

還要記住,泊松分布是一個離散的概率分布,所以你不能用一條連續的線正確地顯示它,而只能用整數值處的點或尖峰來表示。

如果要繪制與模擬匹配的分布,可以嘗試以下操作:

set.seed(1) # To make the example reproducible

data2 <- data.frame(x = c(rpois(n = 50, lambda = 0), 
                          rpois(n = 450, lambda = 10)))


ggplot(data2) +
  geom_histogram(aes(x = x, y = ..density..), breaks = 0:21 - 0.5) +
  geom_point(data = data.frame(x =0:20, y = VGAM::dzipois(0:20, 10, 1/10)),
             aes(x, y))

在此處輸入圖像描述

首先, lambda = 0的泊松分布是退化的並且總是恆定為零:

rpois(10, lambda = 0)
[1] 0 0 0 0 0 0 0 0 0 0

這就是為什么您在x = 0處出現尖峰的原因。

其次,泊松分布是離散的,因此沒有密度(或 pdf)。 相反,您可以在直方圖中繪制相對頻率(就像您所做的那樣)來估計X = x的概率。

混合分布的平均值只是基礎分布的加權平均值。 在您的情況下,基礎分布的權重為 10% 和 90%,因此 E[X] = 0.1 E[X_1] + 0.9 E[X_2] = 0,9

混合分布的方差由 Var(X) = Var(\Lambda) + E[Lambda] 給出

所以一切都正常工作:

set.seed(1)

df <- data.frame(x = c(rpois(50, 1), rpois(450, 9))) 

mean(df$x)
sd(df$x)
var(df$x)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM