【问题标题】:Writing a bimodal normal distribution function in R在 R 中编写双峰正态分布函数
【发布时间】:2013-12-09 04:07:43
【问题描述】:

我想知道如何在 R 中为正态分布绘制联合分布。例如,如果正态分布 f(x) 由两个函数组成:

f_1(x) ~ Normal(0, 1)
f_2(x) ~ Normal(2, 1)

那么我如何在 R 中添加一个参数来描述这一点?我在 beta 分布中寻找类似“shape1”类型的参数,但无法弄清楚如何扩展常规 dnorm 参数以使其成为联合分布。有什么建议么?

谢谢!

【问题讨论】:

  • 您在寻找多元正态分布吗?

标签: r statistics


【解决方案1】:

您似乎想要创建一个混合了 2 个法线的分布。混合物的密度只是成分密度的(加权)总和,因此您可以执行以下操作。

f <- function(x, p1 = 0.5, p2 = 1 - p1, m1, m2)
p1 * dnorm(x, m1) + p2 * dnorm(x, m2)

x <- seq(-2, 4, len=101)
dens <- f(x, p1 = 0.5, m1=0, m2=2)
plot(x, dens, type = "l")

【讨论】:

  • 谢谢!你能解释一下为什么你放 x
  • 这是示例中的两种方式。
【解决方案2】:

这是我的代码:它不太正确,但如果正确,我会在答案中对其进行编辑。我仍然没有在图中得到两个局部最大值。

f <- function(x, p1=0.5, p2=1-p1, m1, m2)
p1*dnorm(x, m1) + p2*dnorm(x,m2)

x <- seq(-2, 4, len=100)
f(x, m1=0, m2=2)
curve(f(x, m1=0, m2=0))
curve(f(x, m1=1, m2=0,), col="red", add=T)
curve(f(x, m1=2, m2=0,), col="green", add=T)
curve(f(x, m1=3, m2=0,), col="blue", add=T)
curve(f(x, m1=4, m2=0,), col="orange", add=T)

【讨论】:

    猜你喜欢
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 2014-10-05
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多