簡體   English   中英

如何從離散的概率質量函數創建直接概率分布函數

[英]How to create a dsicrete probability distribution function from a discretised probability mass function

因此,我在R中使用了“執行器”軟件包來離散化連續的γcdf,並返回概率質量函數。

嘗試將我生成的概率質量函數轉換為累積分布函數:

disc.gamma.cdf <- function(y)
{
values <- discretize(pgamma(x, 20, 0.2), 
from = 0, to = 300, method = "rounding")
result <- sum(values[0:y])
return(result)
}

但是,當我希望對某個值范圍內的discrete.gamma.cdf求和時,將返回一個錯誤:

    i <- 0:4
    sum(disc.gamma.cdf(i))
    Warning message:
In 0:y : numerical expression has 5 elements: only the first used

對於R來說並不是那么好,所以我們將不勝感激。

您幾乎正確。 要記住的主要事情是R數組索引從1開始,並且一個函數將不會自動在數組上工作,必須對其向量化。

因此,通過兩次更改,您的代碼是正確的:

disc.gamma.cdf <- function(y)
{
   values <- discretize(pgamma(x, 20, 0.2), 
                        from = 0, to = 300, method = "rounding")
   result <- sum(values[1:y])  # From 1 not 0
   return(result)
}
i <- 1:5
sum(  sapply(i, disc.gamma.cdf) )

sapply(i, disc.gamma.cdf)沿i的每個sapply(i, disc.gamma.cdf)調用函數,然后將其求和。

如果您想要代碼的矢量化版本,可以執行以下操作:

disc.gamma.cdf <- function(y)
{
   values <- discretize(pgamma(x, 20, 0.2), 
                        from = 0, to = 300, method = "rounding")
   cumsum(values)[y]  # last expression is returned anyway
}
i <- 1:5
sum(  disc.gamma.cdf(i) )

cumsum函數可計算所有可能的總和,現在您可以按向量將其求和。

暫無
暫無

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

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