#r
Вопрос:
Предположим, у меня есть следующие данные
n<-100 ki <- runif(n) yi<-rbinom(n,1,0.5) u<-runif(n)
Я хотел бы решить уравнение
Это то же самое, что и решение
#Attempt: Not sure about this library(rootSolve) library(pracma) Intz<-function(s){exp( ki* log( s))} fz <- function(z){ exp(yi) * quadinf( Intz , xa=0, xb= z)$Q log(u) } z <- uniroot(fz, interval=c(0, 1e3) )$root z
Я получаю следующую ошибку
Error in uniroot(h, interval = c(1, 1000), tol = .Machine$double.eps^0.5) : f() values at end points not of opposite sign
Я получаю то же самое сообщение об ошибке, когда пытаюсь решить
Я должен в конечном итоге получить n значений z.
Комментарии:
1. Я не вижу
quadinf
вLaplacesDemon
илиrootSolve
. Это внутриpracma
, но пределы-этоxa
иxb
, а неza
иzb
. Кроме того, вы никогда не определялисьu
. Что значит «не работает»? Если он возвращает ошибку, пожалуйста, скопируйте ее.
Ответ №1:
Интеграл от exp(ki*log(s))
по отношению к s
от 0 до z
просто z^(ki 1)/(ki 1)
, так что вы можете решить для z
, нет необходимости в числовом поиске корня или интегралов.
z <- (-(ki 1)*log(u)*exp(-yi))^(1/(ki 1))