ClinicalTrialUtilities: обзор

ClinicalTrialUtilities – пакет для программной среды вычислений Julia. Цель разработки пакета – создание и объединение в одном пакете инструментов для планирования клинического исследования, а также для выполнения анализа результатов клинических исследований. В цели разработки пакета не входит создание полного статистического пакета для выполнения всех возможных статистических процедур, тем не менее в пакет включены функции, который на момент разработки либо не представлены в популярных пакетах (StatsBase, Statistics, HypothesisTests, GLM, MixedModelsи др.), либо направлены на повышение удобства использования статистического инструментария.

Ссылка: ClinicalTrialUtilities

Валидация пакета (проверка соответствия результатов вычислений референтным значениям) выполняется при каждом релизе. Пользовательская валидация может быть выполнена в любое время на ПК пользователя. Процедуры валидации включают выполнение более 200 тестов. Для каждой функции представленной в пакете выполняется проверка соответствия  полученных значений результатам вычислений выполненных с помощью пакетов для среды вычислений R, валидированного ПО или результатам, представленным в литературе (источники для используемых методов). См. Валидация.

Установка пакета:

1
using Pkg; Pkg.add("ClinicalTrialUtilities");

Проведение тестов (валидации):

1
Pkg.test("ClinicalTrialUtilities");

Использование:

1
using ClinicalTrialUtilities;

Функции

  • ClinicalTrialUtilities (module)

    • descriptives – описательная статистика;
    • ctSampleN – объем выборки для клинических исследований;
    • ctPower – мощность клинического исследования;
    • beSampleN – объем выборки для исследования биоэквивалентности;
    • bePower – мощность исследования биоэквивалентности;
    • ci2cv – коэффициент вариации по доверительному интервалу;
    • pooledCV – объединенное CV;
    • CI (submodule)

      • oneProp – доверительный интервал для одной пропорции;
      • twoProp – доверительный интервал для двух пропорций (разность долей, отношение долей(рисков), отношение шансов);
      • oneMeans – доверительный интервал для средних;
      • twoMeans – доверительный интервал для разности средних;
      • cmh – доверительный интервал для стратифицированных данных по методу Cochran–Mantel–Haenszel.
    • PK (submodule)

      • nca – расчет фармакокинетических параметров;
    • SIM (submodule)

      • bePower – оценка мощности исследования биоэквивалентности с помощью симуляции;
      • ctPropPower – оценка мощности клинического исследования с помощью симуляцмм – пропорции;
      • ctPropSampleN – оценка объема выборки для клинического исследования с помощью симуляции – пропорции;
      • ctMeansPower – оценка мощности клинического исследования с помощью симуляции – средние;
      • ctMeansPowerFS – оценка мощности с помощью симуляции – генерация на уровне субъектов – средние;

Основные функции[1-6]

Функции модуля ClinicalTrialUtilities.

descriptives

Описательная статистика для группированных и не группированных данных в виде ::DataFrame.

1
descriptives(data::DataFrame; sort = NaN, vars = NaN, stats = [:n, :mean, :sd, :sem, :uq, :median, :lq])::DataFrame

data::DataFrame – таблица данных;

sort::Symbol[] – массив типа Symbol столбцов по которым проводится группировка, NaN – если сортировка не требуется;

vars::Symbol[] – массив Symbol столбцов данных для описательной статистики, если NaN – выполняется описательная статистика всех столбцов типа Real кроме указанных в массиве sort;

stats::Symbol[] – массив описательных статистик, по умолчанию   [:n, :mean, :sd, :sem, :uq, :median, :lq], последовательность статистик в массиве соответствует выводу.

ctSampleN

Расчет объема выборки для клинических исследований биоэквивалентности.

1
ctSampleN(;param=:notdef, type=:notdef, group=:notdef, alpha=0.05, beta=0.2, diff=0, sd=0, a=0, b=0, k=1, logdiff=false, out=:num)

param::Symbol – тип параметра:

  • :mean – средние;
  • :prop  – пропорции;
  • :or      – отношение шансов;

