2013-12-08 327 views
0

我想知道如何绘制R中正态分布的联合分布。例如,如果正常分布f(x)的是由两个功能:在R中编写双峰正态分布函数

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

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

谢谢!

+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") 
+0

谢谢!你能解释为什么你把x < - seq(-2,4,len = 101)?我没有在\ mu_1 = 0和\ mu_2 = 2中得到我想要的两种方法的结果。也许,为了简单起见,您能否仅使用0.5和0.5的权重来解释它?谢谢! –

+1

这些是示例中的两种方法。 – Dason

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)