Sem vložte zadání Vaší práce.
České vysoké učení technické v Praze Fakulta informačních technologií Katedra teoretické informatiky
Diplomová práce
Informační podpora klinických studií Bc. Václav Čadek
Vedoucí práce: Ing. Pavel Kordík, Ph.D.
26. června 2013
Poděkování Na tomto místě bych chtěl poděkovat svému vedoucím Ing. Pavlu Kordíkovi, Ph.D. za vstřícný přístup při vedení mé práce, za možnost zpracovávat takto zajímavé téma a za jeho užitečné připomínky. Dále MUDr. Petru Waldaufovi za jeho nadšení pro věc, které bylo tak nakažlivé, že pro mě bylo neustálým zdrojem motivace. Také chci poděkovat své rodině, přítelkyni a přátelům, za podporu a trpělivost, kterou se mnou měli a mají.
Prohlášení Prohlašuji, že jsem předloženou práci vypracoval samostatně a že jsem uvedl veškeré použité informační zdroje v souladu s Metodickým pokynem o etické přípravě vysokoškolských závěrečných prací. Beru na vědomí, že se na moji práci vztahují práva a povinnosti vyplývající ze zákona č. 121/2000 Sb., autorského zákona, ve znění pozdějších předpisů, zejména skutečnost, že České vysoké učení technické v Praze má právo na uzavření licenční smlouvy o užití této práce jako školního díla podle § 60 odst. 1 autorského zákona.
V Praze dne 26. června 2013
.....................
České vysoké učení technické v Praze Fakulta informačních technologií c 2013 Václav Čadek. Všechna práva vyhrazena.
Tato práce vznikla jako školní dílo na Českém vysokém učení technickém v Praze, Fakultě informačních technologií. Práce je chráněna právními předpisy a mezinárodními úmluvami o právu autorském a právech souvisejících s právem autorským. K jejímu užití, s výjimkou bezúplatných zákonných licencí, je nezbytný souhlas autora.
Odkaz na tuto práci Čadek, Václav. Informační podpora klinických studií. Diplomová práce. Praha: České vysoké učení technické v Praze, Fakulta informačních technologií, 2013.
Abstract The purpose of this thesis is to design and describe the tool for automation of clinical trials evaluation process. The tool itself is built as an extension on top of the RapidMiner platform and it’s goal is to provide ability to perform an ad hoc significance tests, descriptive and exploratory analysis from within the RapidMiner as well as provide reporting functionality out of the box. The tool is then deployed to particular clinical trial environment which tries to examine the promising new treatment of patients with high blood pressure using the intervention called renal denervation. Keywords Renal denervation, hypertension, RapidMiner, data mining, hypotheses testing, clinical trial, statistical significance, descriptive statistic, exploratory analysis
Abstrakt Cílem této práce je navrhnout a popsat nástroj pro automatizaci vyhodnocování klinických studií. Nástroj samotný byl vytvořen jakožto rozšíření ix
programu RapidMiner. Jeho cílem je poskytnout možnost provádět ad hoc statistické testy, deskriptivní a explorační analýzu a navíc poskytnout možnost snadného reportování přímo z programu RapidMiner. Pomocí tohoto rozšíření je následně implementován proces, který je nasazen do prostředí konkrétní klinické studie, která se snaží zkoumat novou slibnou metodu léčby pacientů s vysokým krevním tlakem pomocí zákroku zvaného renální denervace. Klíčová slova Renální denervace, hypertenze, RapidMiner, dolování dat, Testování hypotéz, klinická studie, statistická významnost, deskriptivní statistika, explorační analýza
x
Obsah Odkaz na tuto práci . . . . . . . . . . . . . . . . . . . . . . viii Úvod Struktura práce . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 2
1 Popis problému, specifikace cíle 1.1 Klinická studie Prague 15 . . . . . . . . . . 1.1.1 Hypertenze a refrakterní hypertenze . 1.1.2 Renální denervace u hypertoniků . . 1.2 Specifikace cíle . . . . . . . . . . . . . . . .
. . . .
3 3 4 4 5
. . . . . . . . . . . . . . . .
7 7 7 7 8 8 8 8 8 9 9 9 9 9 10 10 10
2 Teorie 2.1 Deskriptivní analýza dat . . . . . . . . . . . 2.1.1 Charakteristiky polohy . . . . . . . . 2.1.1.1 Aritmetický průměr . . . . 2.1.1.2 Medián . . . . . . . . . . . 2.1.1.3 Modus . . . . . . . . . . . . 2.1.2 Charakteristiky variability . . . . . . 2.1.2.1 Variační rozpětí . . . . . . . 2.1.2.2 Rozptyl . . . . . . . . . . . 2.1.2.3 Kvartily, Decily a Percentily 2.1.2.4 Směrodatná odchylka . . . 2.1.2.5 Variační koeficient . . . . . 2.1.3 Charakteristiky tvaru . . . . . . . . . 2.1.3.1 Zkosení . . . . . . . . . . . 2.1.3.2 Špičatost . . . . . . . . . . 2.1.4 Grafické znázornění dat . . . . . . . 2.1.4.1 Histogram . . . . . . . . . . xi
. . . .
. . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . .
. . . .
. . . . . . . . . . . . . . . .
2.2
2.3
2.1.4.2 Krabicový graf . . . . . . . Ověřování statistických hypotéz . . . . . . . 2.2.1 Nulová a alternativní hypotéza . . . 2.2.2 Rizika chyb - chyby I. a II. druhu . . 2.2.3 Obecný postup při ověřování hypotéz Vybrané statistické testy . . . . . . . . . . . 2.3.1 T-Test . . . . . . . . . . . . . . . . . 2.3.1.1 1-výběrový T-test . . . . . 2.3.1.2 2-výběrový T-test (nezávislé 2.3.1.3 2-výběrový T-test (párový) 2.3.2 Analýza rozptylu (ANOVA) . . . . . 2.3.3 χ2 test dobré shody . . . . . . . . . . 2.3.4 Mann Whitney U Test . . . . . . . . 2.3.5 Wilcoxonův znaménkový test . . . .
3 Analýza a návrh řešení 3.1 Srovnání dostupných nástrojů . . . . . . . 3.1.1 IBM SPSS Statistics . . . . . . . . 3.1.2 R . . . . . . . . . . . . . . . . . . . 3.1.3 RapidMiner . . . . . . . . . . . . . 3.2 Srovnání knihoven pro statistické výpočty 3.2.1 Apache Commons Math . . . . . . 3.2.2 JSC . . . . . . . . . . . . . . . . . 3.3 Srovnání knihoven pro vizualizaci . . . . . 3.3.1 JFreeChart . . . . . . . . . . . . . 3.3.2 GRAL . . . . . . . . . . . . . . . . 3.4 Srovnání knihoven pro reporting . . . . . . 3.4.1 JasperReports . . . . . . . . . . . . 3.4.2 iText . . . . . . . . . . . . . . . . . 4 Použité technologie 4.1 RapidMiner . . . . . . . . . . . 4.2 Jazyk R . . . . . . . . . . . . . 4.3 Java + IntelliJ IDEA . . . . . . 4.4 Groovy . . . . . . . . . . . . . . 4.5 Ant . . . . . . . . . . . . . . . . 4.6 NSIS . . . . . . . . . . . . . . . 4.7 Apache Commons Math . . . . 4.8 JFreeChart . . . . . . . . . . . 4.9 JasperReports a DynamicJasper xii
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vzorky) . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . . . . . . .
10 12 12 12 13 13 14 14 15 17 18 20 21 23
. . . . . . . . . . . . .
25 25 25 25 25 26 26 26 26 26 26 27 27 27
. . . . . . . . .
29 29 29 29 30 30 30 30 31 31
5 Realizace 5.1 Integrace do systému RapidMiner . . . . . . . . . . . . 5.1.1 Operátory pro ověřování statistických hypotéz . 5.1.1.1 Operátor pro jednovýběrový T-Test . . 5.1.1.2 Operátor pro dvouvýběrový T-Test . . 5.1.1.3 One-way ANOVA operátor . . . . . . 5.1.1.4 Chi Square Test operátor . . . . . . . 5.1.1.5 Mann Whitney U-Test operátor . . . . 5.1.1.6 Wilcoxon Signed Rank Test operátor . 5.1.1.7 Zobrazení výsledků statistických testů 5.1.2 Operátory pro explorační analýzu dat . . . . . . 5.1.2.1 Descriptive statistics operátor . . . . . 5.1.2.2 Box plot operátor . . . . . . . . . . . . 5.1.3 Operátory pro reporting . . . . . . . . . . . . . 5.1.3.1 Create Report operátor . . . . . . . . 5.1.3.2 Create Section operátor . . . . . . . . 5.1.3.3 Styled Text operátor . . . . . . . . . . 5.2 Ukázka přidání nového testu . . . . . . . . . . . . . . . 5.2.1 Přidání operátoru . . . . . . . . . . . . . . . . . 5.2.2 Přidání testu . . . . . . . . . . . . . . . . . . . 5.2.3 Vizualizace . . . . . . . . . . . . . . . . . . . . 5.3 Popis nasazení v prostředí klinické studie Prague 15 . . 5.3.1 Popis dat klinické studie Prague 15 . . . . . . . 5.3.2 Problémy v datech . . . . . . . . . . . . . . . . 5.3.2.1 Chybějící data . . . . . . . . . . . . . 5.3.2.2 Nekonzistentní jmenná konvence . . . 5.3.2.3 Špatně zadané databázové sloupce . . 5.3.2.4 Špatně zadané hodnoty . . . . . . . . 5.3.3 Popis dat vybraných k analýze . . . . . . . . . . 5.3.4 Implementace RapidMiner procesu . . . . . . . 5.3.4.1 Popis hlavního procesu . . . . . . . . . 5.3.4.2 Předzpracování . . . . . . . . . . . . . 5.3.4.3 Popis příznaku . . . . . . . . . . . . . 5.3.4.4 Reporting . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33 33 33 34 34 35 35 35 35 36 36 37 37 38 39 40 40 40 40 42 44 44 45 46 46 46 46 46 47 48 48 48 49 50
6 Testování 51 6.1 Unit testy (Groovy) . . . . . . . . . . . . . . . . . . . . . . . 51 6.2 Testovací scénáře s použitím R . . . . . . . . . . . . . . . . . 52 Závěr
53 xiii
Literatura
55
A Obsah přiloženého CD
57
B Popis instalace
59
C Ukázka konečného výstupu
61
D Kompletní seznam atributů určených k analýze
63
E Slovník lékařských pojmů
67
F Seznam použitých zkratek
69
xiv
Seznam obrázků 1.1
Zavedení katetru do renální arterie . . . . . . . . . . . . . . . .
5
2.1 2.2 2.3
Ukázka histogramu . . . . . . . . . . . . . . . . . . . . . . . . . Ukázka krabicového grafu . . . . . . . . . . . . . . . . . . . . . I. a II. typ chyb, síla testu . . . . . . . . . . . . . . . . . . . . .
11 11 13
5.1 5.2 5.3 5.4 5.5
Operátory pro ověřování statistických hypotéz . . . . . . . . Operátory pro deskriptivní statistiku a explorační analýzu . Ukázka výstupu krabicového grafu . . . . . . . . . . . . . . Operátory pro reporting . . . . . . . . . . . . . . . . . . . . Výsledek nově přidaného Wilcoxonova znaménkového testu RapidMineru . . . . . . . . . . . . . . . . . . . . . . . . . . Prague 15 - RapidMiner proces . . . . . . . . . . . . . . . . Sub-proces, popisující jeden příznak z 16 . . . . . . . . . . .
34 37 38 39
. . . . . . . . v . . . . . .
45 49 50
C.1 Ukázka konečného výstupu - str. 1 z 16 . . . . . . . . . . . . . .
62
5.6 5.7
xv
Úvod Čas v lékařství jakoby ubíhal rychleji - to je také jeden z důvodů, proč snaha aplikovat metody strojového učení, automatizace nebo data miningu má v této doméně své opodstatnění - čím méně času stráví lékaři snahou o získání, transformace nebo vyhodnocení dat, tím více času jim zbude na záchranu životů a péči o pacienty. Klinická studie Prague 15, na které v rámci této práce spolupracuji se zabývá léčbou pacientů s vysokým krevním tlakem - ve většině případů se navíc jedná o tzv. refrakterní hypertenzi, což je těžká forma hypertenze při které pacienti nepociťují výrazné zlepšení, navzdory tomu, že je jim podáváno velké množství léků (antihypertenziv). Tato klinická studie je výzkumným projektem, na kterém spolupracuje 3. lékařská fakulta Univerzity Karlovy (3. LF UK) Fakultní nemocnice Královské Vinohrady (FNKV) a dvě kardiocentra v Olomouci a Třinci. Cílem této studie je prokázat, zda zákrok zvaný renální denervace, může mít za následek snížení krevního tlaku u pacientů trpících refrakterní hypertenzí a v konečném důsledku vést i ke zvýšení kvality jejich života. Jelikož je množství kroků v rámci této studie vykonávano ručně, otevírá se zde velký prostor pro automatizaci nebo aplikaci některých z metod, kterými se na Fakultě informačních technologií, ČVUT v rámci oboru znalostního inženýrství zabýváme. Nutno říct, že oblast klinických studií upřednostňuje zejména striktní statistický přístup a metody vycházející ze strojového učení, umělé inteligence nebo data miningu jsou zde spíše výjimkou, byť by mohli přinést nový vhled do daného lékařského problému. Z tohoto pohledu je možný přínos této práce nejen v usnadnění práce lékařů, ale také možností, jak některé z těchto metod zviditelnit a otevřít tak nové možnosti spolupráce napříč vědními disciplínami. 1
Úvod
Struktura práce Tato práce si klade za cíl popsat návrh, tvorbu a nasazení nástroje pro automatizaci klinických studií. Kapitola 1 čtenáře seznamuje s kontextem problému, zároveň popisuje, čím se klinická studie Prague 15 zabývá. Kapitola 2 popisuje nezbytnou teorii, nutnou pro pochopení teoretického pozadí vyhodnocování klinických studií. Tématem kapitoly 3 je zhodnocení kladů a záporů jednotlivých nástrojů a knihoven. Kapitola 4 stručně popisuje zvolené technologie. Velmi podstatnou kapitolou je 4, která popisuje realizaci a zejména nasazení nástroje do prostředí reálné klinické studie. Poslední kapitola 5 shrnuje testování implementovaného nástroje.
2
Kapitola
Popis problému, specifikace cíle 1.1
Klinická studie Prague 15
Jak již bylo zmíněno v úvodu, klinická studie Prague 15 se zabývá léčbou pacientů s tzv. refrakterní hypertenzí pomocí zákroku zvaného renální denervace (RDN). Projekt je naplánován na 5 let a počítá se zařazením nejméně 150 nemocných. Pacienti budou randomizováni do dvou skupin: RDN + farmakoterapie Renální denervace + antihypertenzní medikamentózní léčba farmakoterapie tito nemocní nepodstoupí v prvním roce RDN, později jen dle klinické indikace Jelikož se jedná o novou metodu, není možné exaktně statisticky předem vypočítat předpokládané rozdíly mezi skupinami a potřebnou velikost souboru. Proto je možné, že studie budou (při nadějných výsledcích) extendovány na vyšší počty nemocných [10]. Na projektu se podílejí následující pracoviště: 1. Kardiocentrum 3. lékařské fakulty Univerzity Karlovy v Praze a Fakultní nemocnice Královské Vinohrady (FNKV) 2. III. Interní klinika (Centrum pro hypertenzi) 1. Lékařské fakulty Univerzity Karlovy v Praze a Všeobecné fakultní nemocnice 3. Kardiocentrum Lékařské fakulty a Fakultní nemocnice Olomouc 4. Kardiocentrum Podlesí Třinec 3
1
1. Popis problému, specifikace cíle
1.1.1
Hypertenze a refrakterní hypertenze
Hypertenzní choroba je nejrozšířenějším kardiovaskulárním onemocněním v populaci. Její následky jsou často fatální (infarkt myokardu, náhlá smrt, mozková mrtvice) nebo invalidizující (mozková mrtvice, srdeční selhání) [10]. Největšími dvěma problémy v praxi jsou: 1. nedostatečná diagnostika či léčba 2. refrakterní hypertenze Refrakterní/rezistentní hypertenze je definována jako trvající zvýšení krevního tlaku na hodnoty 140/90 mmHg a více přes léčbu zahrnující nejméně trojkombinaci antihypertenziv včetně diuretika v maximálních dávkách. Úspěšnost léčby rezistentní hypertenze medikamentózně činí kolem 10% [10].
1.1.2
Renální denervace u hypertoniků
K renálním denervacím budou používány radiofrekvenční katetry1 , které budou zavedeny přes tříslo do renální arterie2 , kde je následně provedena radiofrekvenční ablace3 nervových zakončení. Riziko komplikací se neliší od rizika jiných katetrizací - lokální komplikace v místě vpichu, disekce4 zobrazované tepny, embolie, trombóza. Metoda je bezpečnější než srdeční katetrizace v tom smyslu, že se katetrem neprochází ani přes oblouk aorty, nehrozí tedy cévní mozková příhoda z embolizace do centrálního nervového systému, ani okolo koronárních tepen (nehrozí tedy infarkt myokardu jako komplikace výkonu). Zákrok trvá necelou jednu hodinu, pacient při něm leží na stole na katetrizačním sále, je lehce analgosedován a je mu podáván bolusově5 heparin. Zavaděče se z třísla vytahují bezprostředně po odeznění účinku heparinu, druhý den po zákroku je propuštěn domů [10]. 1
zařízení, které lékař zavádí do nějakého dutého tělního orgánu ledvinná tepna 3 odstranění, eliminace tkáně 4 rozdělení 5 dávkově 2
4
1.2. Specifikace cíle
Obrázek 1.1: Zavedení katetru do renální arterie
1.2
Specifikace cíle
Jelikož je množství kroků v rámci vyhodnocení klinických studií vykonáváno ručně, cílem bude co možná největší počet těchto kroků automatizovat a nabídnout nástroj, který bude umožňovat snadnou tvorbu a úpravu tohoto automatického procesu. Specifické požadavky klinické studie Prague 15 zahrnují: • možnost tvorby tzv. krabicového grafu, který by umožňoval srovnávat obě skupiny pacientů v čase • možnost tvorby deskriptivních statistik pro obě skupiny pacientů • nabídnout možnost snadného reportování
5
Kapitola
2
Teorie 2.1
Deskriptivní analýza dat
Deskriptivní analýza dat je souborné označení pro číselné charakteristiky, grafy nebo tabulky, které umožňují lepší porozumění a získání představy o statistickém souboru dat. Jak již z názvu vyplývá - cílem deskriptivní statistiky je popis dat, nikoliv jejich transformace. Jelikož je ale tento popis určitým zobecněním dat, o část informace zároveň přicházíme.
2.1.1
Charakteristiky polohy
Při popisu statistického souboru potřebujeme často určit nějakou hodnotu, která nejlépe vystihuje soubor jako celek, z tohoto důvodu bylo zavedeno množství charakteristik, které se snaží popsat jakousi střední hodnotu, okolo které se ostatní hodnoty soustřeďují - tyto charakteristiky nazýváme míry polohy. 2.1.1.1
Aritmetický průměr
Sečteme-li všechny vzorky v souboru dat a následně vydělíme jejich počtem dostaneme jednu z nejzákladnějších hodnot sloužících k vyjádření střední hodnoty souboru - aritmetický průměr. Pn 1
µ=
n
xi
(2.1)
Existují různé další varianty průměrů - např. geometrický, vážený, klouzavý, apod. 7
2. Teorie 2.1.1.2
Medián
Definice 1. Seřadíme-li data podle velikosti a následně vybereme prostřední prvek, pak tento prvek označujeme jako medián. Narozdíl od aritmetického průměru je medián mnohem robustnější z hlediska odlehlých hodnot - jestliže soubor obsahuje několik extrémních hodnot, medián dává stále velmi vypovídající hodnotu o celém souboru z hlediska střední hodnoty. Další výhodou mediánu je jeho snadný výpočet. 2.1.1.3
Modus
Definice 2. Prvek s největší četností v souboru dat se nazývá modus. Modus je vhodné použít pokud data obsahují nominální hodnoty - vezměme si například známky ve škole - v takovém případě je informace o nejčastější hodnotě poměrně vypovídající z hlediska střední hodnoty celého souboru. Naopak pokud uvažujeme data s reálnou hodnotou 2.999 a 3 jsou z hlediska modu od sebe stejně vzdáleny jako 3 a 100.
2.1.2
Charakteristiky variability
Kromě charakteristik polohy potřebujeme často při popisu statistického souboru také určité číselné vyjádření toho, jakým způsobem a v jaké vzdálenosti jsou data rozmístěna okolo střední hodnoty - k tomuto účelu slouží charakteristiky variability. 2.1.2.1
Variační rozpětí
Variační rozpětí6 je poměrně intuitivní pojem - je dáno rozdílem největší a nejmenší hodnoty v souboru dat. Nicméně takto definované rozpětí může být zavádějící díky extrémním hodnotám. Daleko lepší představu o datech nám může dát tzv. mezikvartilové rozpětí, které je definováno jako rozdíl Q3 − Q1 . 2.1.2.2
Rozptyl
Rozptyl7 vyjadřuje vzdálenost rozložení prvků statistického souboru okolo jeho průměru. Je definován jako: 2
σ = 6 7
8
angl. range angl. variance
(xi − µ)2 n
P
(2.2)
2.1. Deskriptivní analýza dat 2.1.2.3
Kvartily, Decily a Percentily
Podobně jako medián dělí statistický soubor na dvě stejně velké poloviny, kvartily, dělí statistický soubor na čtvrtiny, decily na desetiny a percentily na setiny. 2.1.2.4
Směrodatná odchylka
Jelikož rozptyl vyjadřuje variabilitu v jednotkách na druhou (což nemusí být vždy srozumitelné), byla zavedena směrodatná odchylka8 , která je odmocninou z rozptylu: √ σ = σ2 = 2.1.2.5
sP
(xi − µ)2 n
(2.3)
Variační koeficient
Variační koeficient9 vyjadřuje míru relativního rozptýlení dat: v=
2.1.3
σ · 100% µ
(2.4)
Charakteristiky tvaru
Tyto charakteristiky nám mohou dát představu o tvaru rozdělení - mezi nejpoužívanější charakteristiky patří zešikmení10 a špičatost11 . 2.1.3.1
Zkosení
Zkosení neboli koeficient asymetrie nám dává představu o tom, na jakou stranu a do jaké míry je rozdělení zešikmené. Obecně o tom, zda je nesymetrické. v3 A= 3 (2.5) σ , kde v3 je třetí centrální moment: v3 =
( P (x R ∞i i
− µ)3 · p(xi ) pro diskrétní náhodnou veličinu 3 −∞ (xi − µ) · f (xi )dx pro spojitou náhodnou veličinu
8
angl. standard deviation coefficient of variation 10 angl. skewness 11 angl. kurtosis 9
9
2. Teorie Rozdělení s hodnotou A = 0 nebo blízkou bývají symetrická, rozdělení s A < 0 bývají zešikmena vlevo a naopak, rozdělení s A > 0 zešikmena vpravo. 2.1.3.2
Špičatost
Špičatost nebo koeficient špičatosti je charakteristikou, která porovnává tvar rozdělení z hlediska špičatosti a porovnává ho s normálním rozdělením. Je definována jako: v4 e= 4 −3 (2.6) σ , kde v3 je čtvrtý centrální moment: v4 =
( P (x R ∞i i
− µ)4 · p(xi ) pro diskrétní náhodnou veličinu 4 −∞ (xi − µ) · f (xi )dx pro spojitou náhodnou veličinu
Rozdělení s hodnotou e = 0 nebo blízké tvarem odpovídá normálnímu rozdělení, rozdělení s e < 0 bývají plochá a naopak rozdělení s e > 0 špičatá.
2.1.4
Grafické znázornění dat
Velmi dobrou představu o datech nám může dát jejich grafická reprezentace. Vyčerpávající přehled grafické reprezentace dat by samozřejmě vydal na samostatnou publikaci, proto zmíníme pouze nejpoužívanější prostředky, mezi které patří histogram a krabicový graf12 . 2.1.4.1
Histogram
Na obrázku 2.1 můžeme vidět ukázku histogramu - výška sloupců odpovídá četnostem hodnot náhodné veličiny, v případě spojité náhodné veličiny jeden sloupec odpovídá intervalu a jeho výška četnosti výskytu hodnoty náhodné veličiny v tomto intervalu. Aby bylo možné porovnávat různé histogramy z hlediska jejich podobnosti nebo tvaru, často se využívá histogram relativních četností namísto absolutních. 2.1.4.2
Krabicový graf
Krabicový graf 2.2 vyjadřuje hned několik informací najednou - jeho nejvzdálenější konce zobrazují minimální a maximální hodnoty, které ještě nejsou hodnotami odlehlými (ty by byly v krabicovém grafu zobrazeny vně 12
10
angl. box-and-whisker plot nebo box plot
2.1. Deskriptivní analýza dat
Obrázek 2.1: Ukázka histogramu
tohoto rozpětí). Okraje krabičky představují kvartily Q1 a Q3 a jejich vzdálenost (šířka krabičky) mezikvartilové rozpětí. Horizontální přímka uvnitř této krabičky zobrazuje medián.
Obrázek 2.2: Ukázka krabicového grafu
Tento graf pro nás bude obzvláště výhodný, jelikož s jeho pomocí bude možné sledovat vývoj deskriptivní statistiky obou randomizovaných skupin v čase. 11
2. Teorie
2.2
Ověřování statistických hypotéz
Hypotéza je v obecném případě nějaké tvrzení o datech. Úkolem statistika při testování statistických hypotéz, je danou hypotézu buď potvrdit nebo vyvrátit.
2.2.1
Nulová a alternativní hypotéza
Při ověřování statistických hypotéz pracujeme s tzv. nulovou hypotézou, kterou obvykle značíme H0 a s tzv. alternativní hypotézou H1 , která je negací nulové hypotézy. V praxi se obvykle snažíme ukázat, že H0 neplatí a tudíž můžeme přijmout H1 - v případě klinických studií H0 většinou popisuje situaci, kdy zkoumaný lék resp. zákrok má nulový efekt. Samozřejmě, že cílem klinických studií je tuto nulovou hypotézu zamítnout a dokázat tak, že daný lék resp. zákrok má (nejlépe pozitivní) efekt na zdraví pacienta. Testy většinou bývají spojené s tzv. hladinou významnosti, kterou značíme α, a která vyjadřuje pravděpodobnost tzv. chyby I. typu. V oblastech jako je například lékařství, kde je omezená opakovatelnost, se obvykle používá hladina významnosti α = 0.05. Naproti tomu v technických oborech, kde lze často experimenty mnohokrát opakovat za dobře definovaných podmínek, se používá hladina významnosti α = 0.01 a někdy i menší, pokud je prověření zvlášť důležité [8].
2.2.2
Rizika chyb - chyby I. a II. druhu
Chyby I. a II. typu jsou ustáleným pojmem, který se používá ve statistice pro popis dvou typů chyb [8] • chyba I. typu označuje chybu, kdy je normální skupina klasifikována jako anomální. • chyba II. typu anomální skupina je klasifikována jako normální.
H0 zamítnuta H0 nezamítnuta
H0 je pravdivá chyba I.typu -
H0 je nepravdivá chyba II.typu
Pokud použijeme analogii z prostředí trestního práva, potom o chybě I.typu mluvíme v případě, že zamítneme nulovou hypotézu, která platí (odsoudíme nevinného). Naopak o chybě II.typu mluvíme v případě, že nezamítneme nulovou hypotézu, která neplatí (osvobodíme viníka). 12
2.3. Vybrané statistické testy
Obrázek 2.3: I. a II. typ chyb, síla testu
Jelikož jsou oba druhy chyb spolu úzce spjaté, volbou kritické hodnoty pouze snižujeme riziko jedné chyby na úkor druhé. Jediný způsob, jak snížit pravděpodobnost obou typů chyb, je zvýšit rozsah výběru [8].
2.2.3
Obecný postup při ověřování hypotéz
Obecný postup při ověřování většiny statistických hypotéz lze shrnout v několika bodech: 1. Je nutné definovat nulovou a alternativní hypotézu. 2. Určit hladinu významnosti. 3. Vypočítat počet stupňů volnosti testu (pokud to test vyžaduje). 4. Stanovit rozhodovací pravidlo. 5. Vypočítat testovou statistiku. 6. Stanovit závěr.
2.3
Vybrané statistické testy
Testy můžeme dělit podle různých kritérií. Jedním ze základních dělení je ale dělení na parametrické a neparametrické testy. Neparametrické testy jsou 13
2. Teorie takové, které k výpočtu nepotřebují odhady populačních parametrů (např. průměr nebo rozptyl). Naopak typickým zástupcem parametrických testů jsou např. T-testy, u nichž se tyto parametry vyskytují jak při samotném výpočtu, tak při formulaci hypotéz. Neparametrické testy také typicky nekladou žádné předpoklady týkající se povahy nebo typu spojitého rozdělení populace ze které vzorek pochází.[16] Dále je možné provádět tzv. jednostranné resp. oboustranné 13 testy. Tato volba závisí na formulaci naší hypotézy. V nejobecnějším případě použijeme oboustranný test, jelikož nám jde o libovolný (negativní i pozitivní) efekt. Pokud ale naše hypotéza vyžaduje posuzování pouze ve směru jednoho extrému použijeme jednostranný test. Tato kapitola obsahuje ilustrativní příklady statistických testů implementovaných v rámci diplomové práce. Příklady jsou převzaty z [14] a budou použity v dalších kapitolách jako reference toho, že všechny implementované testy fungují na triviálních příkladech tak, jak očekáváme.
2.3.1
T-Test
Jakýkoliv statistický test, který používá t-rozdělení můžeme označit jako T-test. Jeden z nejznámějších T-testů je nazýván Studentův T-test14 . Studentův T-test má několik variant a je používán pro porování hypotetického průměru s průměrem skutečným nebo pro porovnání průměrů dvou skupin [7]. 2.3.1.1
1-výběrový T-test
Příklad 1. Průměrné IQ v rámci populace je 100. Tým vědců se snaží zjistit, zda má nový lék pozitivní nebo negativní vliv na inteligenci (obecně, zda má vůbec nějaký efekt). V rámci klinické studie byl lék aplikován 30 účastníkům - průměrné IQ v rámci tohoto vzorku je 140 a směrodatná odchylka je 20. Na hladině významnosti 5% ověřte, zda tento nový lék ovlivňuje inteligenci? Řešení 1: Nejprve si definujeme nulovu a alternativní hypotézu: H0 ; µ0 = 100 13
angl. one-tailed resp. two-tailed Pseudonym, který používal William Sealy Gosset, aby nevyšlo najevo, že je zaměstnán v pivovaru Guinness, kde se snažili vařit lepší pivo s pomocí statistiky a samozřejmě tuto obchodní výhodu skrýt před konkurencí. 14
14
2.3. Vybrané statistické testy H1 ; µ 6= 100 Stanovíme hladinu významnosti α = 0.05 Určíme počet stupňů volnosti df = n − 1 = 30 − 1 = 29 Protože nás zajímá, zda má lék vůbec nějaký efekt - tj. efekt může být pozitivní i negativní, jedná se o oboustranný test. S využitím výše zmíněných informací nalezneme v t-tabulce kritické hodnoty pro oboustraný test pro danou hladinu významnosti a počet stupňů volnosti. Stanovíme rozhodovací pravidlo pro zamítnutí nulové hypotézy: t < −2.0452 nebo t > 2.0452 Vypočteme testovou statistiku jako: t= Po dosazení: t=
x¯ − µ √s n
140 − 100 √20 30
(2.7)
= 10.96
Jelikož t = 10.96 > 2.0452, můžeme na základě rozhodovacího pravidla zamítnout nulovou a přijmout alternativní hypotézu, která říká, že nový lék výrazně zvyšuje inteligenci. 2.3.1.2
2-výběrový T-test (nezávislé vzorky)
Příklad 2. Učitel statistiky chce porovnat své dvě třídy a zjistit, zda existují rozdíly mezi výsledky testů v jedné a druhé třídě. Třída A má 25 studentů s průměrným hodnocením 70 a směrodatnou odchylkou 15. Třída B má 20 studentů s průměrným hodnocením 74 a směrodatnou odchylkou 25. Na hladině významnosti 5% ověřte, zda se výsledky obou tříd v daném testu významně liší. Řešení 2: Nejprve si definujeme nulovu a alternativní hypotézu: H0 ; µA = µB 15
2. Teorie H1 ; µA 6= µB Stanovíme hladinu významnosti α = 0.05 Určíme počet stupňů volnosti df = (n1 − 1) + (n2 − 1) = (25 − 1) + (20 − 1) = 43 Stejně jako u předchozího příkladu - zajímá nás, zda se výsledky obou tříd jakkoliv liší - znovu se tedy jedná o oboustranný test. S využitím výše zmíněných informací nalezneme v t-tabulce kritické hodnoty pro oboustraný test pro danou hladinu významnosti a počet stupňů volnosti. Stanovíme rozhodovací pravidlo pro zamítnutí nulové hypotézy: t < −2.0167 nebo t > 2.0167 Můžeme si všimnout, že hodnota testovacího kritéria je o něco menší než v předchozím příkladu, přestože kritické hodnoty hledáme v téže tabulce. V tomto případě je to dáno více stupni volnosti, což je parametr, který určuje tvar spojitého rozdělení pravděpodobnosti, ze kterého kritické hodnoty pocházejí. Nejdříve si musíme vypočítat dílčí mezivýsledky: df1 = n1 − 1 = 24 df2 = n2 − 1 = 19 SS1 = s21 · df1 = 152 · 24 = 5400 SS2 = s22 · df2 = 252 · 19 = 11875 Které použijeme pro výpočet tzv. sdruženého rozptylu: 5400 + 11875 SS1 + SS2 = 401.74 = s2p = df1 + df2 24 + 19 Nakonec vypočteme testovou statistiku: x¯1 − x¯2 t= r s2p s2 + np2 n1
(2.8)
Po dosazení: (¯ x1 − x¯2 ) (70 − 74) −4 t= r =q =√ = −0.67 2 2 401.74 401.74 sp sp 36.16 + 20 + 25 n1 n2 Jelikož t = −0.67 > −2.0167, nemůžeme na základě rozhodovacího pravidla zamítnout nulovou hypotézu a tedy nemůžeme prohlásit, že by se výsledky v obou třídách výrazněji lišily. 16
2.3. Vybrané statistické testy 2.3.1.3
2-výběrový T-test (párový)
Příklad 3. Vědci chtějí zjistit, zda nová pilulka na hubnutí skutečně funguje. V rámci klinické studie se dotazovali 10 pacientů, kteří ohodnotili svůj hlad na stupnici od 1 do 10 před a po aplikaci pilulky. Na hladině významnosti 5% ověřte, zda má pilulka vůbec nějaký efekt na hubnutí? Před Po
9 7
10 6
7 5
5 4
7 4
5 6
9 7
6 5
8 5
7 7
Řešení 3: Nejprve si definujeme nulovu a alternativní hypotézu: H0 ; µpřed = µpo H1 ; µpřed 6= µpo Stanovíme hladinu významnosti α = 0.05 Určíme počet stupňů volnosti df = n − 1 = 10 − 1 = 9 Stejně jako u předchozích dvou testů nás zajímá to, zda má piluka vůbec nějaký efekt - znovu tedy mluvíme o oboustraném testu. S využitím výše zmíněných informací nalezneme v t-tabulce kritické hodnoty pro oboustraný test pro danou hladinu významnosti a počet stupňů volnosti. Stanovíme rozhodovací pravidlo pro zamítnutí nulové hypotézy: t < −2.2622 nebo t > 2.2622 Nejdříve si vypočteme rozdíly jednotlivých párových pozorování: Před Po Rozdíl
9 7 2
10 6 4
7 5 2
5 4 1
7 4 3
5 6 -1
9 7 2
6 5 1
8 5 3
7 7 0
Vypočteme testovou statistiku jako: t=
¯D X sD √ n
(2.9) 17
2. Teorie ¯ D a sD spočteme následovně: Přičemž X ¯D = X
n X
xdif f =
1
2 + 4 + 2 + 1 + 3 + (−1) + 2 + 1 + 3 + 0 = 1.7 10
v uP u x2 t
(
P
s
x)2
− 2 n−1
Po dosazení: t=
= 1.7 1.49 √ 10
49 − 9
172 10
= 1.49
= 3.61
Jelikož t = 3.61 > 2.2622, můžeme na základě rozhodovacího pravidla zamítnout nulovou a přijmout alternativní hypotézu, která říká, že nový lék výrazně snižuje chuť k jídlu.
2.3.2
Analýza rozptylu (ANOVA)
Název testu je zkratka odvozená ze slovního spojení ANalysis Of VAriance, což je obecná technika, která slouží k porovnání rozdílů spojité veličiny mezi několika skupinami. Tato metoda má několik modifikací - v tomto textu se budeme zabývat variantou zvanou jednocestná analýza rozptylu15 . Jedná se o parametrickou variantu Kruskalova-Wallisova testu. Příklad 4. Lékaři chtějí otestovat nový lék proti úzkosti. Rozdělí účastíky studie do tří skupin podle množství aplikované látky (0mg, 50mg a 100mg). Účastníci jsou poté požádáni aby ohodnotili stupeň úzkosti na stupnici od 1 do 10. Na hladině významnosti 5% ověřte, zda existuje rozdíl mezi jednotlivým dávkováním? 0 mg 50 mg 100 mg
9 7 4
8 6 3
7 6 2
8 7 3
8 8 4
9 7 3
8 6 2
Řešení 4: Nejprve si definujeme nulovu a alternativní hypotézu: H0 ; µ0mg = µ50mg = µ100mg H1 ; P růměr některé ze skupin se liší. 15
18
angl. One-way ANOVA nebo Single Factor ANOVA
2.3. Vybrané statistické testy Stanovíme hladinu významnosti α = 0.05 Určíme počet stupňů volnosti s použitím N je počet vzorků celkem, a je počet skupin: dfB = a − 1 = 3 − 1 = 2 dfW = N − a = 21 − 3 = 18 dfT = N − 1 = 21 − 1 = 20 S využitím dfB a dfW nalezneme v F-tabulce kritickou hodnotu 3.5546. Můžeme se všimnout, že oproti ostatním doposud představeným testům je tento test jednostranný a tedy rozhodovací pravidlo pro zamítnutí H0 bude: F > 3.5546 Pro výpočet testové statistiky nejdříve potřebujeme zjistit sumy čtverců: T2 572 + 472 + 212 1252 SSB = − = − = 98.67 n N 7 21 ve výše uvedeném vztahu odpovídá ai vzorkům z jedné skupiny, T je součet všech prvků ze všech skupin, n je počet prvků v jedné skupině a nakonec N je celkový počet prvků. Dále si vypočteme: P P
(
SSW =
X
i
ai )
2
P P
Y −
(
i
ai )
n
= 853 −
572 + 472 + 212 = 10.29 7
kde X
Y 2 = 92 + 82 + 72 + · · · + 42 + 32 + 22 = 853
Nakonec spočteme poslední z mezivýsledků: SST =
X
Y2−
T2 1252 = 853 − = 108.95 N 21
Dostáváme následující tabulku:
B W T
SS 98.67 10.29 108.95
df 2 18 20
MS 49.34 0.57
F ?
19
2. Teorie Kde M SB =
SSB 98.67 = = 49.34 dfB 2
a SSW 10.29 = = 0.57 dfW 18 A konečně se dostáváme k výpočtu testové statistiky: M SW =
F =
M SB M SW
(2.10)
Po dosazení: 49.34 = 86.56 0.57 Jelikož F = 86.56 > 3.5546, můžeme zamítnout H0 a konstatovat, že mezi skupinami existují rozdíly ve vnímaném stupni úzkosti. F =
2.3.3
χ2 test dobré shody
Chí kvadrát test má stejně tak jako ANOVA několik variant - v tomto textu se budeme věnovat pouze variantě zvané Test dobré shody 16 . Další varianta je test nezávislosti 17 , kterému se v tomto textu nebudeme věnovat. Test dobré shody má své opodstatnění tam, kde zkoukáme, zda pozorované rozdělení pravděpodobnosti odpovídá rozdělení očekávanému. Příklad 5. Během sčítání lidu v USA v roce 2000 se došlo k závěru, že věkové skupiny v jednom malém městě vypadali takto: méně než 18 let 20%
18 - 35 let 30%
více než 35 let 50%
Zajímá nás, zda i dnes jsou tyto četnosti zhruba stejné? V rámci experimentu byl vybrán vzorek 500 lidí ze stejného města a spočtena tabulka četností.
očekávané skutečné 16 17
20
méně než 18 let 500 · 0.2 = 100 121
angl. Goodness of fit test Independence test
18 - 35 let 500 · 0.3 = 150 288
více než 35 let 500 · 0.5 = 250 91
2.3. Vybrané statistické testy Řešení 5: Nejprve si definujeme nulovu a alternativní hypotézu: H0 ; Četnosti pocházejí ze stejného (očekávaného rozdělení). H1 ; Četnosti nepocházejí ze stejného (očekávaného rozdělení). Stanovíme hladinu významnosti α = 0.05 Určíme počet stupňů volnosti df = k − 1 = 3 − 1 = 2 , kde k je počet tříd. Na základě stupňů volnosti a stanovené hladiny významnosti určíme kritickou hodnotu z χ2 tabulky a stanovíme rozhodovací pravidlo pro zamítnutí nulové hypotézy: χ2 > 5.99 Vypočteme testovou statistiku jako: X
(fskutečná − fočekávaná )2 fočekávaná
(2.11)
Po dosazení: X
(121 − 100)2 (288 − 150)2 (91 − 250)2 + + = 234.49 100 150 250
Jelikož χ2 > 5.99, zamítáme H0 a na základě pozorovaného vzorku populace můžeme konstatovat, že pozorované četnosti nejsou stejné s ohledem na očekávání z roku 2000.
2.3.4
Mann Whitney U Test
Mann-Whitney U-Test neparametrická verze nezávislého T-testu, pomocí něhož můžeme porovnávat ordinální data. Je nutné zmínit fakt, že pro vzorek větší než 20 testová statistika pochází z normálního rozdělení. Příklad 6. Na hladině významnosti 5% máme porovnat, zda existuje rozdíl mezi lékem A a lékem B. Relaxace: pro výpočet kritických hodnot bude použito normální rozdělení, přestože velikost vzorku je menší než 20. Lék A Lék B
28 12
17 31
36 19
35 14
32 20
33 19
21
2. Teorie Řešení 6: Nejprve si definujeme nulovu a alternativní hypotézu: H0 ; Mezi oběma léky není významný rozdíl. H1 ; Mezi oběma léky existuje významný rozdíl. Stanovíme hladinu významnosti α = 0.05 Stanovíme rozhodovací pravidlo pro zamítnutí nulové hypotézy: z < −1.96 nebo z > 1.96 Nejprve vzestupně seřadíme18 jednotlivé hodnoty a přiřadíme jim bodové ohodnocení podle pravidla 1 bod za každý vzorek z druhé skupiny s vyšším pořadím. Pořadí 1 2 3 4.5 4.5 6 7 8 9 10 11 12
Původní skóre 12 14 18 19 19 20 28 31 32 33 35 36
Původní vzorek B B B B B B A A A A A A
Ohodnocení 6 6 6 6 6 6 0 0 0 0 0 0
Sečteme body pro obě skupiny: UA = 0 + 0 + 0 + 0 + 0 + 0 = 0 UB = 6 + 6 + 6 + 6 + 6 + 6 = 36 Vybereme menší z obou hodnot U = min(UA , UB ) = 0 a tuto hodnotu označovanou jako U-skóre použijeme pro výpočet z-statistiky: z=q 18
nA ·nB 2 nA ·nB ·(nA +nB +1) 12
U−
(2.12)
v případě shody rozdělíme jako v případě ohodnocení 4 a 5, ze kterého se stane 4.5 v obou případech
22
2.3. Vybrané statistické testy Po dosazení: z=q
6·6 2 6·6·(6+6+1) 12
0−
= −2.88
Jelikož z = −2.88 < −1.96, zamítáme H0 a můžeme prohlásit, že účinky obou léků se liší.
2.3.5
Wilcoxonův znaménkový test
Jedná se o neparametrický test, který mezi sebou porovnává dvě skupiny závislých pozorování. Je analogií k párovému T-testu - tento test je vhodné použít v situaci, kdy existuje možnost, že data neodpovídají normálnímu rozdělení. [7] Pokud mluvíme o Wilcoxonově testu, máme na mysli většinou znaménkový test nebo Rank Sum test. Je nutné zmínit fakt, že pro vzorek větší než 30 testová statistika pochází z normálního rozdělení. Příklad 7. Zadání je stejné jako u předchozího příkladu - na hladině významnosti 5% máme porovnat, zda existuje rozdíl mezi lékem A a lékem B. Relaxace: pro výpočet kritických hodnot bude použito normální rozdělení, přestože velikost vzorku je menší než 30. Před Po
28 12
17 31
36 19
35 14
32 20
33 19
Řešení 7: Nejprve si definujeme nulovu a alternativní hypotézu: H0 ; Lék nemá žádný významný vliv H1 ; Lék má významný vliv. Stanovíme hladinu významnosti α = 0.05 Stanovíme rozhodovací pravidlo pro zamítnutí nulové hypotézy: z < −1.96 nebo z > 1.96 Vypočítáme rozdíly mezi jednotlivými pozorováními a na základě pořadí těchto rozdílů přiřadíme hodnocení od nejmenšího rozdílu po největší. 23
2. Teorie Před 28 17 36 35 32 33
Po 12 31 19 14 20 19
Rozdíl 16 -14 17 21 12 14
Hodnocení 4 1 5 6 2 3
Sečteme všechny kladné a záporné rozdíly X
R+ = 4 + 5 + 6 + 2 + 3 = 20 X
R− = 1 P
P
Vybereme menší z obou hodnot T = min( R− , R+ ) = 1 a tuto hodnotu označovanou jako T-skóre použijeme pro výpočet z-statistiky: z= Po dosazení: z=
n(n+1) 4 n(n+1)(2n+1) 24
T−
6(6+1) 4 6(6+1)(2·6+1) 24
T−
(2.13)
= −1.99
Jelikož z = −1.99 < −1.96, můžeme zamítnout H0 a prohlásit, že aplikace léku má významné účinky. Musíme však podotknout, že H0 byla zamítnuta velmi těsně a tedy je závěr nutno brát s větší rezervou.
24
Kapitola
Analýza a návrh řešení 3.1
Srovnání dostupných nástrojů
Jelikož k dosažení vytyčených cílů je možné dojít mnoha cestami a použít různé nástroje, rozhodl jsem se shrnout ty nejzajímavější z hlediska jejich kladů a záporů a pokusit se vybrat z nich ten nejlepší.
3.1.1
IBM SPSS Statistics
3.1.2
R
3.1.3
RapidMiner
! profesionální řešení % velmi vysoká cena
! silná komunita, výborná dokumentace % poněkud zastaralé grafické rozhraní, nemožnost reportingu ! intuitivní ovládání, zaměřené na data-flow, snadná rozšiřitelnost, rozšíření pro jazyk R
% neexistující podpora pro statistické testy 25
3
3. Analýza a návrh řešení
3.2
Srovnání knihoven pro statistické výpočty
Ačkoliv JSC je knihovnou specificky zaměřenou na statistické testy, tato knihovna je poměrně zastaralá a a její dokumentace není moc rozsáhlá. Naopak Apache Commons Math je knihovna, která řeší mnohem více problémů, než je pro naše účely potřeba (pro naše účely je zbytečně rozsáhlá), nicméně za ní stojí silná komunita, je ověřená časem a počet testů, které nabízí je slušný.
3.2.1
Apache Commons Math
! mnoho možností, silná komunita a aktivní vývoj, výborná dokumentace
% zbytečně rozsáhlá knihovna, slabá customizovatelnost testů 3.2.2
JSC
! množství testů % neudržovaná a zastaralá knihovna, slabá dokumentace
3.3
Srovnání knihoven pro vizualizaci
Z tohoto srovnání nakonec vyšla vítězně knihovna JFreeChart, ačkoliv to bylo vítězství těsné - GRAL obsahuje dostatečné množství grafů, má slušnou dokumentaci a vypadá lépe - bohužel z celkového srovnání vychází hůře kvůli velmi slabým možnostem customizace.
3.3.1
JFreeChart
! velké množství grafů, spoustu možností customizace, výborná dokumentace
% méně přitažlivá vizuální stránka 3.3.2
GRAL
! přitažlivá vizuální stránka, dobrá dokumentace % málo možností customizace
26
3.4. Srovnání knihoven pro reporting
3.4
Srovnání knihoven pro reporting
Toto srovnání se může na první pohled jevit jako zavádějící z toho důvodu, že Jasper Reports využívá interně ke generování reportů iText, což je obecná knihovna pro manipulaci s pdf. V případě klinických studií je ale orientace na reporty zcela dostačující a navíc umožňuje generování do mnoha různých formátů.
3.4.1
JasperReports
! výborná dokumentace, silná komunita, mnoho možností, různé formáty
% přílišná složitost 3.4.2
iText
! obecná knihovna pro manipulaci s pdf % orientace pouze na pdf
27
Kapitola
Použité technologie 4.1
RapidMiner
RapidMiner je jedním z nejrozšířenějších open source nástrojů pro dolování dat a strojové učení. RapidMiner pracuje s poměrně intuitivní představou o jednotlivých krocích zpracování dat - s tzv. operátory - což jsou komponenty, které poskytují určitou funkčnost (klasifikace, regrese, shluková analýza, předzpracování, apod.). Operátory mají jeden nebo více vstupů resp. výstupů a je možné je libovolně kombinovat a tak vytvořit komplexní proces. Více o jednotlivých operátorech zde [13]. Tvorbu vlastních operátorů popisuje [12].
4.2
Jazyk R
Jazyk R je open source statistické prostředí a programovací jazyk velmi oblíbený mezi statistiky [3], umožňuje snadnou tvorbu grafů a statistických výpočtů. Navíc díky rozšíření pro podporu jazyka R v RapidMineru, je možné zkombinovat možnosti R s už tak rozsáhlými možnostmi RapidMineru.
4.3
Java + IntelliJ IDEA
RapidMiner stejně jako jeho rozšíření jsou napsány v jazyce Java. Představovat tento jazyk asi není třeba, neboť se jedná o jeden z nejrozšířenějších (Platformově nezávislý) jazyk současnosti. IntelliJ je profesionální vývojové prostředí určené pro vývoj (nejen) v jazyce Java. 29
4
4. Použité technologie
4.4
Groovy
Jedná se o dynamický jazyk pro Java platformu inspirovaný jazyky jako je Python, Ruby nebo Smalltalk, které mají množství užitečných vlastností, díky kterým umožňují psát méně kódu, zato však efektivnějšího. Další výhodou je fakt, že syntaxe Groovy je velmi podobná Javě [6].
4.5
Ant
Another Neat Tool (Ant) je jeden z nejrozšířenějších buildovacích nástrojů určených pro vývoj v jazyce Java. Tento nástroj umožňuje popsat jednotlivé kroky buildovacího procesu a tak umožnit jeho automatizaci. Pracuje s tzv. cíli 19 , což je jakási abstrakce zastřešující posloupnost kroků, buildovacího procesu. RapidMiner obsahuje předdefinovanou sadu cílů, které výrazně usnadňují vývoj rozšíření.
4.6
NSIS
První věcí, se kterou se uživatel musí potýkat před tím, než začne používat nějaký software, je jeho instalace - je tedy nutné aby byla bezproblémová [9]. Nullsoft Scriptable Install System (NSIS) je open source systém pro tvorbu instalátorů pro operační systém Windows. Práce s tímto systémem je velmi snadná a RapidMiner má navíc připraveny skripty, které odvedou téměř veškerou práci. Uživatel tak pouze nainstaluje dané rozšíření a může ho začít používat.
4.7
Apache Commons Math
Apache Commons Math je velmi rozsáhlou knihovnou zaměřenou na matematické výpočty [2]. Jedná se o další z rodiny commons knihoven, které si kladou za cíl zastřešit různé problémy, které musí programátoři často řešit. Tato knihovna pokrývá množství oblastí od lineární algebry po genetické algoritmy. Pro naše účely je zajímavá z toho důvodu, že obsahuje podporu pro statistické testy a spojitá rozdělení pravděpodobnosti. 19
30
angl. targets
4.8. JFreeChart
4.8
JFreeChart
JFreeChart je komplexní open source knihovna pro tvorbu grafů v prostředí jazyka Java [5]. Přestože je oficiální vývojářská příručka placená, díky kvalitní dokumentaci a množství užitečných příkladů se jedná o jasnou volbu v případě, nutnosti programové tvorby jakýchkoliv grafů.
4.9
JasperReports a DynamicJasper
JasperReports je jedním z nejznámnějších reportovacích frameworků v prostředí jazyka Java [1]. V souvislosti s JasperReports bývá často zmiňován ještě iReport, což je editor reportů postavený nad platformou NetBeans. Programová tvorba reportů bez využití iReport je však poměrně komplikovaná záležitost, proto je vhodné JasperReports zkombinovat například s DynamicJasper, což je knihovna, která uživatele odstiňuje od přílišné složitosti JasperReports a umožňuje vytvořit komplexní report napsáním několika řádků kódu.
31
Kapitola
Realizace 5.1
Integrace do systému RapidMiner
Rozšíření programu RapidMiner bylo implemtováno dle [12]. Z funkčního hlediska je rozšíření rozděleno do 3 částí, které zajišťují odpovídající funkcionalitu. Celkem bylo přidáno 11 operátoru, konkrétně: 6 operátorů pro ověřování statistických hypotéz 2 operátory pro deskriptivní statistiku a explorační analýzu 3 operátory pro reporting
5.1.1
Operátory pro ověřování statistických hypotéz
Hlavní funkcionalitu celého nástroje tvoří operátory umožňující vykonávat statistické testy přímo v prostředí RapidMineru. Celkem bylo vytvořeno 6 operátorů, které přidávají podporu pro statistické testy popsané v kapitole 2.3. Testy jsou rozděleny do 2 skupin podle toho, zda se jedná o testy parametrické nebo neparametrické. Všechny implementované testy mají společné tyto parametry: Alpha Hladina významnosti, na které má být test proveden. Výchozí hodnota je 0.05.(povinný) Description Parametr, který slouží k přidání popisku k testu. V případě, že tento parametr není zadán, jeho hodnota odpovídá názvu testu. (expertní) 33
5
5. Realizace
Obrázek 5.1: Operátory pro ověřování statistických hypotéz
5.1.1.1
Operátor pro jednovýběrový T-Test
Operátor pro jednovýběrový T-test implementuje test pro porovnání hypotetického průměru s průměrem skutečným. Tento test je popsán v 2.3.1.1. Jedná se o oboustranný test. Parametry tohoto operátoru jsou: Sample 1 Parametr, který určuje jaký atribut ze vstupu bude použit v rámci testu jako statistický soubor. (povinný) Fixed value Parametr, který specifikuje hypotetický průměr, se kterým je skutečný statistický soubor porovnáván. Výchozí hodnota je 1.0.(povinný) 5.1.1.2
Operátor pro dvouvýběrový T-Test
Operátor pro dvouvýběrový T-test implementuje ve skutečnosti testy dva: 1. Test nezávislých vzorků popsaný v 2.3.1.2, který porovnává průměry dvou statistických souborů mezi sebou. 2. Párový test popsaný v 2.3.1.3, který porovnává dva statistické soubory závislých měření. Parametry tohoto operátoru jsou: Sample 1 Parametr, který určuje jaký atribut ze vstupu bude použit v rámci testu jako první statistický soubor.(povinný) Sample 2 Parametr, který určuje jaký atribut ze vstupu bude použit v rámci testu jako druhý statistický soubor. (povinný) Paired Test Parametr, který určuje, zda test bude párový. Výchozí hodnota je false. (povinný) 34
5.1. Integrace do systému RapidMiner V obou případech se jedná o oboustranné testy. 5.1.1.3
One-way ANOVA operátor
Tento operátor implementuje jednosměrnou analýzu rozptylu dle popisu v 2.3.2. Jedná se o jednostranný test. Parametry tohoto operátoru jsou: Classes Parametr, který vybírá podmnožinu atributů ze vstupu. Tyto atributy budou použity jako jednotlivé skupiny v testu. (povinný) 5.1.1.4
Chi Square Test operátor
Tento operátor implementuje χ2 test dobré shody dle popisu v 2.3.3. Jedná se o jednostranný test. Parametry tohoto operátoru jsou: Sample 1 Parametr, který určuje jaký atribut ze vstupu bude použit v rámci testu jako první statistický soubor obsahující očekávané četnosti. (povinný) Sample 2 Parametr, který určuje jaký atribut ze vstupu bude použit v rámci testu jako druhý statistický soubor obsahující skutečné (pozorované) četnosti. (povinný) 5.1.1.5
Mann Whitney U-Test operátor
Tento operátor implementuje Mann Whitney test dle popisu v 2.3.4. Jedná se o oboustranný test. Parametry tohoto operátoru jsou: Sample 1 Parametr, který určuje jaký atribut ze vstupu bude použit v rámci testu jako první statistický soubor. (povinný) Sample 2 Parametr, který určuje jaký atribut ze vstupu bude použit v rámci testu jako druhý statistický soubor. (povinný) 5.1.1.6
Wilcoxon Signed Rank Test operátor
Tento operátor implementuje Wilcoxonův znaménkový test dle popisu v 2.3.5. Jedná se o oboustranný test. Sample 1 Parametr, který určuje jaký atribut ze vstupu bude použit v rámci testu jako první statistický soubor. (povinný) 35
5. Realizace Sample 2 Parametr, který určuje jaký atribut ze vstupu bude použit v rámci testu jako druhý statistický soubor. (povinný) 5.1.1.7
Zobrazení výsledků statistických testů
Pro všechny statistické testy je zaregistrován společný renderer, který zobrazí jak textový výstup, tak vizualizaci intervalu spolehlivosti v rámci rozdělení, které odpovídá danému testu. Ukázku výstupu pro Wilcoxonův Znaménkový test je možné vidět na obrázku 5.5. Textový výstup zahrnuje: Test Název testu Test Statistic Hodnota testové statistiky Decision Rule Textová reprezentace rozhodovacího pravidla Confidence Hladina spolehlivosti na jaké byl test proveden Reject H0 Nejdůležitější informace o tom, zda má být nulová hypotéza zamítnuta Vizualizace zahrnuje: 1. Vizualizaci rozdělení spojité veličiny, ze kterého daný test vychází. 2. Vizualizaci intervalu spolehlivosti. 3. Označenou hodnotu, která odpovídá testové statistice. 4. Zobrazený graf se dá libovolně přibližovat a oddalovat, což může být užitečné v případě těsného zamítnutí resp. přijetí H0 .
5.1.2
Operátory pro explorační analýzu dat
Operátory pro deskriptivní a explorační analýzu byly prozatím přidány pouze dva, takové, které splňují požadavky klinické studie Prague 15 - jedná se o operátor pro deskriptivní analýzu a operátor pro tvorbu krabicových grafů. 36
5.1. Integrace do systému RapidMiner
Obrázek 5.2: Operátory pro deskriptivní statistiku a explorační analýzu
5.1.2.1
Descriptive statistics operátor
Tento operátor implementuje většinu z charakteristik deskriptivní statistiky zmíněných v sekci 2.1. Vstupem tohoto operátoru je ExampleSet, kterému je pro každý jeho atribut vytvořena popisná statistika. Uživatel si může vybrat, které z popisných charakteristik budou vytvořeny a které nikoliv. Mean aritmetický průměr, výchozí hodnota je true, (povinný) Standard Deviation směrodatná odchylka, výchozí hodnota je true, (povinný) Median medián, výchozí hodnota je false (povinný) Skewness zkosení, výchozí hodnota je false (expertní) Variance rozptyl, výchozí hodnota je false (expertní) Kurtosis špičatost, výchozí hodnota je false (expertní) Renaming rules Umožňuje definovat pravidla pro přejmenování atributů, pokud není zadáno žádné pravidlo, názvy výstupních atributů Description odpovídají názvům vstupních atributů (expertní) Precision určuje počet desetiných míst v případě výstupu do reportu, výchozí hodnota je 2 (expertní) 5.1.2.2
Box plot operátor
Tento operátor umožňuje snadno vytvořit ze vstupního ExampleSetu výstup v podobě krabicového grafu. Operátor má proměnný počet vstupů. Každý vstup v případě, že je připojen odpovídá jedné třídě a každý atribut odpovídá krabičce. Chart Title nadpis výstupního grafu (nepovinný) Chart X-Axis Title popisek osy X (povinný) Chart Y-Axis Title popisek osy Y (povinný) 37
5. Realizace Class names Pravidla pro přejmenování kategorií, pokud není zadáno žádné pravidlo, názvy kategorií jsou odvozeny z názvů operátorů, ze kterých data pocházejí (expertní) Renaming rules Umožňuje definovat pravidla pro přejmenování atributů, pokud není zadáno žádné pravidlo, názvy krabiček budou odpovídat názvům vstupních parametrů (expertní) Pro dosažení správného výsledku je nezbytné, aby názvy atributů, pokud je použito více vstupů (kategorií) byly totožné.
Obrázek 5.3: Ukázka výstupu krabicového grafu pro 2 vstupní Example sety, každý se čtyřmi atributy, včetně aplikace přejmenovávacích pravidel
5.1.3
Operátory pro reporting
Ačkoliv je možné používat jednotlivé operátory pro se statistickými testy a operátory pro deskriptivní a explorační analýzu samostatně, rozhodl jsem se (vzhledem k neintuitivnosti a přílišné komplikovanosti oficiálního rozšíření pro reporting) implementovat několik jednoduchých operátorů, které by umožnili snadnou agregaci do výsledného reportu. 38
5.1. Integrace do systému RapidMiner
Obrázek 5.4: Operátory pro reporting
5.1.3.1
Create Report operátor
Tento operátor vytvoří na vybraném místě pdf report, má proměnný počet vstupů, přičemž podporované vstupy jsou: ExampleSet pokud je přiveden na vstup, operátor v reportu automaticky vytvoří odpovídající tabulku. SignificanceTestResult pokud je přiveden na vstup, operátor v rámci reportu vytvoří tabulku, která zachycuje veškeré textové informace, které se týkají daného testu. Viz levá část obr. 5.5. JFreeChartResult pokud je přiveden na vstup do reportu bude přidán element s grafem jako je možné vidět na obrázku 5.3 ReportSectionResult pokud je přivedena na vstup sekce, tato je zřetězena do výsledného reportu jako kterýkoliv jiný element, ale navíc je přidán nadpis vztahující se na celou sekci - viz 5.1.3.2 StyledTextResult pokud je přiveden na vstup výsledek obsahující text včetně formátování, tento text je zobrazen ve výsledném reportu - viz 5.1.3.3 Create Report operátor má následující parametry: Report title nadpis reportu (nepovinný) Report subtitle podnadpis reportu (nepovinný) Output file soubor do kterého má být uložen výsledný report (povinný) Creation time informace o čase vygenerování v zápatí reportu , výchozí hodnota je true(expertní) Page numbers informace o počtu stránek v zápatí reportu, výchozí hodnota je true (expertní) Pokud je přiveden více než jeden vstup, operátor tyto elementy automaticky zřetězí dle pořádí těchto vstupů. 39
5. Realizace 5.1.3.2
Create Section operátor
Create Section operátor umí zpracovávat stejné typy výsledků jako Create Report operátor, ale veškeré své vstupy navíc zastřeší jako sekci s nadpisem, není možné zřetězit více sekcí pod sebe. Create Section operátor má následující parametry: Section title nadpis sekce (nepovinný) Start on new page parametr určuje, zda další element začíná na nové stránce, výchozí hodnota je false (povinný) 5.1.3.3
Styled Text operátor
Operátor, který slouží k vytvoření bloku statického textu včetně formátování. Formátování je zprostředkováno atributem isStyledText="true", což umožní použít JasperReports proprietárního strukturovaného formátu, pomocí kterého je možné definovat styl. Více informací v [1].
5.2
Ukázka přidání nového testu
Přidání nového testu do prostředí RapidMineru je poměrně snadné a většina funkcionality je připravená k použití. Dle 2.3.5 vytvoříme test tak, že po projití této kapitoly bude použitelný jako nový operátor.
5.2.1
Přidání operátoru
Nejdříve ze všeho je potřeba vytvořit nový operátor. Vytvoříme tedy novou třídu WilcoxonSignedRankTestOperator. Tato třída bude potomkem třídy AbstractSignificanceTest, kde je definována většina potřebných parametrů jako je hladina významnosti nebo parametry, které určují, zda test bude jedno nebo dvou-výběrový.
public final class WilcoxonSignedRankTestOperator extends AbstractSignificanceTest { public WilcoxonSignedRankTestOperator(final OperatorDescription description) { super(description); }
40
5.2. Ukázka přidání nového testu @Override public void doWork() throws OperatorException { final ExampleSet exampleSet = exampleInput.getData(ExampleSet.class); final Attribute attribute1 = exampleSet.getAttributes().get(getParameter(PARAMETER_SAMPLE_1)); final Attribute attribute2 = exampleSet.getAttributes().get(getParameter(PARAMETER_SAMPLE_2)); final double alpha = getParameterAsDouble(PARAMETER_ALPHA); final double [] sample1 = getNumericalExamplesForAttribute(exampleSet, attribute1); final double [] sample2 = getNumericalExamplesForAttribute(exampleSet, attribute2); final String description = getParameterAsString(PARAMETER_DESCRIPTION); final SignificanceTestResult result = new WilcoxonSignedRankTestResult(sample1, sample2, alpha); if (description != null && !description.isEmpty()) { result.setDescription(description); } significanceOutput.deliver(result); } }
Přetížíme metodu getParameterTypes() a jelikož se bude jednat o dvouvýběrový test, přidáme oba parametry, které budou odpovídat atributům na vstupu operátoru.
@Override public List<ParameterType> getParameterTypes() { final List<ParameterType> types = super.getParameterTypes(); types.add(new ParameterTypeAttribute(PARAMETER_SAMPLE_1, "Select attribute to be a sample 1 for a test.", exampleInput, false, false));
41
5. Realizace types.add(new ParameterTypeAttribute(PARAMETER_SAMPLE_2, "Select attribute to be a sample 2 for a test.", exampleInput, false, false)); return types; }
V tuto chvíli je zapotřebí pouze zaregistrovat tento operátor, takže ho RapidMiner bude schopen rozpoznat a nabídnout uživateli k dispozici jako kterýkoliv jiný operátor. Zaregistrování provedeme v konfiguračním souboru OperatorsClinical.xml a jelikož se jedná o neparametrický test, přidáme ho do odpovídající skupiny.
... wilcoxon_signed_rank_test cz.cvut.fit.hypotheses.operators.WilcoxonSignedRankTestOperator
Nyní jsme vytvořili operátor, který bude použitelný v RapidMineru, ale zatím nic neumí. Ještě je zapotřebí přidat samotný test, který bude doručen na výstup našeho operátoru.
5.2.2
Přidání testu
Přidáme tedy novou třídu WilcoxonSignedRankTestResult, která bude potomkem SignificanceTestResult, kde js
public final class WilcoxonSignedRankTestResult extends SignificanceTestResult { public WilcoxonSignedRankTestResult(double[] sample1, double[] sample2, double alpha) {
42
5.2. Ukázka přidání nového testu super(alpha); final AbstractRealDistribution z = new NormalDistribution(); testStatistic = computeTestStatistic(sample1, sample2); decisionRule = new ConfidenceInterval(z, Tailed.BOTH_SIDES, confidenceLevel, testStatistic); reject = decisionRule.reject(); } private double computeTestStatistic(double[] sample1, double[] sample2) { return 0.0; } @Override public String getName() { return "Wilcoxon Signed-Ranks Test"; } }
V tuto chvíli metoda computeTestStatistic vrací hodnotu 0.0, což jistě není něco co bychom chtěli. Přidáme tedy do této metody výpočet testové statistiky dle 2.3.5:
private double computeTestStatistic(double[] sample1, double[] sample2) { final NaturalRanking naturalRanking = new NaturalRanking( NaNStrategy.FIXED, TiesStrategy.AVERAGE); final double[] diff = new double[sample1.length]; for (int i = 0; i < sample1.length; ++i) { diff[i] = sample1[i] - sample2[i]; } final double[] ranks = naturalRanking.rank(diff); double rPlus = 0; double rMinus = 0;
43
5. Realizace
for (int i = 0; i < diff.length; ++i) { if (diff[i] > 0) { rPlus += ranks[i]; } else { rMinus += ranks[i]; } } final double tScore = FastMath.min(rPlus, rMinus); final double n = sample1.length; return (tScore - n*(n + 1) / 4) / FastMath.sqrt(((n*(n + 1))*(2*n + 1)) / 24); }
5.2.3
Vizualizace
Jelikož jsme při tvorbě testu použili jako rozhodovací pravidlo ConfidenceInterval, který umí zprostředkovat svoji vizualizaci s daným rozdělením, s určením toho, zda test má být jednostranný nebo oboustranný, se specifikovanou hladinou významnosti a testovací statistikou. Díky tomu, že jsme tento test vytvořili jako potomka třídy SignificanceTestResult, který má již zaregistrovaný vlastní renderer, který je společný pro všechny testy, pro vizualizaci tedy nemusíme dělat vůbec nic navíc. Nyní můžeme spustit RapidMiner, načíst data z příkladu 2.3.5 a porovnat výsledek. Pokud bylo vše provedeno podle postupu, objeví se panel s výsledkem testu.
5.3
Popis nasazení v prostředí klinické studie Prague 15
Ačkoliv bylo celé rozšíření vytvořeno jakožto nástroj pro libovolnou klinickou studii, z hlediska této diplomové práce bude zajímavý popis nasazení do prostředí klinické studie Prague 15. 44
5.3. Popis nasazení v prostředí klinické studie Prague 15
Obrázek 5.5: Výsledek nově přidaného Wilcoxonova znaménkového testu v RapidMineru
5.3.1
Popis dat klinické studie Prague 15
Jelikož jsou data klinické studie Prague 15 velmi citlivá a jejich získání bylo podmíněno podepsáním prohlášení o mlčenlivosti (NDA), použil jsem pro následující popis nasazení implementovaného procesu data náhodně vygenerovaná. Jelikož mým úkolem bylo usnadnění práce lékařů pracujících na tomto výzkumném projektu, skutečná data pro mě v konečném důsledku nebyla až tolik zásadní. Názvy jednotlivých atributů, jejich typ a struktura však zůstala nezměněná. Redukovaná data obsahují celkem 96 atributů. Jejich faktický počet je ale ve skutečnosti ještě menší, protože vetšina uvažovaných atributů se liší pouze s ohledem na časový odstup daného měření od randomizace každému takovému měření se říká follow-up. Označení Follow-upů v rámci klinické studie Prague 15 je následující: Random. jedná se vlastně o vstupní měření z doby randomizace, formálně nejde o follow-up 1M měření po 1 měsíci od randomizace 3M měření po 3 měsících od randomizace 6M měření po 6 měsících od randomizace 1R měření po 1 roce od randomizace 45
5. Realizace 2R měření po 2 letech od randomizace 3R měření po 3 letech od randomizace Kompletní seznam atributů je k dispozici jako příloha D.
5.3.2
Problémy v datech
Stejně jako většina jiných reálných dat i tato data v surové formě obsahovala určité nedostatky se kterými jsem se musel během implementace vypořádat. 5.3.2.1
Chybějící data
Jednotlivá měření u každého pacienta jsou rozložena do follow-upů. Jelikož je studie naplánovaná na 5 let, pacienti mají vyplněny pouze některé z těchto follow-upů - v době psaní práce byl maximálním follow-upem, který byl vyplněn 1 rok. Bohužel ne všichni pacienti měly follow-upy vyplňené stejně a někteří měli dokonce vyplňené měření pouze z doby randomizace. Takovéto pacienty bylo nutné v rámci testování závislých měření pomocí Ttestu odfiltrovat. Tím se bohužel snižovala velikost statistického souboru, nad kterým byl daný statistický test prováděn. 5.3.2.2
Nekonzistentní jmenná konvence
Jak je možné vidět v příloze D, v datech není jednotná jmenná konvence, kdy je databázový sloupec označován v jednom případě jako Tepová frekvence (TF) a v druhém Heart Rate (HR). Podobnou nepříjemností, která zvyšovala nepřehlednost, bylo označení doby měření jednou bez podtržítka, jednou s podtržítkem, jednou uprostřed identifikátoru, jednou na konci. Tato jmenná nekonzistence může být významným zdrojem chyb a také výrazně zvýšila pracnost tvorby výsledného procesu. 5.3.2.3
Špatně zadané databázové sloupce
V případě databázových sloupců TKD1_HOLTER a TKS1_HOLTER jsem byl upozorněn na prohození těchto sloupců. Problém jsem vyřešil aplikací operátoru pro přejmenování atributů. 5.3.2.4
Špatně zadané hodnoty
Jelikož data do databáze zadávají lidé, kteří samozřejmě dělají chyby, vyskytují se v této databázi překlepy. Samotné překlepy nejsou z hlediska mé 46
5.3. Popis nasazení v prostředí klinické studie Prague 15 práce problém, z hlediska klinické studie je to však problém zcela zásadní. Naštěstí s pomocí tohoto rozšíření bylo objeveno několik překlepů např. průměr v krabicových grafech ležel v oblasti, která je určená odlehlým hodnotám apod.
5.3.3
Popis dat vybraných k analýze
Po konzultaci s kardiology vyšlo najevo, které z atributů budou z hlediska analýzy zajímavé a které ne. Následující seznam spolu s popisem uvádí 16 atributů, které byly předmětem analýzy a na které jsem se zaměřil při implementaci procesu. Jedná se o různé variace krevního tlaku a srdeční frekvence (v ordinaci lékaře a 24h monitorování pomocí holteru), dále hladina látek v krvi a počet antihypertenziv: Průměrný TK systol. (Lékař) Průměrný systolický krevní tlak v ordinaci lékaře, průměr ze 3 po sobě jdoucích měření, udanou jednotkou je torr. Průměrný TK diastol. (Lékař) Průměrný diastolický krevní tlak v ordinaci lékaře, průměr ze 3 po sobě jdoucích měření, udanou jednotkou je torr. Průměrná TF (Lékař) Průměrná tepová frekvence v ordinaci lékaře, průměr ze 3 po sobě jdoucích měření, udanou jednotkou je počet úderů za minutu. Průměrný TK systol.(Holter) Průměrný systolický krevní tlak, 24h monitorování pomocí holteru, udanou jednotkou je torr. Průměrný TK diastol. (Holter) Průměrný diastolický krevní tlak, 24h monitorování pomocí holteru, udanou jednotkou je torr. Průměrná TF (Holter) Průměrná tepová frekvence, 24h monitorování pomocí holteru, udanou jednotkou je počet úderů za minutu. Denní TK systol. (Holter) Průměrný systolický krevní tlak, denní monitorování pomocí holteru, udanou jednotkou je torr. Denní TK diastol. (Holter) Průměrný diastolický krevní tlak, denní monitorování pomocí holteru, udanou jednotkou je torr. Denní TF (Holter) Průměrná tepová frekvence, denní monitorování pomocí holteru, udanou jednotkou je počet úderů za minutu. 47
5. Realizace Noční TK systol. (Holter) Průměrný systolický krevní tlak, noční monitorování pomocí holteru, udanou jednotkou je torr. Noční TK diastol. (Holter) Průměrný diastolický krevní tlak, noční monitorování pomocí holteru, udanou jednotkou je torr. Noční TF (Holter) Průměrná tepová frekvence, noční monitorování pomocí holteru, udanou jednotkou je počet úderů za minutu. Na Hladina sodíku v krvi, udanou jednotkou je mmol/l K Hladina draslíku v krvi, udanou jednotkou je mmol/l Kreatinin Hladina kreatininu, je markerem ledvinového selhání, udanou jednotkou je µmol/l Počet antihypertenziv Počet antihypertenzních léků, které jsou pacientovi předepsány, udáno v celých číslech
5.3.4
Implementace RapidMiner procesu
S použitím základních operátorů RapidMineru v kombinaci s nově přidanými operátory pro testování statistických hypotéz, pro deskriptivní statistiku a reporting jsem implementoval RapidMiner proces, který zastřešuje celý proces automatizovaného vyhodnocení klinické studie. Takto vytvořený proces je snadno udržovatelný a jeho případná úprava je také velice jednoduchá - ať už jde o přidání nových příznaků, jiného způsobu popisu nebo změnu zdroje dat. Samozřejmě by bylo možné podobným způsobem zautomatizovat i jinou klinickou studii. 5.3.4.1
Popis hlavního procesu
Na obrázku 5.6 je možné vidět celkový pohled na RapidMiner proces, který provádí automatické vyhodnocení klinické studie. 5.3.4.2
Předzpracování
Jelikož mezi sebou porovnáváme dvě skupiny pacientů, je nutné nejdříve původní data rozdělit do dvou skupin - kontrolní (farmakoterapie) a testovací (RDN). Jelikož cílem je popsat všech 16 příznaků a jejich vývoj v čase, je součástí předzpracování také filtrace dle jednotlivých atributů včetně odpovídajících follow-upů. 48
5.3. Popis nasazení v prostředí klinické studie Prague 15
Obrázek 5.6: Top level proces klinické studie Prague 15 Čísla odpovídají číslování operátorů na obrázku 5.6. 1, Získání dat z databáze FNKV V tomto kroku je získán dataset klinické studie Prague 15. S ohledem na NDA a citlivost skutečných dat, je součástí diplomové práce pouze upravený proces, který je pro prezentaci mé práce naprosto dostačující a který obsahuje pouze náhodně vygenerovaná data ze souboru FNKV-prague15-random-dataset.arff 2, Přejmenování chybně pojmenovaných sloupců použitý operátor - viz 5.3.2.3.
rename
3 - 4, Rozdělení dat na dvě skupiny - viz 5.3.4.2 5 - 20, Zpracování jednotlivých příznaků celkový počet příznaků určených k analýze je 16 - detailní popis viz 5.3.4.3 21, Reporting agregace do výsledného reportu - viz 5.3.4.4
5.3.4.3
Popis příznaku
1 a 2, Distribuce obou skupin pacientů pomocí operátoru multiply jsou data rozmnožena a distribuována mezi další operátory. 3, Filtrace chybějících hodnot jelikož řádky obsahující chybějící hodnoty není možné použít pro párový test, musíme tyto řádky odfiltrovat 49
5. Realizace
Obrázek 5.7: Sub-proces, popisující jeden příznak z 16
4, Párový T-Test proveden mezi příznakem změřeným v době randomizace a příznakem změřeným po 6 měsících resp. 1 roce. 5, Krabicový graf pro každou skupinu je vytvořena jedna třída krabicového grafu, na ose X jsou jednotlivá měření daného příznaku v čase, takže je na první pohled zřejmé, jakým směrem se oba statistické soubory vyvíjejí v čase, zároveň je k dispozici srovnání obou skupin mezi sebou. 6 a 7, Výpočet deskriptivních statistik pro obě skupiny je vypočtena deskriptivní statistika, která zahrnuje průměr, směrodatnou odchylku a medián. 8, Vytvoření sekce Každý popsaný příznak je v rámci výsledného reportu zamýšlen jako samostatná sekce - popsanou sekci pro příznak průměrného systolického tlaku je možné vidět na obrázku C.1. 5.3.4.4
Reporting
Spuštěním procesu vznikne výsledný report, který má celkem 16 stran a popisuje všechny smluvené atributy z kapitoly 5.3.3. Ukázku výstupu je možné vidět v příloze C
50
Kapitola
Testování 6.1
Unit testy (Groovy)
V dnešní době je při vývoji software kladen důraz (kromě přidávání nové funkcionality a vlastností) také na testování. S ohledem na doménu, ve které má být tento nástroj nasazen jsem považoval za více než vhodné zahrnout do testování jak jednotkové testy tak testy uživatelské. Jednotkové testy nejsou pojmem, který by se vztahoval pouze na jazyk Java - jednotkové testování je pojem, který se vztahuje k testování funkčních jednotek kódu - tedy tříd a metod [15]. Pro jednotkové testy jsem si jako jazyk zvolil Groovy, jelikož nabízí to samé co JUnit a zároveň přidává množství užitečných funkcí navíc. Aby byl náš příklad z kapitoly 5.2 dokončen, uvádím zde také unit test v Groovy, který zachycuje příklad z kapitoly 2.3.5:
class WilcoxonSignedRankTestResultTest extends GroovyTestCase { /** * Is there a difference between Before and After using alpha = 0.05? */ void testWilcoxonSignedRankTestResult() { double[] before = [28, 17, 36, 35, 32, 33] double[] after = [12, 31, 19, 14, 20, 19] double alpha = 0.05 SignificanceTestResult result = new WilcoxonSignedRankTestResult(before, after, alpha)
51
6
6. Testování
assert assert assert assert
result.confidenceLevel == 0.95 result.testStatistic.trunc(3) == -1.992 result.pointEstimate.trunc(2) == 0.09 result.reject
} }
Ačkoliv se jedná o několik řádků kódu, takovýto test, pokud bude správně napsán a spouštěn nejlépe před každým spuštěním programu, nám může dát dostatečnou sebedůvěru při provádění případných změn.
6.2
Testovací scénáře s použitím R
Vhodným doplňkem k jednotkovým testům jsou také validace na rozsáhlejších datech, u kterých je výsledek předem znám, a které jsou paralelně vyhodnoceny v jazyce R a výsledky porovnány s naším nástrojem.
52
Závěr Cílem této práce bylo vytvoření nástroje, který by umožňoval automatizované vyhodnocení klinických studií, což zahrnovalo umožnění tvorby deskriptivní statistiky, grafického znázornění dat a zejména podporu pro vykonávání statistických testů. Tento cíl byl splněn a navíc byl vytvořen nástroj, který je možné aplikovat na libovolnou klinickou studii a tak usnadnit práci lékařům. Za největší úspěch ovšem považuji to, že tento nástroj byl posléze nasazen ve Fakultní nemocnic Královské Vinohrady v rámci klinické studie Prague 15, která se zabývá léčbou pacientů s refrakterní hypertenzí. Nasazení tohoto prototypu může být (v případě úspěchu) prvním krokem pro možnou budoucí spolupráci a zároveň možností, jak ukázat přínosy metod strojového učení, umělé inteligence nebo dolování dat v lékařském prostředí. Z mého osobního pohledu to byla velmi zajímavá zkušenost a jsem nesmírně vděčný za tuto možnost spolupráce se špičkovými odborníky.
53
Literatura [1] The JasperReports Ultimate Guide. JasperSoft Co., třetí vydání, 2011. [2] Apache Software Foundation: The Apache Commons Mathematics Library. Dostupné z: http://commons.apache.org [3] Crawley, M. J.: The R Book. Wiley, druhé vydání, 2012. [4] FDV Solutions: DynamicJasper Docs&Examples. Dostupné z: http: //dynamicjasper.com/ [5] Gilbert, D.: The JasperReports Ultimate Guide (Developer Guide). Object Refinery Limited, 2008. [6] Koenig, D.; Glover, A.; King, P.; aj.: Groovy in Action. Greenwich, CT, USA: Manning Publications Co., 2007. [7] McDonald, J.: Handbook of Biological Statistics (2nd ed.). Sparky House Publishing, Baltimore, Maryland, 2009. [8] Navara, M.: Pravděpodobnost a matematická statistika. Nakladatelství ČVUT, Praha, 2007. [9] Nullsoft Scriptable Install //nsis.sourceforge.net
System:
.
Dostupné
z:
http:
[10] P. Widimský, M. B. J. W. j., M. Táborský: Renální denervace: naděje pro nemocné s refrakterní hypertenzí? [11] Prel, J.-B. d.; Hommel, G.; Röhrig, B.; aj.: Confidence Interval or PValue? Part 4 of a Series on Evaluation of Scientific Publications. Dtsch Arztebl International, ročník 106, č. 19, 2009: s. 335–339, doi:10.3238/ arztebl.2009.0335. 55
Literatura [12] Rapid-I: How to extend RapidMiner 5 (whitepaper). Dostupné z: http: //rapid-i.com [13] Rapid-I: RapidMiner Manual. Dostupné z: http://rapid-i.com [14] StatisticsLectures.com: statisticslectures.com
.
Dostupné
z:
http://
[15] Tahchiev, P.; Leme, F.; Massol, V.; aj.: JUnit in Action, Second Edition. Greenwich, CT, USA: Manning Publications Co., druhé vydání, 2010. [16] Zar, J.: Biostatistical analysis. Prentice-Hall/Pearson, 2010, ISBN 9780131008465.
56
Příloha
Obsah přiloženého CD
readme.txt ................................ stručný popis obsahu CD exe.....................adresář se spustitelnou formou implementace src......................................adresář se zdrojovými kódy datasets..............................datasety použité při testování proces ................................. výsledný RapidMiner proces thesis text..............................................kapitoly práce thesis.pdf...........................text práce ve formátu PDF thesis.ps..............................text práce ve formátu PS 57
A
Příloha
B
Popis instalace 1. Pokud nemáte nainstalovaný program RapidMiner, nainstalujte jej, pokud ano, přejděte ke kroku 2. 2. Ve složce exe na přiloženém CD spusťte soubor rapidminer-Clinical Study Extension-1.0.0-installer.exe. 3. Spusťte RapidMiner (pokud instalace proběhla správně, měla by se při startu objevit ikonka se srdcem v oranžovém kruhu). 4. V programu RapidMiner otevřete proces proces/FNKV - Prague15-random.rmp. 5. Operátoru sloužícímu ke čtení dat nastavte zdrojový *.arff soubor datasets/FNKV - Prague15-random.rmp. 6. Spusťte proces.
59
Příloha
Ukázka konečného výstupu Tato příloha má dát čtenáři představu o výsledné formě reportu. Implementovaný RapidMiner proces vytvoří popis 16 smluvených příznaků, což odpovídá 16 stranám ve formátu *.pdf. Níže je možné vidět ukázkovou stránku tohoto reportu, která obsahuje kompletní popis jednoho z příznaků a sice Průměrného systolického krevního tlaku.
61
C
C. Ukázka konečného výstupu
Renal Denervation vs. Pharmacotherapy (a comparative clinical study)
1) Mean Blood Pressure Systolic [torr]
Description
Mean
Standard Deviation
Median
Pharmacotherapy - random.
160.22
10.73
159.5
1M
158.88
11.52
160.5
3M
159.72
10.89
159.0
6M
162.41
10.52
163.5
Description
Mean
Standard Deviation
Median
RDN - random.
161.47
11.39
163.0
1M
158.39
11.22
158.5
3M
158.64
12.37
158.5
6M
161.36
11.95
158.5
Description
Test Statistic
Decision Rule
Point Estimate
Confidence
Paired T-Test (No significant difference between Random and 6M)
0.04
Not in: (-2.03, 2.03)
0.97
0.95
Created on Jun 20, 2013 3:23:38 PM
Page 1 of 16
Obrázek C.1: Ukázka konečného výstupu - str. 1 z 16
62
Reject
Příloha
D
Kompletní seznam atributů určených k analýze Metadata ve formátu *.arff. @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE
’ID_PACIENTA’ real ’SUBSTUDIE’ {’Farmakoterapie - randomiz.’,’RDN-randomiz.’, ’RDN-pilotní’} ’TKS1_LEKAR’ real ’TKD1_LEKAR’ real ’TF1_LEKAR’ real ’TKD1_HOLTER’ real ’TKS1_HOLTER’ real ’HOLTER_HR_MEAN_1’ real ’HOLTER_TKS_DENNI_1’ real ’HOLTER_TKD_DENNI_1’ real ’HOLTER_HR_DENNI_1’ real ’HOLTER_TKS_NOCNI_1’ real ’HOLTER_TKD_NOCNI_1’ real ’HOLTER_HR_NOCNI_1’ real ’Na_1’ real ’K_1’ real ’KREA1’ real ’POCET_AH_LEKU’ real ’TKS_MEAN_1M’ real ’TKD_MEAN_1M’ real ’TF_MEAN_1M’ real ’NA_1M’ real ’K_1M’ real ’KREA_1M’ real ’POCET_ANTIHYPERTEZIV_1M’ real ’TKS_MEAN_3M’ real ’TKD_MEAN_3M’ real ’TF_MEAN_3M’ real ’NA_3M’ real ’K_3M’ real ’KREA_3M’ real ’POCET_ANTIHYPERTEZIV_3M’ real ’TKS_MEAN_6M’ real ’TKD_MEAN_6M’ real
63
D. Kompletní seznam atributů určených k analýze @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE @ATTRIBUTE
64
’TF_MEAN_6M’ real ’TKS_MEAN_HOLTER_6M’ real ’TKD_MEAN_HOLTER_6M’ real ’TF_MEAN_HOLTER_6M’ real ’TKS_DENNI_HOLTER_6M’ real ’TKD_DENNI_HOLTER_6M’ real ’TF_DENNI_HOLTER_6M’ real ’TKS_NOCNI_HOLTER_6M’ real ’TKD_NOCNI_HOLTER_6M’ real ’TF_NOCNI_HOLTER_6M’ real ’NA_6M’ real ’K_6M’ real ’KREA_6M’ real ’POCET_ANTIHYPERTEZIV_6M’ real ’TKS_MEAN_1R’ real ’TKD_MEAN_1R’ real ’TF_MEAN_1R’ real ’TKS_MEAN_HOLTER_1R’ real ’TKD_MEAN_HOLTER_1R’ real ’TF_MEAN_HOLTER_1R’ real ’TKS_DENNI_HOLTER_1R’ real ’TKD_DENNI_HOLTER_1R’ real ’TF_DENNI_HOLTER_1R’ real ’TKS_NOCNI_HOLTER_1R’ real ’TKD_NOCNI_HOLTER_1R’ real ’TF_NOCNI_HOLTER_1R’ real ’NA_1R’ real ’K_1R’ real ’KREA_1R’ real ’POCET_ANTIHYPERTEZIV_1R’ real ’TKS_MEAN_2R’ real ’TKD_MEAN_2R’ real ’TF_MEAN_2R’ real ’TKS_MEAN_HOLTER_2R’ real ’TKD_MEAN_HOLTER_2R’ real ’TF_MEAN_HOLTER_2R’ real ’TKS_DENNI_HOLTER_2R’ real ’TKD_DENNI_HOLTER_2R’ real ’TF_DENNI_HOLTER_2R’ real ’TKS_NOCNI_HOLTER_2R’ real ’TKD_NOCNI_HOLTER_2R’ real ’TF_NOCNI_HOLTER_2R’ real ’NA_2R’ real ’K_2R’ real ’KREA_2R’ real ’POCET_ANTIHYPERTEZIV_2R’ real ’TKS_MEAN_3R’ real ’TKD_MEAN_3R’ real ’TF_MEAN_3R’ real ’TKS_MEAN_HOLTER_3R’ real ’TKD_MEAN_HOLTER_3R’ real ’TF_MEAN_HOLTER_3R’ real ’TKS_DENNI_HOLTER_3R’ real ’TKD_DENNI_HOLTER_3R’ real ’TF_DENNI_HOLTER_3R’ real ’TKS_NOCNI_HOLTER_3R’ real ’TKD_NOCNI_HOLTER_3R’ real ’TF_NOCNI_HOLTER_3R’ real ’NA_3R’ real
@ATTRIBUTE ’K_3R’ real @ATTRIBUTE ’KREA_3R’ real @ATTRIBUTE ’POCET_ANTIHYPERTEZIV_3R’ real
65
Příloha
Slovník lékařských pojmů Slovník lékařských pojmů ablace odstranění, eliminace tkáně. bolusově dávkově. disekce rozdělení. katetr zařízení, které lékař zavádí do nějakého dutého tělního orgánu. renální arterie ledvinná tepna.
67
E
Příloha
Seznam použitých zkratek Seznam použitých zkratek Ant Another Neat Tool. HR Heart Rate. NDA prohlášení o mlčenlivosti. NSIS Nullsoft Scriptable Install System. RDN renální denervace. TF Tepová frekvence.
69
F