2013-12-08 333 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)