在R中编写双峰正态分布函数

时间:2013-12-08 11:03:22

标签: r statistics

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

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

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

谢谢!

2 个答案:

答案 0 :(得分: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")

答案 1 :(得分:0)

这是我的代码:它不太正确,但我会在答案中编辑它。我仍未在图表中获得两个局部最大值。

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)