elda(response, dose, tested=rep(1,length(response)), group=rep(1,length(response)), observed=FALSE, confidence=0.95, test.unit.slope=FALSE)
limdil(response, dose, tested=rep(1,length(response)), group=rep(1,length(response)), observed=FALSE, confidence=0.95, test.unit.slope=FALSE)
tested
trials"limdil"
with the following components:tested
trialselda
and limdil
are alternative names for the same function.
limdil
was the older name before the publication Hu and Smyth (2009).
This function is an implementation of maximum likelihood analysis of limiting dilution data with added features to accommodate small sample sizes (Hu and Smyth, 2009).
In particular, the function accommodates gracefully situations where 0% or 100% of the assays give positive results, which is why we call it "extreme" limiting dilution analysis.
The methodology has been applied to the analysis of stem cell assays (Shackleton et al, 2006).
A binomial generalized linear model is fitted for each group with cloglog link and offset log(dose)
.
If observed=FALSE
, a classic Poisson single-hit model is assumed, and the Poisson frequency of the stem cells is the exp
of the intercept.
If observed=TRUE
, the values of dose
are treated as actual cell numbers rather than expected values.
This doesn't changed the generalized linear model fit but changes how the frequencies are extracted from the estimated model coefficient (Hu and Smyth, 2009).
The confidence interval is a Wald confidence interval, unless all the responses are zero or at the maximum value, in which case Clopper-Pearson intervals are computed.
If group
takes several values, then separate confidence intervals are computed for each group.
In this case it also possible to test for non-equality in frequency between the groups.
These functions produce objects of class "limdil"
.
There are print
and plot
methods for "limdil"
objects.# When there is one group
Dose <- c(50,100,200,400,800)
Responses <- c(2,6,9,15,21)
Tested <- c(24,24,24,24,24)
out <- elda(Responses,Dose,Tested,test.unit.slope=TRUE)
out
plot(out)
# When there are four groups
Dose <- c(30000,20000,4000,500,30000,20000,4000,500,30000,20000,4000,500,30000,20000,4000,500)
Responses <- c(2,3,2,1,6,5,6,1,2,3,4,2,6,6,6,1)
Tested <- c(6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6)
Group <- c(1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4)
elda(Responses,Dose,Tested,Group,test.unit.slope=TRUE)
Run the code above in your browser using DataCamp Workspace