2014-07-25 7 views
0

Я хотел бы знать, как я могу определить переменные в неявном виде в R.Определение переменных в неявном виде

Например, давайте предположим, что у меня есть г < -0.5 и х < -2, я хочу, чтобы определить y такие, что выполняется следующее: z = beta (x, y).

Очевидно, что если я ввожу z<-beta(x,y), у меня есть следующая ошибка: Error in beta(x, y) : object 'y' not found.

Я попытался найти решение в google, но, как ни странно, я ничего не нашел.

Спасибо заранее!

+0

Выполните функцию? Что ты пытаешься сделать? – A5C1D2H2I1M1N2O1R2T1

+0

Возможно, вы захотите посмотреть: http://en.wikipedia.org/wiki/Beta_distribution#Parameter_estimation и, возможно, на '? Mle' – nico

+0

Ну, у меня есть значения для x и z, и мне нужно значение для y так что условие соблюдается. Проблема в том, что я не могу поместить y в левую сторону, поэтому я не могу определить y в «нормальном режиме», т. Е. Y <- Мое фактическое уравнение намного сложнее, чем идея, но идея одинаков. Бета-функция является лишь примером. Я не хочу его оценивать. Я хочу решить уравнение, чтобы получить значение y – Jack4280

ответ

1

Для примера можно использовать uniroot найти значение у:

(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