type::Symbol – гипотеза:

  • :ea – равенство (equality);
  • :ei – эквивалентность (equivalencens);
  • :ns – не меньшая эффективность/превосходство (Non-Inferiority / Superiority) (односторонняя гипотеза);
  • :mcnm – тест МакНемара (McNemar’s equality test);

group::Symbol – число групп:

  • :one – одна группа (one sample);
  • :two – две группы (two sample), результаты для одной группы, размер второй группы = n * k;

alpha – вероятность ошибки I рода (alpha) (0 < alpha < 1) (по умолчанию=0.05);

beta – Beta (o < beta < 1) (по умолчанию=0.2); power = 1 – beta;

diff – разность/граница эквивалентности/граница не меньшей эффективности/граница эффективности (difference/equivalence margin/non-inferiority/superiority margin);

sd – стандартное отклонение (σ, для средних);

a – Среднее – нулевая гипотеза / группа А (Null Hypothesis mean (μ0), Group A);

b – Среднее сравнения / группа B (True mean (μ) for one sample / Group B for two sample design);

k – Отношение субъектов в группе Na/Nb  (по умолчанию=1);

logdiff – log-трансформирование показателя diff для отношения шансов:

  • false (по умолчанию, diff будет трансформирован)
  • true

out – тип вывода:

  • :num – число (по умолчанию);
  • :str – строка;
  • :vstr – число и строка Tuple{Float64,String};
  • :print – вывод в консоль;

Пример:

1
2
3
4
5
6
#Пропорции, одна группа, равенство (alpha, beta - по умолчанию)
ctSampleN(param=:prop, type=:ea, group=:one, a=0.3, b=0.5)
#Средние, эквивалентность, две группы
ctSampleN(param=:mean, type=:ei, group=:two, diff=0.3, sd=1, a=0.3, b=0.5)
#Отношение шансов, не меньшая эффективность, отношение в группе 1:2
ctSampleN(param=:or, type=:ns, diff=-0.1, a=0.3, b=0.5, k=2)

ctPower

Расчет мощности для клинических исследований.

1
ctPower(;param=:notdef, type=:notdef, group=:notdef, alpha=0.05, logdiff=false, diff=0, sd=0, a=0, b=0, n=0, k=1,  out=:num)

n – количество субъектов в одной группе;

Описание остальных параметров идентично ctSampleN.

Пример:

1
ctPower(param=:mean, type=:ea, group=:one, a=1.5, b=2, sd=1,n=32, alpha=0.05)

beSampleN

Расчет объема выборки для исследования биоэквивалентности.

1
beSampleN(;alpha=0.05, beta=0.2, theta0=0.95, theta1=0.8, theta2=1.25, cv=0.0, logscale=true, design=:d2x2, method=:owenq,  out=:num)

alpha – вероятность ошибки I рода (alpha) (o < alpha < 1) (по умолчанию=0.05);

beta – Beta (o < beta < 1) (по умолчанию=0.2); power = 1 – beta;

theta0 – T/R отношение (по умолчанию=0.95);

theta1 – нижняя граница биоэквивалентности (по умолчанию=0.8);

theta2 – верхняя граница биоэквивалентности (по умолчанию=1.25);

cv – коэффициент вариации;

logscale – theta1, theta2, theta0: если true – выполнить log-трансформацию (по умолчанию true);

design – дизайн;

  • :parallel
  • :d2x2 (по умолчанию)
  • :d2x2x4
  • :d2x4x4
  • :d2x3x3
  • :d2x4x2
  • :d3x3
  • :d3x6x3

method – метод: Owen’s Q Function | NonCentral T | Shifted T;

  • :owenq (по умолчанию)
  • :nct
  • :shifted

out – вывод:

  • :num – число (по умолчанию);
  • :str – строка;
  • :vstr – число и строка Tuple{Float64,String};
  • :print – вывод в консоль;

Пример:

