Files
dashboard-app/dev/Doc_BioassayLinReport.Rmd
T
Guxa 4cfda9d162
Build and deploy Roxygen2|pkgdown documentation site / build-and-deploy-documentation (push) Successful in 44s
run tests / build-and-deploy-documentation (push) Successful in 7s
rport updates, new logo, app.r logic updated, 4pl XL made nicer
2026-06-02 15:43:15 +02:00

266 lines
6.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
output:
pdf_document:
extra_dependencies: ["float"]
number_sections: true
toc: true
toc_depth: 3
header_includes:
-\setlength{\headheight}{22pt}%
-\usepackage{pdflscape}
-\usepackage{longtable}
-\usepackage{fancyheadr}
-\pagestyle{fancy}
-\fancyhf{}
-\fancyfoot[C]{Page \thepage \ of \pageref{LastPage}}
-\usepackage{lastpage}
-\rhead{\includegraphics[width=.15\textwidth]{`r getwd()`/logov2.png}}
params:
FileName: NA
newTitle: NA
author: NA
REP: NA
REPlin: NA
coeffsLin: NA
NoP: NA
Assay: NA
author: "Author: `r params$author`"
title: |
| ![](logov2.png){width=1in}
| Linear bioassay evaluation
subtitle: |
`r params$FileName`
<left> Unique time: </left> <right> `r Sys.time()`</right>
date: "`r paste(params$NoP, params$Assay)`"
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(knitr)
library(DT)
REP <- params$REP
REPlin <- params$REPlin
author <- params$author
coeffsLin <- params$coeffsLin
all_l <- REP$all_l
circles <- REPlin$circles
#ANOVAXLS <- REP$ANOVAXLS
SuModAB <- REPlin$SuModAB
SuModABu <- REPlin$SuModABu
LinTests <- REPlin$LinTests
XLplotLin <- REPlin$pLin
LinPotTab <- REPlin$LinPotTab
XLdat2 <- REP$XLdat2
LinTests1 <- LinTests[,1:3]
ANOVAlin <- LinTests[,4:ncol(LinTests)]
```
\newpage
# Introduction
Bioassay potency estimation uses statistical methods to quantify the strength of a biological product or drug by comparing its response to that of a reference standard. Biological responses are inherently variable, affected by assay conditions, cell systems or organisms, and measurement noise. To control this variability, a linear regression approach is used to obtain reliable potency values. Three consecutive dilution steps showing the steepest slope are used for linear fitting.
USP<1034> recommends calculation of standard errors of ratios of the parameters using Fieller's theorem [Finney D.J. 1978] or using the "delta" method (for a discussion about the "delta" method see [Ver Hoef 2012]). The present analysis calculated the relative potency with the "delta" method. The formula of the relative potency is in the Appendix.
# Raw data
All data used for evaluation is shown in table 1.
```{r Alll, echo=FALSE, warning=FALSE, results='asis'}
kable(XLdat2, format = "markdown", caption= "Uploaded data (test and reference) ", digits=3)
```
The linerar regression is calculated on the readout listed in table 2.
```{r Circles, echo=FALSE, warning=FALSE, results='asis'}
kable(circles, format = "markdown", caption= "Concentrations and readout used for linear regression", digits=3, row.names = F)
```
# Results
## Overall result
```{r Over_all, echo=FALSE, comment=NA, warning=NA, message=NA}
#browser()
potFlag <- 0
if (LinPotTab[1,"test_result"]==1) potFlag <- 1
AnalysisFlag <- FALSE
if (potFlag==1 | sum(LinTests$test_results)>0) AnalysisFlag <- TRUE
colFmt <- function() {
outputFormat <- knitr::opts_knit$get("rmarkdown.pandoc.to")
if(AnalysisFlag) {
text <- paste("\\textcolor{red}{Analysis failed}",sep="")
} else {
text <- paste("\\textcolor{black}{Analysis succeeded}",sep="")
}
return(text)
}
```
`r colFmt()`
## Plots and ANOVA
Plots in Figure 1 show the restricted and unrestricted model, respectively.
```{r LinPlot, echo=FALSE, warning=FALSE, fig.height=4, fig.width=6, fig.cap="Plot of models", fig.align='left'}
library(cowplot)
plot_grid(XLplotLin)
```
The relative potency can be read from tabale 3.
```{r LinPotTab, echo=FALSE, warning=FALSE, results='asis'}
kable(LinPotTab, format = "markdown", caption= "Potency table", digits=3)
```
0 ... test passed;
1 ... test failed);
The ANOVA of the unconstrained model is listed in table 4.
```{r anovaxls, echo=FALSE, warning=FALSE, results='asis'}
kable(ANOVAlin, format = "markdown", caption= "ANOVA table unrestricted", digits=3)
RMSE <- sqrt(ANOVAlin[5,4])
```
The standard deviation of the model is `r RMSE`.
The assay suitability tests are shown in table 5.
```{r SST_ergebn, echo=FALSE, cache=FALSE, warning=FALSE, message=FALSE, tidy=TRUE}
kable(LinTests1, row.names = F, format = "markdown", caption="Assay suitability test results", digits=3)
```
The estimate is the p-value of the test.
F-tests on regression, significance of slopes, and preparation need to have a p-value <0.05 to pass.
All other tests pass if p-value > 0.05.
0 ... test passed;
1 ... test failed);
(NOTE: F-tests are sensitive, when the residual variability of the method is small. On the other hand effects may not be detected if residual variability is high.)
## Fitting results
The results of the linear fitting procedure for the restricted model is listed in table 6:
```{r SumCSSI, echo=FALSE, warning=FALSE, results='asis'}
kable(SuModAB, format = "markdown", caption= "Restricted linear regression (CSSI)", digits=3, row.names = F)
```
CSSI: common slope, separate intercept
The results of the linear fitting procedure for the unrestricted model is listed in table 7.
```{r SumSSSI, echo=FALSE, warning=FALSE, results='asis'}
kable(SuModABu, format = "markdown", caption= "Restricted linear regression (SSSI)", digits=3, row.names = F)
```
SSSI: separate slope, separate intercept
# Signature
<!-- Signature and date:\\ -->
<!-- \noindent\framebox(200,50) -->
<!-- \begin{minipage}[t][40pt][c]{190pt} -->
<!-- \centering -->
<!-- % Leave this blank for a physical signature -->
<!-- \end{minipage} -->
\vspace{1.5cm}
\noindent
\begin{tabular}{p{6cm}p{1cm}p{6cm}}
\cline{1-1} \cline{3-3}
Date & & Signature
\end{tabular}
# Appendix: Formulas
## Potency of linear PLA
Relative potency of the test sample to the reference is calculated as:
$$
relPot_{log} = \frac{I_{ref} - I_{test}}{k}
$$
where: \\ I... intercept of reference or test\\
k ... common slope
The standard error of the linear restricted model is used to get the confidence interval of the relative potency with the formula:
$$
CI_{rel Pot} = exp(relPot_{log} \pm se(relPot_{log})*q^{t_{n-p}}_{1-\frac{\alpha}{2}})
$$
In general, the confidence intervals are calculated as follows:
$$
CI = \hat\theta\pm se(\hat\theta)*q^{t_{n-p}}_{1-\frac{\alpha}{2}}
$$
…where $\hat\theta$ is a fitted parameter or a linear combination thereof, q is the 1-alpha/2 quantile of the Students t-distribution with n-p degrees of freedom and se is the standard error derived from any covariance matrix.
# Literature
Finney, D.J.: (1978) Statistical Method in Biological Assay, London: Charles Griffin House, 3rd edition (pp. 80-82)
Franz, V.H.: Ratios: A short guide to confidence limits and proper use. arXiv:0710.2024v1, 10 Oct 2007
VerHoef, J.M.: Who invented the Delta Method? The American Statistician, 2012, 66:2, 124-127 DOI: 10.1080/00031305.2012.687494