Helmut ★★★ ![]() ![]() Vienna, Austria, 2012-10-09 21:30 (4580 d 10:25 ago) Posting: # 9361 Views: 6,553 |
|
Dear all, since I didn’t want to go too much off-topic in conversations I had with Franz and Detlew (see this post and followings) I prepared an example about analytical error. Calibration at six levels (replicates) compliant with the GL (CV ≤20% at the LLOQ, ≤15% above; back-calculated inaccuracy ≤±20/15%), linear model, weighting 1/σ². x y SDy CV% I got: ayx -0.013642 ±0.0019957 Not that bad. But what about variability? How reliable are concentrations obtained from the calibration? Imagine samples in the mid-range and close to the LLOQ. We have two measurements (y) each. Can we distinguish between estimated concentrations (x)? y x 95% CI Note the asymmetric confidence interval of estimated concentrations, which is caused by the hyperbolic CI of the regression. ![]() We can reliably distinguish between two concentrations in the mid-range, but not close to the LLOQ since their CIs overlap. That’s not rocket since, but basic stuff.* When we talk about excluding data points in the estimation of λz we should keep this issue in mind. We must not forget that PK data are not isolated pieces of information, but highly correlated. We should apply scientific judgment (an euphemism for common sense) on which data are included – and which not.
— Dif-tor heh smusma 🖖🏼 Довге життя Україна! ![]() Helmut Schütz ![]() The quality of responses received is directly proportional to the quality of the question asked. 🚮 Science Quotes |
drcampos ★ Brazil, 2012-10-11 20:46 (4578 d 11:09 ago) @ Helmut Posting: # 9398 Views: 5,214 |
|
Dear Helmut, It is a great pleasure to write to you again. I apologize for disturbing you with my basic query but I tried to find out the same values and I couldn't. Maybe I did something wrong. ❝ ❝ ❝ ❝ ❝ Could you explain how did you calculate these data? Best regards, Daniel |
Helmut ★★★ ![]() ![]() Vienna, Austria, 2012-10-11 22:26 (4578 d 09:29 ago) @ drcampos Posting: # 9399 Views: 5,444 |
|
Dear Daniel! ❝ […] my basic query Well, most bioanalysts simply ignore this issue. No chromatography data system I know calculates the confidence interval of back-calculated concentrations. ❝ but I tried to find out the same values and I couldn't. Maybe I did something wrong. Let’s see (coded in x <- c(1, 2, 4, 8, 16, 32) Should give: Call: Now let’s set up a data frame containing the x-values where we want to predict the confidence interval of y. I’ll ask R for 100 values in order to get a ‘smooth’ curve later on. newdata <- data.frame(x=seq(min(x), max(x), length.out=100)) … and calculate the 95% CI at the 100 locations ( new ) based on the fitted model (LR ).newdata <- data.frame(x = seq(min(x), max(x), length.out = 100)) Now we can plot this stuff: plot(x, y, xlim = c(0, 32), ylim = c(0, 1.1), pch = 19, cex = 1.35, I’m a little bit too short in time in order to set up the bisection method to extract the back-calculated CI of estimated concentrations.* The bisection method would fiddle around with the prediction range in such a way that the CI equals the observed y. We would start from a given response (y) and try to find the two intersections with the CI (to the ‘left’ with the upper CL and to the ‘right’ with the lower CL). Once we have these two values we can calculate the CI of the concentration as usual. Hint: Type pred in R. You see three columns – denoted fit , lwr , and upr .A quick estimate of the upper value close to the LLOQ in my example (y=0.045): lo2 <- data.frame(x = seq(1.2, 1.6, by = 0.01)) By calling print(pred2[loc, ], digits = 5) we get: fit lwr upr The 10th and 36th rows of pred2 are pretty close to the intersection we want (at 0.045). Therefore:print(lo2[range(loc), ]) The 10th and 36th values of lo2 are 1.29 and 1.55 – a first approximation of the CI.Homework: ![]() For the CI of x=1.42 (from y=0.045) I get by the exact method* in Gnumeric 1.288422087 – 1.547226655. What do you get?
“After-the-dinner-quickshot” for the CI of x with a response of 0.045 (requires the fitted model LR from above):prec <- 1e-11 # target precision Which gives on my machine: response (y): 0.045 Or alternatively: x.range <- data.frame(x = c(CL.lo, x.est, CL.hi)) Which gives: x upr fit lwr If you still have the plot open: lines(x=c(-pretty(x)[2], rep(x.est, 2)), ![]() — Dif-tor heh smusma 🖖🏼 Довге життя Україна! ![]() Helmut Schütz ![]() The quality of responses received is directly proportional to the quality of the question asked. 🚮 Science Quotes |
drcampos ★ Brazil, 2012-10-16 06:45 (4574 d 01:10 ago) @ Helmut Posting: # 9422 Views: 5,047 |
|
Helmut, Thank you for your prompt reply and explanation. Regards, Daniel |