Проведение статистического анализа на языке программирования R в медико-биологических исследованиях. Учебное пособие

- -
- 100%
- +
Листинг 141
library (MASS) #Подключаем библиотеку, содержащую набор данных bacteria
head (bacteria) # выводим первую часть набора данных
#=======================================================
# Результат вывода первой части набора данных
#=====================================================
y ap hilo week ID trt
1 y p hi 0 X01 placebo
2 y p hi 2 X01 placebo
3 y p hi 4 X01 placebo
4 y p hi 11 X01 placebo
5 y a hi 0 X02 drug+
6 y a hi 2 X02 drug+
#=======================================================
#Проводим определение структуры набора данных
#=======================================================
str (bacteria) # Выводим структуру данных, содержащуюся в наборе данных
# bacteria
#=======================================================
# Результаты применения функции
#=======================================================
'data.frame’: 220 obs. of 6 variables:
$ y: Factor w/ 2 levels «n», «y»: 2 2 2 2 2 2 1 2 2 2…
$ ap: Factor w/ 2 levels «a», «p»: 2 2 2 2 1 1 1 1 1 1…
$ hilo: Factor w/ 2 levels «hi», «lo»: 1 1 1 1 1 1 1 1 2 2…
$ week: int 0 2 4 11 0 2 6 11 0 2…
Продолжение листинга 1
$ ID: Factor w/ 50 levels «X01», «X02», «X03»,..: 1 1 1 1 2 2 2 2 3 3…
$ trt: Factor w/ 3 levels «placebo», «drug»,..: 1 1 1 1 3 3 3 3 2 2…
Приведенный набор данных содержит в основном «факторы», его уровни представлены естественным языком. Таким представлением в языке R описываются качественные данные, а сам набор данных содержит только один количественный показатель (week), описывающий порядковый номер недели проведения исследования.
Листинг 2
library (MASS) #Подключаем пакет, содержащий набор данных muscle
head (muscle) #Выводим начало набора данных
#=======================================================
#Результат применения команды
#=======================================================
Strip Conc Length
3 S01 1 15.8
4 S01 2 20.8
5 S01 3 22.6
6 S01 4 23.8
9 S02 1 20.6
10 S02 2 26.8
#=======================================================
#Выводим структуру набора данных
#=======================================================
str (muscle)
#=======================================================
'data.frame’: 60 obs. of 3 variables:
$ Strip: Factor w/ 21 levels «S01», «S02», «S03»,..: 1 1 1 1 2 2 2 2 3 3…
Продолжение листинга 2
$ Conc: num 1 2 3 4 1 2 3 4 0.25 0.5…
$ Length: num 15.8 20.8 22.6 23.8 20.6 26.8 28.4 27 7.2 15.4…
Набор данных muscle содержит значения концентрации хлорида кальция, кратные величине 2,2 ммоль (Conc), и длину полосы сокращения сердечной мышцы, измеряемую в миллиметрах (Length) – представленные данные являются количественными. Одновременно набор данных содержит и качественный параметр, а именно обозначение линии сердечной мышцы при проведении измерений (Strip).
2. НОРМАЛЬНЫЙ ЗАКОН РАСПРЕДЕЛЕНИЯ СЛУЧАЙНОЙ ВЕЛИЧИНЫ
Каждая переменная, входящая в набор данных, имеет совокупность значений, полученных в результате наблюдения или путем прямого измерения. Взаимная зависимость и влияние изменения одной величины на другую являются предметом исследования, в том числе методами статистического анализа.
Если на исследуемую величину действует большое количество независимых переменных и отсутствует возможность выделить доминирующую величину, то распределение исследуемой величины стремится к так называемому нормальному или Гауссову закону распределения (при проведении исследования данных выбор применяемого для анализа теста или критерия зависит от того, принадлежит ли исследуемая величина нормальному закону распределения или нет).
На рисунке 3 представлен пример графика (гистограммы42) случайной величины, значительно приближенной к нормальному закону распределения.

