2014-07-25 77 views
0

我想知道我怎麼能在河定義變量以隱式方式

例如以含蓄的方式定義變量,讓我們假設我有ž< -0.5和X < -2,我想定義y使得以下成立:z = beta(x,y)。

顯然,如果我輸入z<-beta(x,y),我有以下錯誤Error in beta(x, y) : object 'y' not found

我試圖在谷歌找到解決方案,但奇怪,我沒有找到任何東西。

預先感謝您!

+0

創建函數?你想做什麼? – A5C1D2H2I1M1N2O1R2T1

+0

你可能想看看:http://en.wikipedia.org/wiki/Beta_distribution#Parameter_estimation,也可能在'?mle' – nico

+0

嗯,我有x和z的值,我需要y的值這樣的條件是尊重。 問題是我不能把y單獨放在左邊,所以我不能在「常規方式」中定義y,即y < - 我的實際方程比這方法更復雜,但想法是一樣的。 Beta函數只是一個例子。我不想估計它。我想解決方程,以獲得y的價值 – Jack4280

回答

1

爲了您例如,你可以使用uniroot找到y的值:

(y <- uniroot(function(y) beta(x,y)-z, interval=c(0,100))) 
$root 
[1] 1 

$f.root 
[1] -1.08689e-07 

$iter 
[1] 13 

$estim.prec 
[1] 6.103516e-05 

beta(x,y$root)==z 
[1] FALSE 
all.equal(beta(x,y$root),z, tol=1e-5) 
[1] TRUE 
beta(x,1)==z 
[1] TRUE 

然而,這依賴於一些假設,例如有僅是一個值,以滿足方程和你能夠給這是一個明智的區間。一般來說,你的函數可能不允許解決方案,如果你需要計算大量的y值,計算可能會很慢。您還需要考慮數值解決方案可能不準確,因此需要謹慎對比。

+0

好的,這工作正常! 非常感謝 – Jack4280