1
2
3
4
5
beSampleN(alpha=0.05,  theta1=0.8, theta2=1.25, theta0=0.95, cv=0.15, method=:owenq)
beSampleN(cv=0.20, method=:nct)
beSampleN(cv=0.347, design=:parallel,  out=:print)
beSampleN(cv=0.40)
n, p, s = beSampleN(cv=0.347, design=:d2x2x4, method=:nct, out=:vstr)

bePower

Расчет мощности исследования биоэквивалентности.

1
bePower(;alpha=0.05, theta1=0.8, theta2=1.25, theta0=0.95, cv=0.0, n=0, logscale=true, design=:d2x2, method=:owenq,  out=:num)

alpha – вероятность ошибки I рода (alpha), (o < alpha < 1) (по умолчанию=0.05);

theta0 – T/R отношение (по умолчанию=0.95);

theta1 – нижняя граница биоэквивалентности (по умолчанию=0.8);

theta2 – верхняя граница биоэквивалентности (по умолчанию=1.25);

cv – коэффициент вариации;

n – количество субъектов;

logscale – theta1, theta2, theta0: если true – выполнить log-трансформацию (по умолчанию true);

design – дизайн;

  • :parallel
  • :d2x2 (по умолчанию)
  • :d2x2x4
  • :d2x4x4
  • :d2x3x3
  • :d2x4x2
  • :d3x3
  • :d3x6x3

method – метод: Owen’s Q Function | NonCentral T | Shifted T;

  • :owenq (по умолчанию)
  • :nct
  • :shifted

out – вывод:

  • :num – число (по умолчанию);
  • :str – строка;
  • :vstr – число и строка Tuple{Float64,String};
  • :print – вывод в консоль;

Пример:

1
2
3
4
5
6
bePower(alpha=0.05, logscale=true, theta1=0.8, theta2=1.25, theta0=0.95, cv=0.2, n=20, design=:d2x2, method=:owenq)
bePower(alpha=0.05, cv=0.2, n=20, design=:d2x2)
bePower(alpha=0.1, logscale=false, theta1=-0.1, theta2=0.1, theta0=0, cv=0.14, n=21)
bePower(alpha=0.1, logscale=false, theta1=-0.1, theta2=0.1, theta0=0, cv=0.14, n=21, method=:shifted)
bePower(cv=0.4, n=35, design=:d2x4x4)
bePower(cv=0.14, n=21)

ci2cv

Приблизительная оценка коэффициента вариации по доверительному интервалу и количеству субъектов для исследования биоэквивалентности.

1
ci2cv(;alpha = 0.05, theta1 = 0.8, theta2 = 1.25, n, design=:d2x2, mso=false, cvms=false)

alpha – Alpha (o < alpha < 1) (по умолчанию=0.05);

beta – Beta (o < beta < 1) (по умолчанию=0.2); power = 1 – beta;

theta1 – Lower Level (по умолчанию=0.8);

theta2 – Upper level (по умолчанию=1.25);

n – число субъектов;

design – дизайн;

  • :parallel
  • :d2x2 (по умолчанию)
  • :d2x2x4
  • :d2x4x4
  • :d2x3x3
  • :d2x4x2
  • :d3x3
  • :d3x6x3

mso – расчитать только MS

  • false(по умолчанию)
  • true

cvms – расчитать  CV и MS

  • false(по умолчанию)
  • true

Пример:

1
ci2cv(;alpha = 0.05, theta1 = 0.9, theta2 = 1.25, n=30, design=:d2x2x4)

pooledCV

Объединение CV.

1
pooledCV(data::DataFrame; cv=:cv, df=:df, alpha=0.05, returncv=true)::ConfInt

data::DataFrame – DataFrame с данными о CV;

cv::Symbol – столбец, содержащий CV (по умолчанию – :cv);

df::Symbol – столбец, содержащий DF (по умолчанию – :df);

alpha – Alpha для вычисления доверительного интервала CV (по умолчанию=0.05);

returncv – вернуть (результат) CV или вариацию:

  • true (по умолчанию) – вернуть CV
  • false – вернуть вариацию