Рисунок 3 – Пример частоты встречаемости наблюдаемого и/или измеренного значения для нормального закона распределения
Опишем нахождение основных метрик и охарактеризуем их для данных, распределенных в соответствии с нормальным законом.
2.1. Базовый статистический анализ количественных данных
Базовый статистический анализ составляет основу любой аналитической работы с данными (независимо от того, какого типа данные анализируются).
В случае, если набор данных содержит в основном качественные данные, то при проведении базового статистического анализа определяют количество данных, содержащихся в каждом факторе, количество уровней факторов и количество данных, содержащихся в каждом уровне. На основании этих данных вычисляются:
1. Доля каждого уровня в факторе.
2. Среднее квадратичное отклонение доли в факторе.
В случае, если набор данных содержит в основном количественные данные, то при проведении базового статистического анализа определяют:
1. Выборочное среднее и/или среднее взвешенное значение.
2. Медиану.
3. Среднее квадратическое отклонение.
4. Доверительный интервал выборочного среднего на основании первой и третьей величины.
5. Максимальное значение.
6. Минимальное значение.
7. «Размах» значений на основании максимального и минимального значений.
8. Первый квартиль в распределении данных.
9. Последний квартиль в распределении данных.
10. Межквартильный интервал на основании первого и последнего квартиля в распределении данных.
Перечисленные величины описывают основные статистические свойства исследуемых данных, но не дают ответа на вопрос о наличии различий в группах данных и их взаимном влиянии. Рассмотрим более детально способ вычисления величин, входящих в перечень базовых статистических величин.
2.1.1. Выборочное среднее
При проведении анализа данных первая величина, которую вычисляет исследователь – это выборочное среднее значение43. В данном учебном пособии не рассматривается вопрос математически строгого представления средних величин, а представлены наиболее часто использующиеся на практике. Выборочная средняя величина вычисляется по уравнению (1):

где N – количество исследований, вычисленное по одному параметру в наборе данных; Xi – фактическое значение усредняемой величины.
Она является обобщенной характеристикой в случае однородности данных, описывающей явления, имеющие одну и ту же размерность. Например, если врач проводит исследование веса или роста пациентов, возраст которых составляет 20 полных лет, то ему необходимо описать вес или рост всех пациентов в возрасте 20 полных лет. Для этих целей он будет использовать выборочное среднее значение. В случае данных, распределенных в соответствии с нормальным законом распределения, выборочное среднее значение будет соответствовать максимуму частоты встречаемости исследуемого значения, как представлено на рисунке 4.

Рисунок 4 – Выборочное среднее (зеленая вертикальная линия)
для нормального закона распределения44
На языке программирования R выборочное среднее значение вычисляется с помощью функции mean () из пакета base.
В случае, если врачу необходимо более точно описать средний вес пациентов (например) в возрасте 20 лет с учетом их (например) роста, то для этих целей нужно использовать среднее взвешенное значение (2):

где N – количество исследований, вычисленное по одному параметру в наборе данных; Xi – фактическое значение усредняемой величины; ωi – вес i-го значения усредняемой величины в общей выборке.
В качестве весового коэффициента ωi в этом случае будет выступать величина, описывающая рост i-го пациента в возрасте 20 лет. Средняя взвешенная величина выступает в качестве характеристики, описывающей совокупность явлений, имеющих одну и ту же размерность с учетом влияния сторонних признаков (например, вес пациентов с учетом их роста).
На языке программирования R выборочное среднее значение вычисляется с помощью функции weighted.mean () из пакета base.
При исследованиях долей возникновения признака может возникнуть необходимость вычисления средней доли признака по отношению ко всем признакам. В этом случае среднее значение доли вычисляется как (3):

