2017-08-14 227 views
2

我試圖找到shape1shape2dbeta()使得從dbeta()兩個輸入值答案:.6.8成爲3在R中使用`optim()`解決兩個參數?

我使用下面的optim()但沒有得到確切的結果,這是我希望得到值shape1shape2.6.8使用時給33,但他們不這樣做,爲什麼呢?

f <- function(x) { 
y <- c(3, 3) - dbeta(c(.6, .8), shape1 = x[1], shape2 = x[2]) 
} 

AA = optim(c(1, 1), function(x) sum(f(x)^2), control = list(reltol = (.Machine$double.eps))) 

parms = unname(AA$par) 

dbeta(c(.6, .8), parms[1], parms[2]) # Here I expect to get `3` for `.6` and `.8` but I don't. 
+0

我不知道是怎麼回事就在這裏,但是當我與周圍的參數有點玩,例如F'設置'來'c(1,1) - ...'並將'optim'的初始值設置爲c(0.5,0.5)',或者將'f'設置爲'c(2,2) - ...'相同的初始值,我得到了預期的結果。將這些值中的一個或另一個設置爲更大的數值,會拋出結果。 – lmo

回答

2

我簡要介紹了一下。我不認爲有與合適的任何問題:這裏的可能性表面的照片:

library(emdbook) 
cc <- curve3d(g(c(x,y)),xlim=c(1,20),ylim=c(1,20), 
       sys3d="none") 
pp <- which(cc$z==min(cc$z),arr.ind=TRUE) 
png("betasurf.png") 
with(cc,image(x,y,z)) 
points(parms[1],parms[2],pch=16) 
points(cc$x[pp[1]],cc$y[pp[2]],pch=1) 
dev.off() 

enter image description here

實心圓是擬合值,空心圓是電網的最低;我認爲差異只是數字模糊(我放大了幾次以確保)。無論如何,沒有任何證據表明像多個optima那樣奇怪。

我認爲這個問題是您與他們建立了一套對點的那不能同時通過匹配任何 Beta分佈; optim()是給你最佳的契合......

png("betatmp.png") 
curve(dbeta(x,parms[1],parms[2]),from=0,to=1) 
points(c(0.6,0.8),c(3,3),pch=16) 
dev.off() 

enter image description here

+0

嗨本,我想知道如果你可能知道[*這個有趣的問題*]的答案(https://stackoverflow.com/questions/47857624/r-function-that-uses-its-output-as-its-自有輸入多次)? – Reza

相關問題