Open Side Menu Go to the Top
Register
Pooled testing for coronavirus Pooled testing for coronavirus

04-15-2020 , 05:40 AM
From the OOT coronavirus thread:
Quote:
Originally Posted by JayTeeMe
Talk of pooled testing. Seems like a great idea imo. Short version: swab 10 people, run test together. Negative means all negative. Positive means someone positive, then retest individuals.

Could knock out 10x more population per test.
Thought this might make for something interesting to look at: given different expected rates of positive tests (and possibly different fixed population sizes) and assuming a 100% accurate test, what is the optimal testing strategy to use as few tests as possible to diagnose every member of the population.

My first guess would be something along the lines of binary search (https://en.m.wikipedia.org/wiki/Binary_search_algorithm) but I could be way off.

If this is easily solvable then how about using a test with a certain sensitivity/specificity and a desired confidence level for each member of the population?

Juk
Pooled testing for coronavirus Quote
04-15-2020 , 10:17 AM
On a group positive you retest half the group together, and then either eliminate that half or divide in half again. And you do the same with the other half. The initial batch should be a power of 2, like 32 at a time.
Pooled testing for coronavirus Quote
04-16-2020 , 06:13 AM
Quote:
Originally Posted by NewOldGuy
On a group positive you retest half the group together, and then either eliminate that half or divide in half again. And you do the same with the other half. The initial batch should be a power of 2, like 32 at a time.
What about if you have a very high expected positive rate?

In the worst case the "binary splitting" method (assuming N is a power 2) requires 2N-2 tests, whereas just testing everybody right at the start only takes N tests.

Is there some inflection point where we should switch between binary splitting to testing everybody, or is there some (family of) other testing strategy(s) that become optimal as the expected positive rate changes?

Juk
Pooled testing for coronavirus Quote
04-16-2020 , 09:49 AM
Quote:
Originally Posted by jukofyork
What about if you have a very high expected positive rate?
Then I think you just test everyone. I didn't try to figure out the breakeven point, but I'd guess around over half.
Pooled testing for coronavirus Quote
04-17-2020 , 07:05 AM
Don't know the optimal strategy, but you can assume a simple procedure. You test N people together. If test is positive, you test each one separately. So you make at most N+1 tests and 1 if you are lucky enough to get a negative pool result.

Say that p is the fraction of people with the desease and N is the pool size. Following the above strategy, your expected number of test is:

E[N | p] = (1-p)^N + (N+1)*(1-(1-p)^N)

(1-p)^N is the probability that no one in the pool is positive; in that case you need just one test. In the other cases, you need N+1 tests (this is a little overestimate. In fact, if there is just one positive and you test everyone before them, you don't it to test them). Obviously, if you perform tests to anybody in the pool you need N tests.

The gap between the number of tests of this strategy and testing everyone is:

f(N) = (1-p)^N + (N+1)*(1-(1-p)^N) - N

You can just minimize the above function to get the optimal size N. It turns out that the result goes like ~ 1/p.

In the R code just to have a picture.

Code:
f<-function(N,p) {
	p0<-(1-p)^N
	p0+(1-p0)*(N+1)-N
}

bestN<-function(p) {
	res<-t(vapply(p, function(x) unlist(optimize(f,interval=c(0,2/x),p=x)),numeric(2)))
	res[,2]<-abs(res[,2])/res[,1]
	res
}


p<-seq(0.001,0.3,by=0.001)
optN<-bestN(p)
plot(p,optN[,1],ty="l",lwd=2,col="red")
Pooled testing for coronavirus Quote

      
m