R のnlmeで、パラメータを推定したいと思っています。
nlmixrのnlmeを使ってみています。
どなたか、プログラムの書き方についてご助言ください。
まずは、算出値よりプログラムが動くことを目指しています。
「A * exp(-ALPHA * Time) + B * exp(-BETA * Time)」の式は、
推定したい「"v", "ke", "ka1", "ka2"」と言うパラメータで構成されています。
@@@@@@で囲ったプログラムで動きません。
「A, ALPHA, B, BETA」を直接推定する場合、
======で囲ったプログラムで動きます。
推定したいパラメータは、「"v", "ke", "ka1", "ka2"」です。
@@@@@@で囲ったプログラムのどこを修正したらよろしいでしょうか。
(プロシジャのサイトで調べればよいことかもしれませんが)
@@@@@@@@ プログラム動かない ここから @@@@@@@@@
nform <- function(psi, Time){
v <- psi[1]
ke <- psi[2] #k10
ka1 <- psi[3] #k12
ka2 <- psi[4] #k21
ALPHA<-((ke+ka1+ka2)+sqrt((ke+ka1+ka2)**2-4ka2ke))/2;
BETA <-((ke+ka1+ka2)-sqrt((ke+ka1+ka2)2-4ka2ke))/2;
A<-100/v(ALPHA-ka2)/(ALPHA-BETA);
B<-100/v(ka2-BETA)/(ALPHA-BETA);
f <- ~ A * exp(-ALPHA * Time) + B * exp(-BETA * Time)
return(f)}
startvec1<-c(v=555, ke=0.036, ka1=0.28, ka2=0.38)
nlmixr_nlme<-deriv(nform, namevec=c("v", "ke", "ka1", "ka2"),
function.arg=c("Time", "v", "ke", "ka1", "ka2"))
nlme.2cbr<-nlme(Concentrationnlmixr_nlme(Time, v, ke, ka1, ka2),Time|Id, data=dt00),
data=groupedData(Concentration
fixed=list(v1, ke1, ka11, ka21),
random=pdDiag(v + ke + ka1 + ka2~1),
start=startvec1,
control = list(returnObject = T,msVerbose = T), verbose = F)
summary(nlme.2cbr)
@@@@@@@@ プログラム動かない ここまで @@@@@@@@@
======== プログラム動く ここから ===========
startvec1<-c(A=0.1, ALPHA=0.02, B=0.02, BETA=0.69)
nform<- ~ A * exp(-ALPHA * Time) + B * exp(-BETA * Time)
nlmixr_nlme<-deriv(nform, namevec=c("A", "ALPHA", "B", "BETA"),
function.arg=c("Time", "A", "ALPHA", "B", "BETA"))
nlme.2cbr<-nlme(Concentrationnlmixr_nlme(Time, A, ALPHA, B, BETA),Time|Id, data=dt00),
data=groupedData(Concentration
fixed=list(A1, ALPHA1, B1, BETA1),
random=pdDiag(A + ALPHA + B + BETA~1),
start=startvec1,
control = list(returnObject = T,msVerbose = T), verbose = F)
summary(nlme.2cbr)
======== プログラム動く ここまで ===========
回答1件
あなたの回答
tips
プレビュー