Пример:

1
2
3
4
5
6
using DataFrames
data = DataFrame(cv = Float64[], df = Int[])
push!(data, (0.12, 12))
push!(data, (0.2, 20))
push!(data, (0.25, 30))
pooledCV(data; cv=:cv, df=:df, alpha=0.05, returncv=true)

CI – сабмодуль

oneProp[7-14]

Двухсторонний( two-sided) доверительный интервал (CI) для пропорции.

1
CI.oneProp(x::Int, n::Int; alpha=0.05, method=:wilson)

x::Int – число позитивный исходов;

n::Int – общее число наблюдений;

alpha – alpha ;

method::Symbol – метод;

  • :wilson – Wilson’s confidence interval (CI) for a single proportion (wilson score);
  • :wilsoncc – Wilson’s CI с поправкой на непрерывность (CC);
  • :cp – Clopper-Pearson exact CI;
  • :soc – SOC: Second-Order corrected CI;
  • :blaker – Blaker exact CI for discrete distributions;
  • :arcsine – Arcsine CI;
  • :wald – Wald CI без поправки на непрерывность;

twoProp

Расчет двухстороннего доверительного интервала (CI) для двух пропорций: разность, отношение шансов, отношение рисков.

1
CI.twoProp(x1::Int, n1::Int, x2::Int, n2::Int; alpha=0.05, type=::Symbol, method::Symbol)

x1::Int – число позитивный исходов в группе 1;

n1::Int – nuобщее число наблюдений в группе 1;

x2::Int – число позитивный исходов в группе 1;

n2::Int – nuобщее число наблюдений в группе 1;

alpha – alpha;

type – тип: разность, отношение рисков (risk ratio), отношение шансов (odd ratio);

  • :diff – разность;
  • :rr – отношение рисков;
  • :or – отношение шансов;

method::Symbol – метод (различен для каждого типа);

Разность (:diff):

  • :nhs – Newcombes Hybrid (wilson) Score;
  • :nhscc – Newcombes Hybrid (wilson) Score с поправкой на непрерывность;
  • :ac – Agresti-Caffo CI;
  • :mn – Method of Mee 1984 c модификацией Miettinen и Nurminen;
  • :mee – Mee Maximum Likelihood (ML) метод;
  • :mee2 – ML метод (Farrington, C. P. and Manning, G. (1990));
  • :wald – Wald;
  • :waldcc – Wald с поправкой на непрерывность;

Отношение рисков (:rr):

  • :cli – Crude log interval (Gart 1988);
  • :mover – Method of variance estimates recovery (MOVER);

Отношение шансов (:or):

  • :mn – Miettinen-Nurminen CI
  • :woolf – Woolf logit CI
  • :awoolf – Adjusted Woolf interval (Gart adjusted logit)

oneMeans

Параметрический двухстороннй доверительный интервал.

1
CI.oneMean(m::Real, s::Real, n::Int, alpha::Real; method=:norm)::ConfInt

m::Real – среднее;

s::Real- дисперсия;

n::Int – число наблюдений;

alpha::Real – alpha;

method – распределение:

  • :norm – нормальное распределение (по умолчанию);
  • :tdist – T-распределение.

twoMeans

Двухсторонний доверительный интервал для разности средних.

1
CI.twoMeans(m1::Real, s1::Real, n1::Real, m2::Real, s2::Real, n2::Real; alpha::Real=0.05, method=:ev)::ConfInt

m1 ::Real- среднее группы 1;

s1 ::Real- дисперсия группы 1;

n1 ::Int- число наблюдений в группе 1;

m2 ::Real– среднее групп 2;

s2 ::Real– дисперсия группы 2;

n2 ::Int- число наблюдений в группе 2;

alpha ::Real– alpha;

method – предполагается ли равенство дисперсий;

  • :ev – равенство дисперсий (по умолчанию);
  • :uv – дисперсии не равны, используется Welch-Satterthwaite поправка df.

cmh

