Я новичок и пытаюсь решить математическое выражение, которое имеет две переменные, ca и y , и на самом деле я хочу знать только значение переменной ca, потому что переменнаяy будет интегрирован, как показано ниже:
#---time start---#
ptm <- proc.time()
library(pracma)
U = 14; L = 7; d = (U-L)/2;
T = ( 3*U+L )/(3+1);
Du = U-T; Dl = T - L; d_star = min(Du,Dl);
du = d/Du; dl = d/Dl;
alpha = 0.05;
aLe = 0.05;
n = 100;
ksi_given = -3;
if (ksi_given <= 0){
sigma = fzero(function(x) aLe - (x^2)*( (dl^2*ksi_given^2+1)/d_star^2 ), c(0,0.5) )$x ;
mu = ksi_given*sigma + T;
B = n*( (dl*ksi_given)^2 + 1 )/aLe;
C = (dl*ksi_given)^2/(d_star/sigma)^2 + 1/(d_star/sigma)^2;
b = d_star/sigma;
}else{
sigma = fzero(function(x) aLe - (x^2)*( (du^2*ksi_given^2+1)/d_star^2 ), c(0,0.5) )$x ;
mu = ksi_given*sigma + T;
B = ( n*( (du*ksi_given)^2 + 1 ) )/aLe;
C = (du*ksi_given)^2/(d_star/sigma)^2 + 1/(d_star/sigma)^2;
b = d_star/sigma;
}
fun = function(ca,y) { pchisq( B*ca-y, n-1)* ( 1/ (2*sqrt(y)) )* ( (dl^-1)*normpdf( (dl^-1)*sqrt(y) + sqrt(n)*(ksi_given) ) + (du^-1)*normpdf( (du^-1)*sqrt(y) - sqrt(n)*(ksi_given) ) ) };
fun2 = function(ca) alpha - integrate(fun(ca,y),lower = 0.0001,upper = B*ca);
ca = fzero(function(ca) alpha - integrate(function(ca,y) { pchisq( B*ca-y, n-1)* ( 1/ (2*sqrt(y)) )* ( (dl^-1)*normpdf( (dl^-1)*sqrt(y) + sqrt(n)*(ksi_given) ) + (du^-1)*normpdf( (du^-1)*sqrt(y) - sqrt(n)*(ksi_given) ) ) },lower = 0.0001,upper = B*ca), aLe);
О выражении, которое я буду использовать для решения fzero (), оно создается с помощью следующих шагов:
- Существуетпервоначально выражение fun , которое имеет две переменные, ca и y.
- Я буду использовать integrate () для интегрирования fun по переменной y, а затем получу fun2 .
Наконец, я попытаюсь использовать fzero (), чтобы решить значение ca в fun2, как моя последняя строка кода.
К сожалению, R возвращает сообщение об ошибке, например:
Ошибка в pchisq (B * ca - y, n - 1): аргумент "y" отсутствует, по умолчанию нет
Я также пробовал этот модифицирующий код
ca = fzero(function(ca) fun2(ca), aLe);
, но он не работает.
Кто-нибудь может дать мне несколько советов по моей проблеме, чтобы правильнополучить значение ca?
Означает ли это, что pchisq () не может использовать переменные в качестве своих параметров?или я неправильно понял использование function () или integrate () или fzero ()?
Надеюсь, вы можете дать мне несколько советов!Спасибо!