Few runs? [Bioanalytics]

posted by Helmut Homepage – Vienna, Austria, 2014-08-19 05:04 (3932 d 20:54 ago) – Posting: # 13404
Views: 10,154

Hi ElMaestro,

❝ […] How do we test or measure for an unexpected pattern?

❝ I kept coming back to ideas of runs tests which as far as I know tend to be quite insensitive when there are not too many points (here: subjects).


I wouldn’t say so. 20–6 are just two runs, Try:

require(tseries)
x <- as.factor(c(rep("normal", 20), rep(">ULOQ", 6)))
runs.test(x, alternative="less") # test against "under-mixing"

        Runs Test

data:  x
Standard Normal = -4.7214,
p-value = 1.171e-06
alternative hypothesis: less

8 runs: p 0.1003 and 7 runs: p 0.03192; just two is not an awful lot…


❝ We could perhaps divide the 26 subjects into two halves and quantify the probability of having all issues in one half etc. But it does seem too crude. We could divide the subjects into more chunks and perhaps under some circumstances get better resolution (?). OK 26 as in this specific case is only divisible by two primes but that's just a practicality.


Why do you want to divide the subjects into more chunks at all? I think there are two issues:
  1. 6 out of 26 were out of range. That’s a high percentage, but shit happens. Either these high concentrations were “normal” (the analyst had insufficient information about the PK, aimed too low, :blahblah:) or sumfink went wrong (I had some ideas, but Ken didn’t respond). In the former case he should do better in the next study and in the latter try to find an explanation.
  2. Now we should additionally ask how likely we could see these results “clustered” – and not at random. Resampling would help to get an idea.

set.seed(123456)
n <- 1e5
s <- 0
for(j in 1:n) {
  if(runs.test(sample(x), alternative="less")$p.value < 0.05) s <- s+1
}
cat("significant runs:", signif(100*s/n, 4), "%\n")

significant runs: 7.005 %


❝ Which test do you think would find appropriate use in these situations?


I don’t know. I’m just thinking loud. If I’m not wrong, we can get a maximum of 13 runs, which is not significant:

x <- as.factor(c(rep(c("normal", ">ULOQ"), 6), rep("normal", 14)))
runs.test(x, alternative="greater") # test against "over-mixing"

        Runs Test

data:  x
Standard Normal = 1.5885, p-value = 0.05609
alternative hypothesis: greater


Dif-tor heh smusma 🖖🏼 Довге життя Україна! [image]
Helmut Schütz
[image]

The quality of responses received is directly proportional to the quality of the question asked. 🚮
Science Quotes

Complete thread:

UA Flag
Activity
 Admin contact
23,424 posts in 4,927 threads, 1,670 registered users;
25 visitors (0 registered, 25 guests [including 9 identified bots]).
Forum time: 01:59 CEST (Europe/Vienna)

An expert is someone who knows some of the worst mistakes
that can be made in his subject,
and how to avoid them.    Werner Heisenberg

The Bioequivalence and Bioavailability Forum is hosted by
BEBAC Ing. Helmut Schütz
HTML5