Двухсторонний доверительный интервал по методу Cochran–Mantel–Haenszel.

1
CI.cmh(data::DataFrame; a = :a, b = :b, c = :c, d = :d, alpha = 0.05, type =:diff, method = :default, logscale = false)::ConfInt

data::DataFrame – стратифицированные данные 2х2 таблиц;

a, b, c, d – столбцы содержащие количество наблюдений в каждой из ячеек 2х2 таблицы:

outcome 1 outcome 2
group 1 a b
group 2 c d

alpha – alpha ;

type – тип

  • :diff – разница (по умолчанию);
  • :or – отношение шансов;
  • :rr – отношение рисков;

logscale – результат вычисления доверительного интервала в лог-преобразованном виде.

  • false – нет (по умолчанию);
  • true – да;

Пример, допустим есть данные двух источников (2 таблицы 2х2):

1:

outcome 1 outcome 2
group 1 8 98
group 2 5 115

2:

outcome 1 outcome 2
group 1 22 76
group 2 16 69

DataFrame:

1
2
3
data = DataFrame(a = Int[], b = Int[], c = Int[], d = Int[])
push!(data, (8, 98, 5, 115))
push!(data, (22, 76, 16, 69))

Для разности рисков:

1
ci = CI.cmh(data, alpha = 0.1)

PK – сабмодуль

Расчет фармакокинетических параметров.

1
PK.nca(data; conc=:Concentration, time=:Time, sort = NaN, calcm = :lint)

conc::Symbol – столбец концентраций DataFrame;

time::Symbol – столбец времени DataFrame;

sort::Symbol[] – столбцы сортировки (по умолчанию – NaN, если не требуется сортировка);

calcm::Symbol – метод трапеций:

  • :lint – линейные трапеции (linear trapezoidal);
  • :logt – линейные трапеции до Tmax, лог-линейные трапеции на нисходящей части  (linear trapezoidal before tmax and linear up log down after);
  • :lulg – динейная трапеция если с2 >= c1, лог-линейная если иначе (linear up log down: if c2 >= c1 – linear, else log);

SIM – сабмодуль

bePower

1
SIM.bePower(;alpha=0.05, logscale=true, theta1=0.8, theta2=1.25, theta0=0.95, cv=0.0, n=0, simnum=5, seed=0)

ctPropPower

1
SIM.ctPropSampleN(p1, p2, ref; alpha=0.05, beta=0.2, type=:notdef, citype =:notdef, method=:notdef, simnum=5, seed=0)

ctPropSampleN

1
SIM.ctPropSampleN(p1, p2, ref; alpha=0.05, beta=0.2, type=:notdef, citype =:notdef, method=:notdef, simnum=5, seed=0)

ctMeansPower

1
SIM.ctMeansPower(m1, s1, n1, m2, s2, n2, ref; alpha=0.05, method=:notdef, simnum=5, seed=0)

ctMeansPowerFS

1
SIM.ctMeansPowerFS(m1, s1, n1, m2, s2, n2, ref;alpha=0.05, method=:notdef, simnum::Real=5, seed=0)

Валидация

Программа валидации:

  • ctSampleN
  • ctPower
  • tfn
  • owensTint2
  • owensQo
  • owensQ
  • powerTOSTOwenQ
  • approxPowerTOST
  • approx2PowerTOST
  • owensT
  • designProp
  • ci2cv
  • pooledCV
  • bePower
  • beSampleN
  • CI.oneProp
  • CI.twoProp
  • CI.mnzstat
  • CI.twoMeans
  • CI.oneMean
  • CI.cmh
  • SIM.bePower
  • SIM.ctPropPower
  • SIM.ctMeansPowerFS
  • SIM.ctPropSampleN
  • PK.nca

 

