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