R中物流配送的整合
Integration of Logistic distribution in R
Logistic分布的概率密度函数$f(x) = e^{-x} (1+e^{-x})^{-2}$
LL_cdf <- function(x) ((1+exp(-x))^(-1) # cumulative distribution function of logistic distribution
LL_pdf <- function(x) ( (exp(-x))*(1+exp(-x))^-2 ) # Probability density function (pdf) of logistic distribution
其支持的任何发行版的pdf集成必须是一个。我们在其支持 $x \in [-\infty,\infty]$ 上集成了 logistic distribution 的 pdf,但它给出了错误消息。我们在下面的代码 中提到了 错误消息。为什么 logistic 分布的 pdf 不整合其支持 $x \in [-\infty,\infty]$ in R?
integrate( LL_pdf, lower = -Inf, upper = Inf)$value
Error in integrate(LL_pdf, lower = -Inf, upper = Inf) :
non-finite function value
它与密度函数的实现有关,因为它会为较大的负值生成 Inf/Inf = NaN
类型的比率
> LL_pdf(-1000)
[1] NaN
函数的实现应该避免这种数值问题(0/0
, Inf/Inf
).
一个解决方案是实现对数密度,它在数值上是稳定的,return对数密度的指数,这避免了这种问题:
LL_pdf2 <- Vectorize(function(x){
log.val <- -x -2*log(1+exp(-x))
return(exp(log.val))
}) # Probability density function (pdf) of logistic distribution
那么,你得到,
> LL_pdf2(-1000)
[1] 0
>
> integrate( LL_pdf2, lower = -Inf, upper = Inf)$value
[1] 1
您可以将这些结果与使用 dlogis
获得的结果进行比较
> dlogis(-1000)
[1] 0
> integrate( dlogis, lower = -Inf, upper = Inf)$value
[1] 1
Logistic分布的概率密度函数$f(x) = e^{-x} (1+e^{-x})^{-2}$
LL_cdf <- function(x) ((1+exp(-x))^(-1) # cumulative distribution function of logistic distribution
LL_pdf <- function(x) ( (exp(-x))*(1+exp(-x))^-2 ) # Probability density function (pdf) of logistic distribution
其支持的任何发行版的pdf集成必须是一个。我们在其支持 $x \in [-\infty,\infty]$ 上集成了 logistic distribution 的 pdf,但它给出了错误消息。我们在下面的代码 中提到了 错误消息。为什么 logistic 分布的 pdf 不整合其支持 $x \in [-\infty,\infty]$ in R?
integrate( LL_pdf, lower = -Inf, upper = Inf)$value
Error in integrate(LL_pdf, lower = -Inf, upper = Inf) :
non-finite function value
它与密度函数的实现有关,因为它会为较大的负值生成 Inf/Inf = NaN
类型的比率
> LL_pdf(-1000)
[1] NaN
函数的实现应该避免这种数值问题(0/0
, Inf/Inf
).
一个解决方案是实现对数密度,它在数值上是稳定的,return对数密度的指数,这避免了这种问题:
LL_pdf2 <- Vectorize(function(x){
log.val <- -x -2*log(1+exp(-x))
return(exp(log.val))
}) # Probability density function (pdf) of logistic distribution
那么,你得到,
> LL_pdf2(-1000)
[1] 0
>
> integrate( LL_pdf2, lower = -Inf, upper = Inf)$value
[1] 1
您可以将这些结果与使用 dlogis
> dlogis(-1000)
[1] 0
> integrate( dlogis, lower = -Inf, upper = Inf)$value
[1] 1