Ссылки

  1. Chow S, Shao J, Wang H. 2008. Sample Size Calculations in Clinical Research. 2nd Ed. Chapman & Hall/CRC Biostatistics Series.
  2. Connor R J. 1987. Sample size for testing differences in proportions for the paired-sample design. Biometrics 43(1):207-211.
  3. Phillips K F. 1990. Power of the Two One-Sided Tests Procedure in Bioequivalence. J Pharmacokin Biopharm. 1990;18(2):137–44. doi: 10.1007/BF01063556.
  4. Diletti D, Hauschke D, Steinijans V W. 1991. Sample Size Determination for Bioequivalence Assessment by Means of Confidence Intervals. Int J Clin Pharmacol Ther Toxicol. 1991;29(1):1–8.
  5. Owen D B. 1965. A Special Case of a Bivariate Non-central t-Distribution. Biometrika Vol. 52, pp.437-446.
  6. Owen D B. 1956. Tables for computing bivariate normal Probabilities. The Annals of Mathematical Statistics, Vol. 27 (4) Dec. 1956, pp. 1075-1090.
  7. Wilson, E.B. (1927) Probable inference, the law of succession, and statistical inference J. Amer.Stat. Assoc22, 209–212
  8. Newcombe, R. G. (1998). “Two-sided confidence intervals for the single proportion: comparison of seven methods”. Statistics in Medicine. 17 (8): 857–872.
  9. Clopper, C. and Pearson, E.S. (1934) The use of confidence or fiducial limits illustrated in the caseof the binomial.Biometrika26, 404–413.
  10. T. Tony Cai One-sided con&dence intervals in discrete distributions doi:10.1016/j.jspi.2004.01.00
  11. Blaker, H. (2000). Confidence curves and improved exact confidence intervals for discrete distributions,Canadian Journal of Statistics28 (4), 783–798
  12. Cohen, Jacob (1988). Statistical Power Analysis for the Behavioral Sciences (2nd ed.).
  13. Shao J (1998) Mathematical statistics. Springer. New York, New York, USA
  14. Laplace, Pierre Simon (1812). Théorie analytique des probabilités (in French). p. 283.
  15. Newcombe RG (1998). Interval Estimation for the Difference Between Independent Proportions: Comparison of Eleven Methods. Statistics in Medicine 17, 873-890.
  16. Agresti A, Caffo B., “Simple and effective confidence intervals for proportions and differences of proportions result from adding two successes and two failures”, American Statistician 54: 280–288 (2000)
  17. Mee RW (1984) Confidence bounds for the difference between two probabilities,Biometrics40:1175-1176
  18. Farrington, C. P. and Manning, G. (1990), “Test Statistics and Sample Size Formulae for Comparative Binomial Trials with Null Hypothesis of Non-zero Risk Difference or Non-unity Relative Risk,” Statistics in Medicine, 9, 1447–1454
  19. Gart, JJand Nam, J (1988): Approximate interval estimation of the ratio of binomial parameters: Areview and corrections for skewness. Biometrics 44, 323-338.
  20. Donner A, Zou GY. Closed-form confidence intervals for functions of the normal mean and standard deviation. Stat Methods Med Res. 2012 Aug;21(4):347-59.
  21. Newcombe G, 2013. MOVER-R confidence intervals for ratios and products of two independently
    estimated quantities. Statistical Methods in Medical Research.
  22. Miettinen O. S., Nurminen M. (1985) Comparative analysis of two rates.Statistics in Medicine4,213–226
  23. Woolf, B. (1955). On estimating the relation between blood group and disease. Annals of human genetics, 19(4):251-253.
  24. Lawson, R (2005):Smallsample confidence intervals for the odds ratio. Communication in Statistics Simulation andComputation, 33, 1095-1113.
  25. Snedecor, George W. and Cochran, William G. (1989), Statistical Methods, Eighth Edition, Iowa State University Press.
  26. Makoid C, Vuchetich J, Banakar V. 1996-1999. Basic Pharmacokinetics.

 

См. также:

  • Brown, L.D., Cai, T.T., and DasGupta, A. Interval estimation for a binomial proportion. Statistical Science, 16(2):101–117, 2001.
  • Agresti, A. 2002. Categorical Data Analysis. Wiley, 2nd Edition.