##ПРИКЛАД 1.

Використаємо класичні дані Student’s Sleep Data. Проводилось тестування ефективності двох снодійних препаратів на 10 пацієнтах. Кінцевий результат вимірювали як приріст тривалості сну (у год.) відносно контрольного досліду. Кожен пацієнт приймав як перший, так і другий препарат (такі вибірки називають залежними).

data(sleep)  # Завантажимо дані у робочий простір R
sleep  # Подивимося вміст датафрейму
##    extra group ID
## 1    0.7     1  1
## 2   -1.6     1  2
## 3   -0.2     1  3
## 4   -1.2     1  4
## 5   -0.1     1  5
## 6    3.4     1  6
## 7    3.7     1  7
## 8    0.8     1  8
## 9    0.0     1  9
## 10   2.0     1 10
## 11   1.9     2  1
## 12   0.8     2  2
## 13   1.1     2  3
## 14   0.1     2  4
## 15  -0.1     2  5
## 16   4.4     2  6
## 17   5.5     2  7
## 18   1.6     2  8
## 19   4.6     2  9
## 20   3.4     2 10

змінна extra містить результат досліду, змінна group – номер препарату, ID – номер пацієнта. Знайдемо середні значення приросту сну для обох груп. Для цього використаємо функцію tapply(), яка бере перший аргумент, і ділить його на групи згідно другого аргументу, і тоді до кожної з груп застосовує функцію, яка передається третім аргументом. Так, ми поділимо змінну extra на групи за допомогою змінної group, і для кожної групи виконаєм функцію mean.

tapply(sleep$extra, sleep$group, mean)
##    1    2 
## 0.75 2.33

Порівняємо середні значення, робимо висновок про певну перевагу одного препарату над іншим. Однак слід зауважити, що лише подальші статистичні дослідження можуть ствердити чи заперечити статистичну значимість цієї переваги.

Деякий результат називають статистично значимим, якщо імовірність його випадкового виникнення дуже низький. Оскільки імовірність появи конкретного числа для будь-якої неперервної величини прямує до нуля, то на практиці для цього використовують р-величину, яка є кумулятивною (інтегральною) характеристикою і показує імовірність випадкового виникнення такого ж та більш екстремального (відповідно більшого чи меншого) результату.

Візуалізуємо результати застосування кожного препарату за допомогою графіка “ящик з вусами”:

boxplot(sleep$extra ~ sleep$group)  # у функцію передаємо формулу 'змінна extra залежить від змінної group'

plot of chunk unnamed-chunk-3

Ще раз бачимо перевагу одного препарату над іншим, крім того, відсутність викидів на графіку може означати відсутність незвичайних пацієнтів та спотвореної дії препаратів.

##ПРИКЛАД 2.

Проаналізуємо дані щодо зміни кількості проданих лікарських препаратів для 20 вітчизняних та 20 іноземних топ-виробників за період з січня до серпня 2011 року відносно аналогічного періоду 2010 року.

adress <- "http://stat.org.ua/data/pharmcomp_aug2011.csv"  # запишемо інтернет-адресу даних. 

Ці дані представлені у формі текстової таблиці: значення різних клітинок таблиці відділені знаком ;. Завантажимо дані з інтернету, і за допомогою функції read.csv() перетворимо їх у датафрейм, запишемо в об’єкт data:

data <- read.csv(adress, sep = ";") 
fix(data)  # переглянемо датафрейм у окремому вікні з можливістю редагування.

Змінна COMPANY містить назви компаній-виробників, змінна PPG – відсотки зміни кількості проданих препаратів, змінна ORIGIN – вказує походження виробника: мітка "UA" – вітчизняний виробник, а мітка "FOREIGN" – іноземний. Щоб продовжити роботу з R, слід закрити віконце з табличкою даних.

tapply(data$PPG, data$ORIGIN, mean)
## FOREIGN      UA 
##   1.505   2.025

Порівняємо середні значення, робимо деякі висновки:

  1. Середні значення > 0 – загалом можна відзначити приріст у кількості проданих препаратів компаній обох груп. Це також може бути непрямою ознакою того, що фармацевтичний ринок України зростає у натуральному відношенні (одиницях упаковок товару), однак невисокі значення середніх відсотків свідчать, що цей процес доволі повільний.
  2. Темпи зростання кількості реалізованих упаковок вітчизняних виробників трошки кращі, ніж іноземних. Візуалізуємо зміни кількості реалізованих упаковок для кожної з категорій виробників:
boxplot(data$PPG ~ data$ORIGIN, ylim = c(min(data$PPG) - 5, max(data$PPG) + 5))

plot of chunk unnamed-chunk-7

Передаємо формулу “PPG залежить від ORIGIN”, задаємо прямо вертикальні границі графіку: нижня межа нехай виводиться на 5 нижче від мінімуму PPG, а верхня на 5 вище. Це потрібно щоб зарезервувати місце для наступної ідентифікації точок графіку. З огляду на графік варто відмітити наступне:

  1. Медіана кількості проданих упаковок іноземних виробників < 0, тобто більша частина цих фірм зазнала скорочення обсягів продажів.
  2. Різниця між медіанами двох груп дуже мала порівняно з варіабельністю цих груп, тобто різниця у зростанні іноземних і вітчизняних фармацевтичних компаній несуттєва.
  3. Інтерквартильний розмах для іноземних компаній менший, ніж для вітчизняних. Це може бути індикатором більшої стабільності у роботі на ринку України (можливо, маркетинговій політиці) іноземних компаній загалом відносно вітчизняних.
  4. Також у верхній частині графіку зображено два викиди, що належать до категорії закордонних виробників. Тобто дві іноземні фірми показали значний приріст, який різко відрізняється від результатів продажів інших компаній цієї групи. Саме ці фірми зумовили додатнє середнє арифметичне при від’ємній медіані групи. Загалом у присутності викидів медіана дає краще положення центру. На відміну від середнього арифметичного, медіана є робастною (значення цього слова див. вище) характеристикою центру вибірки.

