两部分正态(或分裂正态)分布的密度

gja*_*bel 4 statistics r distribution cran

两部分正态分布是否存在密度函数:

在此输入图像描述

在克兰上?我想在编写代码之前先检查一下。我检查了分发任务视图。它没有在那里列出。我查看了几个可能的软件包,但无济于事。

更新:我已将dsplitnormpsplitnormqsplitnorm函数添加rsplitnormfanplot包中。

Jos*_*ien 5

如果您选择构建自己的发行版本,您可能会对distr感兴趣。它(以及相关的包distrExdistrSimdistrTEstdistrTeachdistrDoc)的编写是为了提供一个统一的接口,用于从现有的发行版构建新的发行版。(我在distrDoc包附带的精彩小插图的帮助下构建了这个示例,可以通过键入 来获得该示例vignette("distr")。)

这实现了分割正态分布,这可能不完全是您所追求的。不过,使用distr工具集,调整它以满足您的确切需求应该不会太难。

library(distr)

## Construct the distribution object.
## Here, it's a split normal distribution with mode=0, and lower- and
## upper-half standard deviations of 1 and 2, respectively.
splitNorm <- UnivarMixingDistribution(Truncate(Norm(0,2), upper=0), 
                                      Truncate(Norm(0,1), lower=0), 
                                      mixCoeff=c(0.5, 0.5))
## Construct its density function ...
dsplitNorm <- d(splitNorm)
## ... and a function for sampling random variates from it
rsplitNorm <- r(splitNorm)

## Compare the density it returns to that from rnorm()
dsplitNorm(-1)
# [1] 0.1760327    
dnorm(-1, sd=2)
# [1] 0.1760327    

## Sample and plot a million random variates from the distribution
x <- rsplitNorm(1e6)         
hist(x, breaks=100, col="grey")

## Plot the distribution's continuous density
plot(splitNorm, to.draw.arg="d") 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在此输入图像描述