在 R 中绘制圆形随机变量的 PDF(极坐标图)

时间:2021-07-12 19:48:41

标签: r plot diagram

我试图找到一种合理的方法来可视化 R 中圆形随机变量的概率密度函数。最合适的方法是在极坐标图上。但是,我不确定如何在 R 中对此进行编码。有人可以使用 wrapped exponential distribution 作为示例说明如何做到这一点吗?我真的很感激。

2 个答案:

答案 0 :(得分:1)

循环包似乎专注于 vonMises 分发。您可以滚动自己的包裹指数概率分布:

wrapped.exp <- function(theta, lambda){ 
                          lambda*exp(-lambda*theta)/(1-exp(-2*pi*lambda) )}

并使用 plotrix 包的 radial.plot

theta <- seq(0, 2*pi, len=100)
rval <- wrapped.exp(theta, .2)
# radial.plot's default radial limits are just the range so not really good for distributions.
radial.plot(rval,theta, radial.lim=c(0, 0.4))

enter image description here

绘图代码:

> png()
> rval <- wrapped.exp(theta, .2)
> radial.plot(rval,theta, radial.lim=c(0, 0.4))
> dev.off()

我会注意到“包裹指数”公式实际上并不是闭区间 [0, 2*pi] 上的真正数学函数,因为该函数在 0 = 2pi 处有两个值,所以它可能应该有使任何 theta + 或 > 2pi 成为 NA 或“mod 2pi”的代码。进一步注意:该公式实际上只是 2pi 处的截断指数。由于它是一个截断的密度,它似乎在 2*pi 处不应该有 0 值。出现径向图使用径向矢量的范围,而不是从 0 到最大值。似乎它应该默认为 c(0, range(lambda)[2])。当我有时间时,我会更正这个答案。

答案 1 :(得分:1)

pkg:pracma 中的 ezpolar 函数给出了比 plotrix::radial.plot 更典型的极坐标图,但是它与基本图形函数 curve 一样,因为它需要一个函数参数。

if(!require(pracma) ){ 
         install.packages("pracma", dependencies=TRUE); library(pracma) }
?ezpolar
wrapped.exp <- function(theta, lambda){ 
                      lambda*exp(-lambda*theta)/(1-exp(-2*pi*lambda) )}
theta <- seq(0, 2*pi, len=100)

# since it requires a functional argument with only one variable,
# I'm defining a separate helper function with predefined lambda

  png() ;  wrap.2 <- function(x) wrapped.exp(x,.2)
           ezpolar(wrap.2); dev.off()

enter image description here

相关问题