Расчет доверительных интервалов для 2X2 биоэквивалентности: Julia concept code

Julia – развивающийся язык, но содержит достаточное количество инструментов что бы выполнять базовые статистические вычисления.
Основные пакеты, которые представляют для нас интерес: DataFrames, GLM и CSV (разумеется MixedModel тоже интересен, но не для 2×2 биоэквивалентности). Простой концепт ниже позволяет получить оценку 90% доверительного интервала для исследования биоэквивалентности.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using DataFrames, GLM, CSV

dirp="C:\\...\\src\\testdata\"
filep = dirp*"MOESM1.csv"

if isfile(filep) df = CSV.File(filep, delim='\t') |> DataFrame end

df.LnVar = log.(df.Var)
categorical!(df, :Subj);
categorical!(df, :Per);
categorical!(df, :Seq);
categorical!(df, :Trt);

ols  = lm(@formula(LnVar ~ Seq+Per+Trt+Subj), df, true)

cint = confint(ols, 0.9)
println("--------------------------------------")
print("Lower bound: ")
print(round(exp(cint[4,1])*100, digits=2))
println("%")
print("Upper bound: ")
print(round(exp(cint[4,2])*100, digits=2))
println("%")
sigm = GLM.dispersion(ols.model, false)
var = sigm^2
cv = sqrt(exp(var)-1)*100
print("Var: ")
println(round(var, digits=6))
print("CV: ")
print(round(cv, digits=2))
println("%")
println("--------------------------------------")

Переменные dirp, filep – будут зависеть от вашего окружения и файла с данными. В качестве примера использован датасет № 1 известной статьи “Reference Datasets for 2-Treatment, 2-Sequence, 2-Period Bioequivalence Studies” (Schuetz, Labesб Fuglsang, 2014). ANOVA Type III в эту реализацию не входит.

Файл доступен тут: https://github.com/PharmCat/JuliaBioequivalence