【发布时间】:2021-04-26 12:21:39
【问题描述】:
我想在 R 中绘制不同的均匀分布,最好使用 ggplot。当尝试绘制 U(0.35,0.55) 的 pdf 时,看起来边缘周围的值(即参数值,在本例中为 0.35 和 0.55)的概率与应有的不同。输出可见:
这在作为均匀分布输入的不同参数之间是一致的,并且似乎不是规模问题。
重现类似结果的代码示例:
#parameters
alpha_1 <- 0.35
beta_1 <- 0.55
alpha_2 <- 0.5
beta_2 <- 0.7
alpha_3 <- 0.1
beta_3 <- 0.3
base <- ggplot() + xlim(-1, 2)
base +
geom_function(aes(colour = "state 1"), fun = dunif, args = list(alpha_1, beta_1)) +
geom_function(aes(colour = "state 2"), fun = dunif, args = list(alpha_2, beta_2)) +
geom_function(aes(colour = "state 3"), fun = dunif, args = list(alpha_3, beta_3))
使用 stat_function 代替 geom_function 不会改变任何东西。
但是,以下工作:
curve(dunif(x, min = alpha_1, max = beta_1),
from = 0, to = 1,
n = 100000,
col = "blue",
lwd = 2,
add = F,
yaxt = "n",
ylab = 'probability')
curve(dunif(x, min = alpha_2, max = beta_2),
from = 0, to = 1,
n = 100000,
col = "red",
lwd = 2,
add = T,
yaxt = "n",
ylab = 'probability')
curve(dunif(x, min = alpha_3, max = beta_3),
from = 0, to = 1,
n = 100000,
col = "black",
lwd = 2,
add = T,
yaxt = "n",
ylab = 'probability')
我怎样才能让它在 ggplot 中工作?在我看来,问题可能是这样的:
评估沿 x 轴的 n 个值以获得图形的坐标。围绕参数 (a,b) 这些是,例如在 a+0.0001 和 a-0.0001。这些坐标之间的直线不会完全垂直。我不确定这是否是正确的诊断,但无论如何我都会感谢任何帮助。谢谢!
【问题讨论】:
-
似乎是分辨率问题。
?stat_function默认使用 101 个点。尝试在该层设置n = 1001。 -
是的,n = 10001 做到了。我应该自己想出来的,多么尴尬。非常感谢!
标签: r ggplot2 uniform-distribution