где p – доля единиц, обладающих исследуемым признаком; q – доля единиц, не обладающих исследуемым признаком, равна 1-p.
Пример вычисления выборочного среднего и средневзвешенного на языке R
Для примера вычисления средних и средневзвешенных значений используем набор данных anorexia из пакета MASS. Вычислим среднее и средневзвешенное значение веса пациента. В качестве весового коэффициента (уравнение 2 и текст под ним) будем использовать долю пациентов в каждой группе.
Листинг 3
library (MASS) #45Подключаем библиотеку, содержащую набор данных anorexia
#=====================================================
#Исследуем структуру набора данных
#=====================================================
str (anorexia)
#=======================================================
# Выводим структуру данных
#=======================================================
'data.frame’: 72 obs. of 3 variables:
$ Treat: Factor w/ 3 levels «CBT», «Cont», «FT»: 2 2 2 2 2 2 2 2 2 2..
Продолжение листинга 3
$ Prewt: num 80.7 89.4 91.8 74 78.1 88.3 87.3 75.1 80.6 78.4…
$ Postwt: num 80.2 80.1 86.4 86.3 76.1 78.1 75.1 86.7 73.5 84.6…
#========================================================
# Выводим заголовочную часть набора данных
#========================================================
head (anorexia)
#=======================================================
# Выводим заголовочную часть файла
#========================================================
Treat Prewt Postwt
1 Cont 80.7 80.2
2 Cont 89.4 80.1
3 Cont 91.8 86.4
4 Cont 74.0 86.3
5 Cont 78.1 76.1
6 Cont 88.3 78.1
#========================================================
# Вычисляем выборочное среднее в контрольной группе пациентов до
# проведения лечения
#=====================================================
mean (anorexia [anorexia$Treat==«Cont», ] $Prewt)
#========================================================
# результат вычисления среднего веса пациента в контрольной группе
#========================================================
[1] 81.55769
#========================================================
mean (anorexia [anorexia$Treat==«CBT», ] $Prewt)
#========================================================
# результат вычисления среднего веса пациента в группе с
Продолжение листинга 3
# когнитивно-поведенческой терапией
#========================================================
[1] 82.68966
#========================================================
mean (anorexia [anorexia$Treat==«FT», ] $Prewt)
#========================================================
# результат вычисления среднего веса пациента в группе с семейной терапией
#========================================================
[1] 83.22941
#========================================================
#Вычисление взвешенного среднего значения
#========================================================
# Определяем количество пациентов в каждой группе и общее количество пациентов
numInCont <– length46 (anorexia [anorexia$Treat==«Cont», ] $Prewt)
numInCBT <– length (anorexia [anorexia$Treat==«CBT», ] $Prewt)
numInFT <– length (anorexia [anorexia$Treat==«FT», ] $Prewt)
numAll <– length (anorexia$Prewt)
#=======================================================
# Формируем вектор весов и вектор данных
# В данном примере в качестве веса выступает доля пациентов в каждой
# группе
#=======================================================
weightData <– c (numInCont/numAll, numInCBT/numAll, numInFT/numAll)
Продолжение листинга 3
meanData <– c (mean (anorexia [anorexia$Treat==«Cont», ] $Prewt),
mean (anorexia [anorexia$Treat==«CBT», ] $Prewt),
mean (anorexia [anorexia$Treat==«FT», ] $Prewt)
weighted.mean (meanData, weightData)
#=======================================================
# Результат вычисления средневзвешенного значения веса пациента
#=======================================================
[1] 82.40833
Полученные значения среднего и средневзвешенного веса пациентов отражают типичный уровень веса пациента в исследуемой группе, формирующийся под воздействием доминирующих неслучайных параметров. Установление неслучайных параметров, влияющих (в данном случае на вес пациента) на среднее значение, требует дальнейшего исследования данных с использованием соответствующих статистических критериев, в том числе критериев, позволяющих сравнивать средние величины (например, t-критерий Стьюдента). Оценка среднего отклонения отдельных значений (например, веса пациента) от среднего значения описывается с помощью среднего квадратического отклонения.
2.1.2. Вычисление среднего квадратического отклонения
Среднее квадратическое отклонение является статистической характеристикой, показывающей степень близости отдельных значений к средней величине (чем меньше среднее квадратическое отклонение, тем лучше средняя величина описывает исследуемую переменную). Среднее квадратическое отклонение генеральной совокупности значений вычисляется как (4):

где N – полное количество исследований в генеральной совокупности; x̅ – среднее значение исследуемой величины; xi – фактическое значение, полученное при измерении величины.
В большинстве случаев исследователь имеет дело не с генеральной совокупностью (всей популяцией), а с выборочной ее частью. Среднее квадратическое отклонение для выборки из генеральной совокупности вычисляется как (5):

Оценки верны для случаев, когда исследуемые переменные имеют количественную природу, и данные принадлежат к нормальному закону распределения. Иллюстрация среднего квадратического отклонения представлена на рисунке 5.

Рисунок 5 – Белой вертикальной линией отмечено выборочное среднее значение данных, распределенных по нормальному (Гауссову) закону. Расстояние от белой вертикальной линии до зеленой (влево или вправо) задается средним квадратическим отклонением
В случае, если исследователю необходимо оценить среднее квадратическое отклонение вероятности возникновения признака, то составляется уравнение (6):

где p̂ – вероятность возникновения исследуемого признака:

где N – общее количество значений, обладающих различными признаками; n – количество исследований, обладающих анализируемым признаком.
На языке программирования R для вычисления среднего квадратического значения применяется функция sd () из пакета stats. В случае данных, распределенных по нормальному закону, выборочное среднее квадратическое отклонение будет соответствовать рисунку 5.
Пример вычисления среднего квадратического отклонения
Для примера проведения вычислений среднего квадратического отклонения используем набор данных anorexia из пакета MASS.
Листинг 4
library (MASS) #Подключаем пакет MASS, содержащий набор данных anorexia
#========================================================
#Выделяем из набора данных подгруппы пациентов с разным типом лечения
#========================================================
contData <– anorexia [anorexia$Treat==«Cont», ] $Prewt
cbtData <– anorexia [anorexia$Treat==«CBT», ] $Prewt
ftData <– anorexia [anorexia$Treat==«FT», ] $Prewt
#=====================================================
#Вычисляем среднее квадратическое отклонение веса пациента до
# прохождения лечения
Продолжение листинга 4
#=====================================================
sd (contData)
#====================================================
# Результат вычисления в контрольной группе
#====================================================
[1] 5.70706
#====================================================
sd (cbtData)
#====================================================
# Результат вычисления в группе с когнитивно-поведенческой терапией
#=====================================================
[1] 4.845495
#========================================================
sd (ftData)
#=====================================================
# Результаты вычислений в группе с семейной терапией
#=====================================================
[1] 5.016693
#=====================================================
# Вычисляем количество пациентов до прохождения лечения
#=====================================================
lenPrewt <– length (anorexia$Prewt) #Общее количество данных
lenContPrew <– length (anorexia [anorexia$Treat==«Cont», ] $Prewt) # Количество
# данных в контрольной группе
lenCBTPrewt <– length (anorexia [anorexia$Treat==«CBT», ] $Prewt) # Количество
# данных в группе с когнитивно-поведенческой терапией
lenBTPrew <– length (anorexia [anorexia$Treat==«FT», ] $Prewt) # Количество
# данных в группе с семейной терапией
Продолжение листинга 4
#========================================================
# Вычисляем доли пациентов в каждой группе
#=====================================================
pCP <– lenContPrew/ lenPrewt # Доля в контрольной группе
pCBTP <– lenCBTPrewt/ lenPrewt # Доля в когнитивно-поведенческой группе
pBTP <– lenBTPrew/lenPrewt # Доля в семейной группе
#========================================================
sdCP <– sqrt47 (pCP* (1-pCP)) # Среднее квадратичное отклонение долей в
# контрольной группе.
sdCBT <– sqrt (pCBTP* (1- pCBTP))
sdBT <– sqrt (pBTP* (1- pBTP))
#=====================================================
# Результаты вычисления
#=====================================================
print (sdCP)
#=====================================================
[1] 0.4803227
#=====================================================
print (sdCBT)
#=====================================================
[1] 0.4904568
#=====================================================
print (sdBT)
#=====================================================
[1] 0.4246912
2.1.3. Вычисление доверительного интервала
Вычислив значения выборочной средней величины (или средневзвешенной величины)48 и среднего квадратического отклонения, можно построить доверительный интервал средней величины. Вычисление доверительного интервала для средней величины тесно связано с понятием доверительной вероятности, ошибки средней величины и предельной ошибкой выборки.
Доверительная вероятность определяет степень уверенности того факта, что измеренная величина находится вблизи среднего значения. Средняя ошибка выборки показывает объективно возникающее расхождение между характеристиками выборки и генеральной совокупностью, а предельная ошибка выборки – это ошибка выборки, исчисляемая с заданной степенью вероятности. Ошибка средней величины в выборке для количественного признака вычисляется по уравнению (8):




