tData = Theoph
colnames(tData) = c("ID", "BWT", "DOSE", "TIME", "DV")
fPK = function(THETA) # Prediction function
{
DOSE = 320000 # in microgram
TIME = e$DATA[, "TIME"] # use data in e$DATA
K = THETA[1]
Ka = THETA[2]
V = THETA[3]
P = DOSE/V*Ka/(Ka - K) * (exp(-K*TIME) - exp(-Ka*TIME))
return(P)
}
IDs = unique(tData[,"ID"])
nID = length(IDs)
for (i in 1:nID) {
Data = tData[tData$ID == IDs[i],]
Res = nlr(fPK, Data, pNames=c("k", "ka", "V"), IE=c(0.1, 3, 500),
SecNames=c("CL", "Thalf", "MRT"), SecForms=c(~V*k, ~log(2)/k, ~1/k))
print(paste("## ID =", i, "##"))
print(Res)
}
# Another example from radioimmunoassay(RIA)
d1 = data.frame(conc = c(200, 100, 50, 25, 12.5, 6.25, 3.125, 0),
DV = c(1.78, 1.5, 1.17, 0.74, 0.51, 0.31, 0.19, 0.04))
PRED = function(TH) TH[1] + TH[2]*d1$conc^TH[4]/(TH[3]^TH[4] + d1$conc^TH[4])
Scale = function(TH) 1/(PRED(TH) - (TH[1] + TH[2])/2)^2
nlr(PRED, d1, pNames=c("R0", "Rmax", "RC50", "Hill"), IE=c(0.1, 3, 50, 1),
Error="S", Sx=Scale)
Run the code above in your browser using DataLab