View
197
Download
1
Category
Preview:
DESCRIPTION
Презентация профессора Святослава Леонидовича Плавинского "Изучение распространения болезней. Эпидемиология и SAS." на осенней школе по математическому моделированию ЦНИИОИЗ в октябре 2013г.
Citation preview
Изучение распространения болезней
Эпидемиология и SAS
Небольшое вводное замечание
• Привычное использование SAS– Клинические испытания– Health Care Data (обработка форм и
подготовка счетов)– Научные исследования
Цели эпидемиологических исследований
• Описать состояние здоровья популяции
• Объяснить этиологию заболевания• Предсказать возникновение
заболеваний• Контролировать распространение
заболеваний
Типы исследований
• Описательные– Оценка популяционных параметров (I, P)
• Гипотезо-генерирующие (EDA)– В отсутствие четко сформулированной
гипотезы• Какие факторы влияют на болезненность (IRR,
PR, OR)
• Подтверждающие (с заранее сформулированной гипотезой)
Задача описательных исследований
• … описать ситуацию,
• Возможно сравнить с другими регионами, странами, группами
• Возможные отличия и поиск этиологических факторов…
Что можно описывать?
• Частоту встречаемости чего-то в популяции (распространенность, prevalence)
• Скорость появления чего-то в популяции (заболеваемость, смертность, incidence)
• Средние уровни показателя
• Распределение показателя
Основные понятия
• Заболеваемость/ смертность (incidence)– rate
• Распространенность (prevalence)– Точечная– Периодная
Заболеваемость
Популяция
Имеющиеся случаи
Время 1
Время 2
Новые случаи
Имеющиеся случаи
Новые случаи
РаспространенностьПопуляция
Случаи
В популяции возникают новые случае
Болезнь заканчивается смертью или излечением
Распространенность
Соответственно…
• Incidence– Всегда по отношению ко времени (т.е. на
100 тыс. жителей в год), т.н. человеко-время
• Prevalence – Доля (усредненный размер популяции
(mid-period) или в конкретный момент).
В теории
• Prevalence=Incidence*длительность заболевания
• Однако…
Когда теория и практика не совпадают
• Превалентные случаи принципиально отличаются от инцидентых (инцидентные более тяжелые, превалентные более доброкачественные) – опасность скрининга
Когда теория и практика не совпадают…
• Поэтому для того, чтобы установить знак равенства между превалентными и инцидентными случаями надо вначале организовать наблюдение (когортное исследование)
Выборка
• Для описательных (да и эпидемиологических вообще) исследований крайне важно обеспечить репрезентативность данных
• Выборки– Простая случайная– Сложная
Простая случайная…• DATA pop;• samprate=0.05;• DO i=1 TO 10000;• x=ranuni(12345);• if x LE samprate then select=1; else select=0;• output;• END;• RUN;
• Или так:• proc surveyselect method=srs data=pop out=sel samprate=5;• run;
Для сложных выборок
• PROC SURVEYSELECT
Взяли выборку• Обследовали• Измерили показатель интереса• Описываем
• Например, число лиц с AUDIT > 16 делим на общее число обследованных (prevalence)
• Количество умерших делим на сумму количества лет, которые все пациенты находились под наблюдением (mortality)
• Число ИМ делим на на сумму количества лет, которые все пациенты находились под наблюдением (incidence)
• Число новых случаев ИМ в течении года делим на размер стационарной популяции (вопрос только в том, как ее точно измерить…)
Стандартизация
• Довольно часто получаемые результаты не вполне сравнимы друг с другом ввиду различий в составе исходных популяций
• Для облегчения сравнения данные стандартизируются, т.е. модифицируются так, чтобы они соответствовали исходным данным и некоей стандартной популяции
Простейший пример
• Разный возрастной состав популяции
Возраст
Прямая стандартизация
Прямая стандартизация
• Алгоритм– Выбираем стандартную популяцию– Рассчитываем интенсивные показатели
(заболеваемость, смертность) в подгруппах– Оцениваем ожидаемое количество по подгруппам
(произведение интенсивного показателя и численности в стандартной популяции)
– Суммируем и делим на численность стандартной популяции
Стандартная популяция
• Выбирается произвольно (поэтому данные не сравнимы, если используются разные стандартные популяции)
• Выбор популяции зависит от целей (стандартная европейская, российская, и т.п.)
• Популяции (Европа, Канада, США) можно взять здесь: http://seer.cancer.gov/stdpopulations/
Стандартные популяции
Популяция• Возраст муж жен• 15-19 4338040 4157622 • 20-24 6212084 6044059 • 25-29 6158595 6098754 • 30-34 5341307 5457684 • 35-39 4951679 5117213 • 40-44 4444165 4749151 • 45-49 5308734 5938526 • 50-54 5121251 6139482 • 55-59 4235095 5512865 • 60-64 2833901 4063024 • 65-69 1644173 2835403 • 70-74 2075235 4094062 • 75-79 1080449 2536129 • 80-84 686972 2076410 • 85-89 239583 1022250
Стандартный миллион• DATA russian_population;• INPUT males females;• ageg=15+(_n_-1)*5;• CARDS;• 4338040 4157622 • 6212084 6044059 • 6158595 6098754 • 5341307 5457684 • 4951679 5117213 • 4444165 4749151 • 5308734 5938526 • 5121251 6139482 • 4235095 5512865 • 2833901 4063024 • 1644173 2835403 • 2075235 4094062 • 1080449 2536129 • 686972 2076410 • 239583 1022250 • ;• RUN;
Стандартный миллион• proc means nway noprint;• output out=tmp_xrum(DROP=_TYPE_ _FREQ_)
sum(females)=ftot sum(males)=mtot;• run;• proc sql;• create table tmp_xrum2 as• select russian_population.*, tmp_xrum.*, • (russian_population.females/tmp_xrum.ftot*1000000)
as f_mil,• (russian_population.males/tmp_xrum.mtot*1000000) as
m_mil• from• russian_population, tmp_xrum;• quit;
Результаты по группам
Анализ• data new_old_audit;• set new_old_audit;• if age=0 then age=.;• if age > 15;• if age=99 then age=.;• ageg=5*floor(age/5);• alc_high= (audit GE 16); • id=_n_;• run;• proc freq;• tables ageg*alc_high;• run;• proc freq; • tables sex*gr*alc_high/nopercent nocol;• run;• proc freq data=new_old_audit noprint;• tables sex*gr*ageg*alc_high/out=x_alc(DROP=percent where=(sex=1));• run;• proc means data=x_alc noprint nway;• class gr ageg;• output out=xx_alc(DROP= _TYPE_ _FREQ_) sum(count)=n_group;• run;
Анализ• proc sort data=x_alc; by gr ageg; run;• proc sort data=xx_alc; by gr ageg; run;• data xxx_alc;• merge x_alc xx_alc;• by gr ageg;• if alc_high=1;• pct_high=count/n_group;• run;• proc sql;• create table std_alc as select• tmp_xrum2.ageg, tmp_xrum2.m_mil,• xxx_alc.gr, xxx_alc.ageg, xxx_alc.pct_high,• (tmp_xrum2.m_mil*xxx_alc.pct_high) as comp_std• from• tmp_xrum2, xxx_alc• where tmp_xrum2.ageg=xxx_alc.ageg;• quit;• proc means sum;• class gr;• var comp_std;• run;
После стандартизации
Одна проблема…
• Если у нас группа 10 человек, то…
• +1 = +10%
• Надо указать, где пределы нашей ошибки (не надо делать с данными государственной статистики – там нет выборки)
Доверительные интервалы
• В случае прямой стандартизации – гамма метод (пуассона)
Код (не надо в последней версии SAS)
• proc sql;• create table std_alc2 as select• tmp_xrum2.ageg, tmp_xrum2.m_mil,• xxx_alc.* from• tmp_xrum2, xxx_alc• where tmp_xrum2.ageg=xxx_alc.ageg;• quit;
• data an;• set std_alc2;• w_i=m_mil/1000000;• ir_i=pct_high;• nmr=count;• dnm=n_group;• varpy_i=nmr/dnm**2;• run;
Код (не надо в последней версии SAS)
• proc sort; by gr ageg; run;• data an;• set an;• by gr ageg;
• retain irw varpy varpyw sumwi wmax crnum crden;• if first.gr then do;• irw=0;• varpy=0; • varpyw=0; • sumwi=0; • wmax=0;• crnum=0; • crden=0;• end;• irw=irw+(w_i*ir_i);• varpy=varpy+((w_i**2)*varpy_i);• sumwi=sumwi+w_i;• crnum=crnum+nmr;• crden=crden+dnm;• wmax=max(wmax,w_i/dnm);
Код (не надо в последней версии SAS)
• if last.gr then do;• varpyw=varpy/sumwi**2;• lgam=(varpyw/(2*irw))*CINV(0.025,((2*(irw**2))/varpyw));• if irw=0 and varpyw=0 then do;• lgam2=0; end;• else lgam2=(varpyw/irw)*gaminv(0.025,((irw**2)/varpyw));• ugam=((varpyw+(wmax**2))/(2*(irw+wmax)))*cinv(0.975,
((2*((irw+wmax)**2))/(varpyw+(wmax**2))));• if irw=0 and varpyw=0 then do;• ugam2=(0.5*cinv(0.975,2))/crden;• end;• else ugam2=(varpyw/irw)*gaminv(0.975,(((irw**2)/varpyw)+1));• output;• end;• run;• proc print;• var gr irw lgam2 ugam2;• run;
Результат
Anderson, Rosenber, 1998
Fay, Feuer, 1997
Непрямая стандартизация
Оценка достоверности
Стандартизация при помощи моделей
• Количественные показатели– Общая линейная модель
• Качественные показатели• Закрытая популяция
– Логистическая регрессия– Регрессия Пуассона
• Открытая популяция– Регрессия Пуассона– Модель пропорционального риска
Количественные показатели
• Стандартизация осуществляется путем построения линейной модели и устранения влияния «мешающих» переменных
Регрессия
Повторим
• Идея заключается в том, что строится модель, пытающаяся предсказать значения y в зависимости от x. Тогда остаточные значения (residuals) показывают колебания y не связанные с x. Соответственно, можно рассчитать значение y при интересующем нас значении x (стандартном) и прибавить остаточное для этого наблюдения. В результате влияние х будет устранено, а полученные значения y - стандартизированы.
Пример
• Надо проанализировать зависимость CD4 от пути заражения
• Простой анализ показывает:– Половой путь 491 (264) кл/мл– ПИН 470 (247) кл/мл– Разница 21 кл/мл
CD4 и возраст
CD4 и время от постановки диагноза
Анализ
• PROC GLM DATA=nnn;
• CLASS route_1;
• MODEL cd4__abs=route_1 age year;
• LSMEANS route_1/STDERR CL95;
• RUN; QUIT;
Результат
Таким образом
• Использование общей линейной модели позволяет стандартизировать (корректировать) количественные показатели если есть подозрение, что другие переменные оказывают влияние на эту количественную переменную.
Качественные переменные
• Два основных подхода - в случае анализа выживаемости (модель пропорционального риска Кокса) и в случае табличных данных (Пуассонова регрессия).
Задача
Анализ
• Можно анализировать как простую таблицу 2*2, но будет сложно с добавлением других переменных, поэтому используем Пуассонову регрессию:
• PROC GENMOD;• CLASS sex;• MODEL arv_now=sex/• DIST=POISSON LINK=LOG;• RUN;
Результат
И далее
Таким образом
• Можно стандартизировать показатели (в примере выше для мужчин) был стандартизованный - для тех, кто принимал наркотики в последние 4 недели
• Можно добавить количественный показатель (возраст, время от заражения) и затем рассчитать вероятности при средних значениях этих параметров
Если учитывалось время
• Можно получить более точный результат если есть данные по времени наблюдения (ЧЛН)
• Количество ЧЛН для каждой ячейки таблицы вносится при помощи команды offset.
• Соответственно, полученные результаты уже указывают на частоту наступления на единицу времени (т.е. заболеваемость, rate)
Если учитывалось время
• Если есть возможность, можно учесть время наблюдения за каждым пациентом
• DATA new; SET iem.mu99;• lfut=LOG(fut99/365.25);• RUN;• PROC GENMOD;• CLASS idn;• MODEL mort99=age edhigh edlow smpr ch/• DIST=poisson LINK=log OFFSET=lfut;• REPEATED SUBJECT=idn/TYPE=IND;• RUN;
Результат
Результат
Если…
• Вымирание (заболеваемость) не стабильная, то надо воспользоваться моделью Кокса
• PROC FORMAT;• VALUE gr 0=’средние’ 1=’заданные’;• DATA bas;• age=50; ch=220; smpr=1; edhigh=0;
edlow=0;• RUN;
Сама модель и график
• PROC PHREG DATA=iem.mu99;• MODEL fut99*mort99(0)=age ch smpr edhigh edlow;• BASELINE OUT=mum COVARIATES=bas
SURVIVAL=surv;• RUN;• DATA mum; SET mum; IF smpr=1 THEN group=1;• ELSE group=0;• FUTy=FUT99/365.25;• FORMAT group gr.; RUN;• PROC GPLOT; SYMBOL I=J value=star;• PLOT surv*FUTy=group;• RUN; QUIT;
Результат
Для сложных выборок
– Surveyselect– Surveyfreq– Surveylogistic– Surveymeans– Surveyphreg– Surveyreg
Выводы
• Существует значительное количество методов стандартизации– Простейшие - прямая и непрямая -
позволяют сравнивать группы, разделенные на небольшое число подгрупп
– Модельные позволяют сравнивать группы после коррекции по практически любым переменным
Recommended