Ідентифікуємо на графіку “ящик з вусами” виявлені попередньо викиди, а також максимальні та мінімальні значення вибірки. Для цього, не закриваючи графік, задаємо команду identify і передаємо формулу "PPG залежить від ORIGIN", як мітки будемо використовувати вміст змінної COMPANY (назви компаній):

identify(data$PPG ~ data$ORIGIN, labels = data$COMPANY)

Виконання цієї команди призупиняє подальший ввід команд у консоль середовища R, і тепер треба клікати мишкою по точках на графіку, які ми хочемо ідентифікувати. Клікаємо по викидах, по нижніх горизонтальних лініях та по верхній горизонтальній лінії, яка стосується вітчизняних виробників. Після кожного кліку поруч з’являється мітка із назвою відповідної компанії (або застереження про відсутність точок біля місця кліку). Коли ідентифікація завершена, необхідно відкрити меню STOP у верхньому лівому кутку і вибрати "stop locator" (реалізація цього процесу може трошки відрізнятись у різних версіях та дистрибутивах R).

Таким чином ми дізналися, що дві іноземні компанії із значним приростом кількості проданої продукції – це Reckitt Benckiser та Nycomed. Це може бути пов’язано як з виведенням на український фармацевтичний ринок нових лікарських препаратів цих виробників, так і з агресивною та ефективною маркетинговою політикою. Найбільший спад серед топ-20 іноземних компаній спостерігається у Omega Pharma. Серед вітчизняних компаній лідером приросту є Віола Фарм, а аутсайдером серед топ-20 – Борщагівський ХФЗ.

##ПРИКЛАД 3.

Проаналізуємо результати дослідження протипухлинної активності сполуки під кодом LES-3755 на 60-и лініях ракових клітин, що представляють різні анатомо-морфологічні класи неоплазій. Результати подано у вигляді відсотків росту клітин пухлини відносно контрольного досліду (чим менший відсоток росту, тим сильніша протиракова дія).

adress <- "http://stat.org.ua/data/activity_les3755.csv"  # запишемо інтернет-адресу даних. 

Ці дані представлені у формі текстової таблиці: значення різних клітинок таблиці відділені знаком ‘;’. Завантажимо дані з інтернету, за допомогою функції read.csv() перетворимо їх у датафрейм, запишемо його під назвою data.

data <- read.csv(adress, sep = ";")
fix(data)  # переглянемо датафрейм у окремому вікні з можливістю редагування.

Змінна line містить назви ліній ракових клітин на яких здійснювалось тестування, змінна percent показує відсоток росту клітин відносно контрольного досліду, змінна type містить назви анатомо-морфологічних класів пухлин. Для продовження роботи в середовищі R це віконце з таблицею слід закрити.

mean(data$percent)  #обчислимо середнє значення відсотку росту клітин пухлини
## [1] -25.09

Від’ємне значення середнього арифметичного свідчить, що загалом сполука чинить онкотоксичну дію, і під час досліду кількість ракових клітин зменшилась відносно її початкового рівня. Проаналізуємо її середню ефективність стосовно різних класів ракових захворювань. Для цього обчислимо середні значення: поділимо змінну percent на групи за допомогою змінної type, і для кожної групи виконаєм функцію mean.

tapply(data$percent, data$type, mean)
##              Breast Cancer                 CNS Cancer 
##                      7.662                    -13.387 
##               Colon Cancer                   Leukemia 
##                    -42.640                     17.685 
##                   Melanoma Non-Small Cell Lung Cancer 
##                    -49.002                    -38.632 
##             Ovarian Cancer            Prostate Cancer 
##                    -24.707                    -23.075 
##               Renal Cancer 
##                    -33.851

Найбільш від’ємні середні значення пов’язані з меланомою та раком кишківника, що окреслює подальші дослідження саме у цьому напрямку. Найменш чутливими до дії даної сполуки є лейкемічні клітини. Візуалізуємо результати дослідження даної сполуки у сукупності

boxplot(data$percent)

plot of chunk unnamed-chunk-13

Бачимо досить симетричний розподіл результатів із двома викидами у верхній частині графіка. Ці викиди означають повну стійкість деяких двох ліній у даному експерименті. Поглянемо на картину розподілу результатів за класами раку:

boxplot(data$percent ~ data$type)

plot of chunk unnamed-chunk-14

Бачимо невеличку проблемку: так як мітки осей графіка по замовчуванню виводяться у горизонтальному положенні, то усі назви класів не поміщаються на графік. Тому потрібно ввести додаткові параметри:

boxplot(data$percent ~ data$type, las = 2, par(mar = c(12, 3, 1, 1)))

plot of chunk unnamed-chunk-15

las=2 потрібен щоб мітки по осі абсцис виводились вертикально, функція par() дозволяє додатково вводити параметрами графічного вікна, параметр mar є вектором відстаней від границь вікна до самого графіку (у порядку знизу, зліва, зверху, справа). Можна відзначити дуже широкий розмах результатів для ліній раку молочної залози, причому порівняння цього графіку із графіком результатів у сукупності вказує, що дві попередньо виявлені стійкі лінії належать саме до цього класу. Звідси можна зробити висновок про непридатність досліджуваної сполуки для лікування раку молочної залози.