MASARYKOVA UNIVERZITA PŘÍRODOVĚDECKÁ FAKULTA ÚSTAV MATEMATIKY A STATISTIKY. Bakalářská práce BRNO 2017 MARTIN DETTELBACHER

Podobné dokumenty
Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace.

Tabulkový procesor. Základní rysy

Velmi stručný návod jak dostat data z Terminálu Bloomberg do R

Opatření děkana č. 1/2012 Pokyny pro vypracování bakalářských, diplomových a rigorózních prací na Přírodovědecké fakultě MU

Programovací jazyk Pascal

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Úkol 12. Přemysl Bejda. 22. března SAS slouží pro statistiky, jeho využití není příliš flexibilní, protože v něm nelze psát vlastní procedury.

DATABÁZE MS ACCESS 2010

FUNKCE PRO ANALYTICKÉ ZPRACOVÁNÍ DAT

DATABÁZE A SYSTÉMY PRO UCHOVÁNÍ DAT 61 DATABÁZE - ACCESS. (příprava k vykonání testu ECDL Modul 5 Databáze a systémy pro zpracování dat)

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Vzorce. Suma. Tvorba vzorce napsáním. Tvorba vzorců průvodcem

Vzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec

Formulář pro křížový filtr

STATISTICA Téma 1. Práce s datovým souborem

Kontingenční tabulky v MS Excel 2010

Pro označení disku se používají písmena velké abecedy, za nimiž následuje dvojtečka.

Pokyny pro vypracování bakalářských, diplomových a rigorózních prací na Přírodovědecké fakultě MU

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica

Ovládání Open Office.org Calc Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako.

MODUL BIBLIOGRAFIE ASPI, a. s. 2006

Řešení. ŘEŠENÍ 36 Výsledková listina soutěže

Úvod do filtrace, Quick filtr

Řazení, filtrování a seskupování, vlastní zobrazení

Přehledy pro Tabulky Hlavním smyslem této nové agendy je jednoduché řazení, filtrování a seskupování dle libovolných sloupců.

Návod pro práci s SPSS

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

KAPITOLA 9 - POKROČILÁ PRÁCE S TABULKOVÝM PROCESOREM

UniLog-D. v1.01 návod k obsluze software. Strana 1

2. cvičení z ZI1 - Excel

RELAČNÍ DATABÁZE ACCESS

BALISTICKÝ MĚŘICÍ SYSTÉM

Zpravodaj. Uživatelská příručka. Verze

45 Plánovací kalendář

Práce se styly 1. Styl

Styly odstavců. Word Přiřazení stylu odstavce odstavci. Změna stylu odstavce

Práce s programem IIS Ekonom

Návod pro práci s aplikací

PROGRAMOVÁNÍ V SHELLU

Metodologie pro Informační studia a knihovnictví

36 Elektronické knihy

Návod - katalog. ANTEE s.r.o. - tel.: , fax: , helpdesk: ,

Zdokonalování gramotnosti v oblasti ICT. Kurz MS Excel kurz 6. Inovace a modernizace studijních oborů FSpS (IMPACT) CZ.1.07/2.2.00/28.

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

PRŮVODCE FORMÁLNÍMI ÚPRAVAMI DISERTAČNÍCH PRACÍ NA PŘÍRODOVĚDECKÉ FAKULTĚ MU

KAPITOLA 4 ZPRACOVÁNÍ TEXTU

Základní vzorce a funkce v tabulkovém procesoru

Obsah. 1.1 Práce se záznamy Stránka Dnes Kontakt se zákazníkem... 5


Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

zobrazuje názvy polí, vložené hodnoty jednotlivých záznamů, lze v něm zadávat data (přidávat záznamy) v návrhovém zobrazení:

Úvod do MS Access. Modelování v řízení. Ing. Petr Kalčev

MONITORING OBCHODNÍCH PARTNERŮ

Tiskové sestavy. Zdroj záznamu pro tiskovou sestavu. Průvodce sestavou. Použití databází

Metodologie pro Informační studia a knihovnictví 2

Registrační číslo projektu: Škola adresa: Šablona: Ověření ve výuce Pořadové číslo hodiny: Třída: Předmět: Název: MS Excel I Anotace:

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

Návod - katalog. ANTEE s.r.o. - tel.: , fax: , helpdesk: ,

Microsoft Office. Word hromadná korespondence

Dotazy tvorba nových polí (vypočítané pole)

Formátování pomocí stylů

Průvodce aplikací FS Karta

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Ukázka knihy z internetového knihkupectví

MAXScript výukový kurz

Zpracování náhodného výběru. Ing. Michal Dorda, Ph.D.

Postupy práce se šablonami IS MPP

PHP tutoriál (základy PHP snadno a rychle)

X37SGS Signály a systémy

Obrázek 1: Struktura programu z hlediska zapojení

1. Umístěte kurzor do sloupce Datový typ na řádek s polem, ve kterém vytvořit chcete seznam.

HROMADNÉ ÚPRAVY NAJÍT A NAHRADIT

Programy na PODMÍNĚNÝ příkaz IF a CASE

Manuál k programu EMSoftware

METODICKÉ LISTY. výstup projektu Vzdělávací středisko pro další vzdělávání pedagogických pracovníků v Sokolově

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Inovace výuky prostřednictvím šablon pro SŠ

1 Tabulky Příklad 7 Access 2010

MANUÁL K PROGRAMU JEDNODUCHÝ SKLAD (VER-1.2)

MODUL MUNI ASPI, a. s muni_manual.indd :57:23

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

Modul Zásoby IQ sestavy a jejich nastavení Materiál pro samostudium +1170

UŽIVATELSKÝ MANUÁL PERSONALIZACE MOJE SODEXO V

Manuál k programu RIZIKA

Assembler - 5.část. poslední změna této stránky: Zpět

Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN RESEARCH / DATA

Microsoft Access. Typy objektů databáze: Vytvoření a návrh nové tabulky. Vytvoření tabulky v návrhovém zobrazení

První krůčky se SAS Enterprise Miner 6.2. Zaškrtněte Personal Workstation a přihlašte se jako localhost\sasdemo.

ZŠ ÚnO, Bratří Čapků 1332

VISUAL BASIC. Práce se soubory

Webové stránky. 4. Tvorba základní HTML webové stránky. Datum vytvoření: str ánk y. Vytvořil: Petr Lerch.

Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN BASIC

OVLÁDÁNÍ PROGRAMU Obsah

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Tabulkový procesor otázka č.17

Transkript:

MASARYKOVA UNIVERZITA PŘÍRODOVĚDECKÁ FAKULTA ÚSTAV MATEMATIKY A STATISTIKY Bakalářská práce BRNO 2017 MARTIN DETTELBACHER

MASARYKOVA UNIVERZITA PŘÍRODOVĚDECKÁ FAKULTA ÚSTAV MATEMATIKY A STATISTIKY Popisná statistika v SASu Bakalářská práce Martin Dettelbacher Vedoucí práce: RNDr. Radim Navrátil, Ph.D. Brno 2017

Bibliografický záznam Autor: Název práce: Studijní program: Studijní obor: Vedoucí práce: Martin Dettelbacher Přírodovědecká fakulta, Masarykova univerzita Ústav matematiky a statistiky Popisná statistika v SASu Matematika Finanční a pojistná matematika RNDr. Radim Navrátil, Ph.D. Akademický rok: 2016/2017 Počet stran: ix + 66 Klíčová slova: Box plot; Datový soubor; Histogram; Charakteristiky polohy; Charakteristiky variability; Popisná statistika; Procedura; Průzkumová analýza dat; Q-Q plot; SAS; Sloupcový graf

Bibliographic Entry Author: Title of Thesis: Degree Programme: Field of Study: Supervisor: Martin Dettelbacher Faculty of Science, Masaryk University Department of Mathematics and Statistics Descriptive statistics in SAS Mathematics Financial and Insurance Mathematics RNDr. Radim Navrátil, Ph.D. Academic Year: 2016/2017 Number of Pages: ix + 66 Keywords: Bar chart; Box plot; Data set; Descriptive statistics; Exploratory data analysis; Histogram; Measures of central tendency; Measures of variability; Procedure; Q-Q plot; SAS

Abstrakt V této bakalářské práci se věnujeme popisu používání statistického a analytického softwaru SAS. Cílem práce je vytvořit učební text pro začínajícího uživatele tohoto softwaru. Nejprve jsou vysvětleny základy používání SASu, zejména vytváření datových souborů. Poté jsou ukázány užitečné způsoby manipulace s daty. Hlavní část této práce je pak zaměřena na popisnou statistiku a průzkumovou analýzu dat v SASu. Abstract In this Bachelor s thesis we describe the use of the statistical and analysis software SAS. The aim of the thesis is to create a self-learning text for a SAS beginner. First, basics of using the SAS are explained, particularly creation of data sets. Then, useful ways of data manipulation are presented. The main part of this thesis is focused on descriptive statistics and exploratory data analysis in SAS.

ří ě á Á í ÁŘ É Á ý Ú Ú č í á Ř Ú ý ř á í š í řá č ář á á í á á á á á í á í ří č í čí ď í íž é á é ěří ů ó ý čá í á é ó ú é č á í Í í Á Ý š ě á ÁŠ á á í á ě č é á í á á á í á ě í á í ť í á á ř Ú á

Poděkování Na tomto místě bych rád poděkoval svému vedoucímu bakalářské práce RNDr. Radimu Navrátilovi, Ph.D. za čas a úsilí věnované konzultacím a neprodlenému pročítání průběžných verzí této práce. Prohlášení Prohlašuji, že jsem svoji bakalářskou práci vypracoval samostatně s využitím informačních zdrojů, které jsou v práci citovány. Brno 30. května 2017.......................... Martin Dettelbacher

Obsah Úvod....................................................................... ix Kapitola 1. Základy používání SASu........................................ 1 1.1 Stručný popis prostředí a ovládání SAS Enterprise Guide 6.1.......... 1 1.2 Jazyk SASu............................................ 2 1.3 Procedury SASu........................................ 3 1.4 Dokumentace a nápověda SASu.............................. 4 Kapitola 2. Vytváření datových souborů..................................... 5 2.1 Vytváření datového souboru vstupem z klávesnice.................. 5 2.1.1 Vypisování datových souborů procedurou PRINT.............. 7 2.2 Ukládání datových souborů a práce s knihovnami.................. 8 2.2.1 Příkaz LIBNAME................................... 8 2.3 Načítání dat z externího souboru............................. 10 2.3.1 Příkaz INFILE...................................... 10 Kapitola 3. Manipulace s daty............................................... 13 3.1 Práce s proměnnými...................................... 13 3.1.1 Podmíněné definování proměnných........................ 14 3.1.2 Popisky (labels)..................................... 15 3.1.3 Úvod k formátům a informátům.......................... 15 3.2 Práce s pozorováními..................................... 19 3.3 Třídění dat procedurou SORT............................... 19 Kapitola 4. Popisná statistika v SASu........................................ 23 4.1 Klasifikace typů proměnných................................ 23 4.2 Popisné statistiky pro kvantitativní proměnné..................... 24 4.2.1 Charakteristiky polohy................................ 25 4.2.2 Charakteristiky variability.............................. 26 4.2.3 Charakteristiky tvaru rozdělení.......................... 27 4.2.4 Ostatní údaje ze základního výstupu procedury UNIVARIATE..... 27 4.2.5 Vybrané volby příkazu PROC UNIVARIATE................. 29 4.2.6 Příkazy CLASS, BY a ID.............................. 30 4.3 Jednorozměrná grafická analýza dat pro kvantitativní proměnné........ 31 vii

4.3.1 Histogram......................................... 32 4.3.2 Box plot.......................................... 36 4.3.3 Matice scatter plotů.................................. 41 4.3.4 Q-Q plot a P-P plot.................................. 43 4.4 Jednorozměrná analýza kvalitativních dat pomocí četnostních tabulek.... 48 4.4.1 Procedura FREQ.................................... 49 4.5 Grafická analýza kvalitativních dat............................ 55 4.5.1 Sloupcový graf..................................... 56 4.5.2 Koláčový graf...................................... 57 Úkoly k samostatnému procvičování......................................... 61 Závěr...................................................................... 64 Seznam použité literatury................................................... 65

Úvod SAS (Statistical Analysis System) je velice rozšířený software pro zpracování a analýzu dat, jehož vývoj byl započat na Severokarolínské státní univerzitě v USA již koncem 60. let minulého století, tedy v pomyslném pravěku počítačů. Příznačný je proto původní účel SASu měl sloužit k analýze dat ze zemědělství a tím přispět ke zvýšení výnosu plodin. Od té doby SAS prochází neustálým vývojem, díky kterému sice přibývají stále nové součásti softwaru a stále nové možnosti zpracování dat, ale s nimi se průběžně zvětšuje také složitost celého systému a s ní spojená složitost produktové dokumentace SASu, která bývá jedinou pomůckou začínajícího uživatele tohoto softwaru. Cílem této bakalářské práce je poskytnout podpůrný materiál právě uživateli, který je v používání SASu naprostým začátečníkem, což pro něj může ze zmíněné komplexnosti softwaru a jeho nápovědního systému učinit výraznou překážku při překonávání oné začátečnické fáze. První kapitola této práce je určena pro prvotní seznámení se SASem. Po stručném popisu uživatelského prostředí budou uvedeny důležité pojmy programu, příkazu a procedury SASu, přítomna budou rovněž základní syntaktická pravidla pro psaní programů. Tématem druhé kapitoly jsou datové soubory. Jakékoli zpracování dat v SASu je podmíněno vytvořením nebo načtením datového souboru, který představuje určitou formu či strukturu, v níž musejí data být, aby je SAS dovedl číst. Jedná se tak o ústřední pojem nejen této kapitoly, ale při používání SASu obecně. Ve třetí kapitole budou představeny různé způsoby, jakými lze manipulovat s daty či se samotným datovým souborem. Tato kapitola umožní čtenáři lépe pochopit programovací jazyk SASu a nabídne popis technik, které se při práci se SASem často používají a které budou využívány i v kapitole následující. Poslední kapitola je věnována konkrétním metodám průzkumu dat v SASu, a to jak pomocí číselných charakteristik, tak použitím grafických metod. Popis způsobů, jakými lze statistiky počítat a grafy vykreslovat v SASu, bude příležitostně doplňován statistickými definicemi, vysvětleními a interpretacemi. Na kapitolu navazují úkoly k samostatnému procvičovaní. Informační zdroje, které sloužily k napsání této bakalářské práce, zahrnují zejména jednotlivé součásti produktové dokumentace SASu (viz podkapitolu 1.4) a v začátcích byla díky své zábavné a nenáročné formě velmi nápomocná publikace [5]. V poslední kapitole jsme využívali i literaturu z oblasti statistiky, [2], [3], [6], [7], [8] a [16]. ix

Kapitola 1 Základy používání SASu Základní informace K napsání této práce sloužila verze SAS 9.4 softwaru SAS, respektive uživatelské rozhraní SAS Enterprise Guide 6.1 určené pro operační systém Windows. Jedná se o interaktivní klikací prostředí, v němž lze manipulovat s daty a zobrazovat výsledky i bez psaní příkazů. Na druhou stranu, práce se SASem prostřednictvím programovacího jazyka je univerzálnější přístup, nezávislý na konkrétním rozhraní. Proto je takový přístup volen i v této práci. V této kapitole si nejprve v krátkosti popíšeme uživatelské prostředí SAS Enterprise Guide 6.1 (dále jen SAS EG ), poté si ukážeme některé náležitosti příkazů a programů v SASu a nakonec upozorníme na velmi užitečnou produktovou dokumentaci. 1.1 Stručný popis prostředí a ovládání SAS Enterprise Guide 6.1 Grafické rozhraní SAS EG je v základním nastavení tvořeno třemi hlavními oblastmi. Jsou jimi Worskpace, Project Tree a Resources. Workspace je na obrázku 1.1 největší ze tří zobrazených oblastí. Je určena k vlastní práci s daty a s datovými soubory, zejména pak k psaní programů. Program začneme psát kliknutím na File - New - Program v hlavním menu na horní liště. Ve Workspace se aktivuje okno s editorem, do něhož se zadává zdrojový kód programu (jednoduchý zdrojový kód k vyzkoušení je např. v podkapitole 1.3). Jakmile je zdrojový kód připraven, program spustíme buď kliknutím na tlačítko Run v horní části okna s editorem, nebo klávesou F8. Tímto způsobem můžeme spouštět i dílčí části programu, dokonce i samostatné příkazy, jestliže je předtím obtáhneme myší (při psaní komplikovanějších programů bývá výhodné spouštět jen konkrétních úseky zdrojového kódu). Po spuštění programu se ve Workspace vedle záložky s oknem editoru objeví záložky s dalšími okny. Určitě přibude okno Log s podoknem Log Summary. Pokud spuštěný program generuje výsledky k vypsání, objeví se také okno Output Data, případně okno Results. 1

Kapitola 1. Základy používání SASu 2 Obrázek 1.1: Struktura SAS Enterprise Guide 6.1 Okno Log ukazuje (kromě jiných záznamů o aktuální relaci) chybová hlášení, varování a další informace spojené s programy, které jsme v SASu spustili. SAS EG přináší zjednodušení v podobě podokna Log Summary, kde je souhrn těch nejdůležitějších zpráv z okna Log včetně místa ve zdrojovém kódu, k němuž se zprávy vztahují (kliknutím na danou zprávu se místo zvýrazní). Okno Output Data zobrazuje výstupy spuštěných programů (např. vytvořený datový soubor). Okno Results slouží rovněž k zobrazování výstupu. Jde o relativně novou součást SASu, která možnosti vypisování výsledků rozšiřuje a výsledky přináší v graficky atraktivnějším formátu. Další ze tří hlavních oblastí je Project Tree (na obrázku 1.1 levé horní okno). Slouží k organizaci programů, dat a výsledků. Programy, které spolu souvisejí, je v SAS EG možné uložit do jednoho tzv. projektu. Výběrem položky Process Flow můžeme nahlédnout, jaké vztahy jsou mezi jednotlivými součástmi projektu, a dále projekt upravovat. Poslední hlavní oblast je v SAS EG označována jako Resources (na obrázku 1.1 levé dolní okno). Odtud je dostupná např. záložka Server List, kde najdeme aktivní knihovny (viz podkapitolu 2.2), nebo záložka Task List, pod níž se nachází seznam dostupných statistických funkcí, funkcí pro manipulaci s daty apod. 1.2 Jazyk SASu Již zmíněné programy jsou posloupnosti příkazů, pomocí nichž dáváme SASu instrukce, co má být vykonáno a v jakém pořadí. Příkazy se zadávají v jazyce SASu, který se jako každý

Kapitola 1. Základy používání SASu 3 (programovací) jazyk řídí danými pravidly. Seznam důležitých syntaktických pravidel pro psaní příkazů v SASu předkládáme níže: každý příkaz končí středníkem a začíná většinou klíčovým slovem, příkazy mohou na vstupu začínat v libovolném sloupci (nezáleží na odsazení), příkazy mohou být psány velkými či malými písmeny nebo kombinováním velkých a malých písmen, jeden příkaz může zabírat více řádků (přitom ale nesmí být žádné slovo rozděleno na dvě), více příkazů může stát na jednom řádku. Při psaní programů často pracujeme s názvy datových souborů, s názvy proměnných a dalších objektů. Tyto názvy musejí také splňovat určitá pravidla: nesmí obsahovat mezery, mohou obsahovat jeden až 32 znaků, první znak názvu musí být písmeno nebo podtržítko a následující znaky musejí být písmena, čísla nebo podtržítka, u názvů proměnných SAS nerozlišuje velká a malá písmena. Programy je možné doplňovat o komentáře, což jsou řetězce znaků ve zdrojovém kódu, jež SAS ignoruje a my je tak můžeme využít třeba k připsání vysvětlující poznámky (za tímto účelem budou používány i ve zdrojových kódech v této práci). Existují dva způsoby, jak komentář napsat: * zde je komentář; (komentář začíná hvězdičkou a končí středníkem), /* zde je komentář */ (komentář začíná lomítkem a hvězdičkou a končí hvězdičkou a lomítkem). Klíčová slova, textové řetězce, numerické hodnoty či komentáře se ve zdrojových kódech automaticky zabarvují danými barvami. Je vhodné si těchto barev pro kontrolu správné syntaxe všímat (červená barva značí problém). Správnému psaní příkazů v SAS EG navíc napomáhá našeptávač nabízející klíčová slova či názvy podobné zadávanému slovu. 1.3 Procedury SASu Programy SASu se skládají ze dvou hlavních částí z datových procedur (DATA steps) a vlastních procedur (PROC steps). Typický program začíná datovou procedurou, v níž je vytvořen (případně načten či upraven) datový soubor. S daty tohoto souboru následně mohou pracovat vlastní procedury, jejichž účelem je provádění různých analýz těchto dat (např. spočítání aritmetického průměru), aplikování funkcí na data (např. třídění dat), zobrazování výsledků (např. vypsání vytvořeného datového souboru) apod.

Kapitola 1. Základy používání SASu 4 Konkrétní podobu jednoduchého programu ilustrujme příkladem: DATA distance; Miles = 26.22; Kilometers = 1.61 * Miles; PROC PRINT DATA = distance; Datové procedury začínají klíčovým slovem DATA, za nímž následuje název vytvářeného datového souboru. Vlastní procedury začínají klíčovým slovem PROC, po němž zadáváme jméno konkrétní procedury. Procedura zpravidla končí, jakmile SAS narazí buď na novou proceduru (uvedenou slovem DATA či PROC), nebo na příkaz RUN. Poznámka 1.1. Výše uvedený program tedy sestává z jedné datové a jedné vlastní procedury. Datová procedura zde vytvoří datový soubor distance, v němž definuje proměnné Miles (přiřazením konstanty 26,22) a Kilometers (vynásobením hodnoty proměnné Miles číslem 1,61). Vlastní procedurou je zde procedura PRINT, která vytvořený datový soubor vypíše. Vytváření datových souborů i proceduře PRINT se věnujeme v kapitole 2. 1.4 Dokumentace a nápověda SASu K SASu existuje velmi rozsáhlá produktová dokumentace. Jde o nápovědní systém, který obsahuje veškeré informace potřebné k práci se SASem, zvláště popis a syntaxi příkazů či celých procedur a ukázkové programy. Kvůli komplexnosti SASu dokumentace obsahuje dohromady desetitisíce stran a zahrnuje spoustu samostatných dokumentů týkajících se různých produktů softwaru SAS a různých součástí programovacího jazyka SASu, což vyhledávání v dokumentaci mnohdy znesnadňuje. Dokumentace je dostupná online na webových stránkách společnosti SAS Institute (konkrétně na adrese https://support.sas.com/documentation). V menu na levé části stránky lze pod odkazem Documentation zvolit verzi softwaru (SAS 9.4) a do nabídnutého vyhledávacího pole zadat požadované heslo (např. data statement ). Pak zbývá z vyhledaných dokumentů, které zadané heslo obsahují, vybrat ten správný. Zvolenou součást dokumentace je obvykle možné stáhnout ve formátu PDF pro pohodlnější používání. V SAS EG je online dokumentace přístupná také přímo z uživatelského prostředí: V hlavním menu na horní liště vybereme Help - SAS on the Web - SAS Product Documentation. Během psaní programu se okna s relevantními částmi dokumentace zobrazují automaticky namířením kurzoru na libovolné klíčové slovo. Skrze záložku Help hlavního menu je přístupná také nápověda výhradně pro SAS EG (SAS Enterprise Guide Help) a další položky, které se mohou hodit nejen v začátcích práce se SASem. Součásti dokumentace, které přispěly k napsání této práce, jsou [1], [11], [12], [13], [14] a [15].

Kapitola 2 Vytváření datových souborů Základní informace Datový soubor v SASu si můžeme představit jako matici, v níž každý řádek (pozorování) nese informace o jednom pozorovaném objektu a každý sloupec (proměnná) obsahuje informace téhož typu vztahující se k jednotlivým pozorováním. Jednotlivé prvky této matice nazýváme datové hodnoty. Mohou jimi být hodnoty číselné, ale i textové řetězce. Ačkoli nás na datových souborech budou zajímat hlavně data samotná, pro úplnost dodejme, že součástí datového souboru jsou i záznamy o vlastnostech a názvech proměnných v tomto souboru, dále záznamy o počtu pozorování nebo o čase vytvoření (a případné úpravy) datového souboru. V této kapitole se naučíme datové soubory vytvářet, vypisovat a ukládat. 2.1 Vytváření datového souboru vstupem z klávesnice Na příkladu si nyní ukážeme, jak lze vytvořit jednoduchý datový soubor zadáním dat přímo z klávesnice, tj. bez načítání dat uložených v samostatném souboru. Následující tabulka srovnává výskyt obezity u dospělého obyvatelstva čtyř vybraných zemí (viz [10]): Obrázek 2.1: Vzor pro datový soubor V terminologii SASu jsou tedy proměnnými (variables) jednotlivé sloupce obsahující pro každou pozorovanou zemi po řadě její zkrácené označení (sloupec Code), běžný název (sloupec Country) a procentuální zastoupení obézních obyvatel starších osmnácti let v roce 5

Kapitola 2. Vytváření datových souborů 6 2010 (sloupec 2010) a v roce 2014 (sloupec 2014). Každý řádek tabulky sdružující veškeré hodnoty dat pro jednu pozorovanou zemi pak SAS nazývá pozorováním (observation). Program v SASu, který vytvoří datový soubor podle uvedené tabulky, bude vypadat např. takto: DATA obesity; (1) INPUT Code $ Country $20. _2010 _2014; (2) DATALINES; (3) CZE Czech Republic 25.3 26.8 (4) PRK North Korea 2.2 2.4 (4) SVK Slovakia 23.4 25.7 (4) USA United States 31.2 33.7 (4) ; (5) (6) Význam jednotlivých příkazů je popsán níže: (1) První klíčové slovo datové procedury slovo DATA říká, že se bude vytvářet datový soubor, v tomto případě s názvem obesity. (2) Klíčové slovo INPUT definuje názvy proměnných datového souboru obesity, čímž určuje i jejich počet. Znak dolaru $ za proměnnou Code indikuje, že tato proměnná obsahuje znakové řetězce a ne čísla. Z tohoto důvodu je znak $ i za proměnnou Country. Specifikace $20. zde navíc udává, že do proměnné Country povolujeme načítat textové řetězce délky nejvýše 20 znaků. 1 Bez upřesnění délky znakové proměnné by SAS do této proměnné načítal řetězce délky nejvýše osm znaků; delší řetězce by po osmi znacích usekl a zbývající úsek by se snažil načíst do dalších proměnných. Krom toho uvedené názvy států obsahují mezery, které implicitně slouží jako oddělovač datových hodnot. Bez upřesnění, že hodnoty proměnné Country mohou mít až 20 znaků, by tak SAS např. na řetězec United States pohlížel jako na dvě hodnoty United a States náležející různým proměnným. (3) Poslední příkaz datové procedury příkaz DATALINES signalizuje, že v následujícím příkazu budou již konkrétní hodnoty dat. (4) Jednotlivé hodnoty dat zadáváme tak, že píšeme jedno pozorování na jeden řádek. Hodnoty dat odpovídající různým proměnným oddělujeme mezerou. Přitom nezáleží na tom, kolika mezerami datové hodnoty oddělíme, jak je vidět na chaotickém zarovnání hodnot výskytu obezity. Pouze si musíme dát pozor, aby hodnoty nějaké proměnné ve zdrojovém kódu nezasahovaly do umístění vymezeného pro jinou proměnnou (např. proměnné Country jsme vymezili 20 znaků, takže číselné hodnoty proměnné _2010 musejí být dostatečně odraženy, aby nebyly načteny do proměnné Country). (5) Středník znamená konec vstupních dat. Všimněme si, že řádky dat vzájemně nejsou oddělené středníky. Všechna vstupní data se považují za jeden příkaz a středník následuje až za poslední načítanou hodnotou posledního pozorování. 1 Přesněji: textové řetězce nepřesahující (i s mezerami) 20 sloupců ve zdrojovém kódu.

Kapitola 2. Vytváření datových souborů 7 (6) Příkaz RUN vykoná všechny příkazy, které mu v dané proceduře předcházejí. Není chybou jej pro jistotu psát na konec každé procedury i v případech, kdy není nutný. Spuštěním programu se v jistém adresáři vytvoří požadovaný datový soubor, jenže se zavřením SASu se tento soubor automaticky smaže. Navíc bychom mohli požadovat nějaký atraktivnější náhled na vytvořený soubor (s možností náhled všelijak přizpůsobovat), než je automatický výpis v okně Output Data. Proceduru rozšiřující možnosti vypisování datových souborů si ukážeme vzápětí. Vytváření trvalých datových souborů se budeme věnovat později v podkapitole 2.2. 2.1.1 Vypisování datových souborů procedurou PRINT K vypisování datových souborů v různých formách se používá procedura PRINT. Tato procedura pracuje s daty z datových souborů již vytvořených datovou procedurou, takže v terminologii zavedené v podkapitole 1.3 je procedura PRINT vlastní procedurou. To znamená, že slovo PRINT v příkazu píšeme po klíčovém slově PROC. Právě vytvořený datový soubor proto vypíšeme příkazy PROC PRINT; V této základní formě procedura v okně Results zobrazí tabulku obsahující všechna pozorování a všechny proměnné naposledy vytvořeného datového souboru. K tomu ještě výstupní tabulka bude obsahovat sloupec Obs, v němž jsou pořadová čísla (indexy) jednotlivých pozorování. Vybrané volby příkazu PROC PRINT Výstup můžeme dále přizpůsobovat použitím voleb (options) příkazu PROC PRINT. Volby příkazů v SASu upravují chování příkazů, k nimž se vážou. Píšeme je za daný příkaz, oddělené bývají nejčastěji mezerou nebo lomítkem (závisí na syntaxi konkrétního příkazu). U příkazu PROC PRINT volby oddělujeme mezerami, takže např. PROC PRINT DATA=obesity NOOBS N; je jediný příkaz s volbami DATA=, NOOBS a N. Význam všech tří voleb uvádíme níže: DATA=datovy-soubor-SASu konkretizuje, jaký datový soubor chceme vypsat. Chceme-li při vytváření více datových souborů vypsat jiný než ten posledně vytvořený, je nutné tuto volbu použít. NOOBS zruší vypisování sloupce Obs s indexy pozorování do výstupní tabulky. N= text zobrazí spolu s datovým souborem (nebo jeho částí) také počet vypsaných pozorování. K tomuto číslu může být připsán i vysvětlující text, zadáváme jej v uvozovkách a k volbě N jej přiřadíme rovnítkem.

Kapitola 2. Vytváření datových souborů 8 Vybrané příkazy procedury PRINT Kromě jmenovaných voleb příkazu PROC PRINT můžeme výstup upravit i některými samostatnými příkazy, které v tomto kontextu používáme v rámci procedury PRINT (neplatí nutně pro příkaz TITLE): VAR seznam-promennych; vymezuje, které proměnné budou ve výstupní tabulce zahrnuty a v jakém pořadí. SUM seznam-numerickych-promennych; přidá do výstupní tabulky řádek se součty numerických proměnných uvedených v seznamu. TITLE text ; připíše text v uvozovkách do záhlaví strany s výstupní tabulkou (namísto implicitně vypisovaného titulku The SAS System ). Obsahuje-li text titulku apostrof, pak titulek vymezíme dvojitými uvozovkami. Příkaz TITLE nemusí být zrovna uvnitř vlastní procedury jde o tzv. globální příkaz, může být (se stejným výsledkem) použit kdekoli v programu. 2.2 Ukládání datových souborů a práce s knihovnami Knihovny SASu nejsou nic jiného než složky obsahující soubory, které SAS dokáže rozpoznat a používat. Umístěné bývají zpravidla na pevném disku uživatelova počítače a jejich smyslem je ukládat datové soubory či uživatelská nastavení a pomáhat tak organizovat práci. V prostředí SAS EG je možné na aktivní knihovny nahlédnout v oblasti Resources pod záložkou Server List (zde vybereme Servers - Local - Libraries). Ze základních knihoven, tj. těch, které jsou aktivní už při prvním spuštění SASu, je dobré vědět minimálně o knihovnách SASHELP a WORK. Knihovna SASHELP je mimo jiné užitečná tím, že v ní najdeme ukázkové datové soubory (sample data sets), jež mohou být třeba vhodným nástrojem pro osvojení si práce se SASem (později některých souborů z knihovny SASHELP budeme v této práci využívat). Knihovna WORK slouží implicitně jako úložiště naší práce. Pokud vytvoříme datový soubor a nesdělíme SASu, kam má tento soubor uložit, skončí právě v knihovně WORK. Jedná se však o knihovnu dočasnou její obsah je po skončení relace automaticky smazán, aby se v průběhu času v daném adresáři nehromadily nepotřebné soubory. Proto, chceme-li své datové soubory uložit jako trvalé, musíme je uschovat do jiné knihovny. V dalším si ukážeme, jak toho docílit pomocí příkazu LIBNAME. 2.2.1 Příkaz LIBNAME Příkaz LIBNAME je dalším globálním příkazem. Zavede propojení mezi zvolenou knihovnou SASu a názvem, 2 pomocí něhož se na knihovnu budeme odkazovat. 2 V SASu se tomuto názvu říká libref (library reference). Musí mít nejvýše osm znaků, začínat písmenem či podtržítkem a jeho zbývající znaky musejí být písmena, čísla nebo podtržítka.

Kapitola 2. Vytváření datových souborů 9 Syntaxe tohoto příkazu je LIBNAME nazev knihovna-sasu ; kde knihovna-sasu je námi zvolený adresář pro umístění trvalého datového souboru, který se chystáme vytvořit, a nazev je naše označení (přezdívka) pro tento adresář. Například příkazem LIBNAME mylib C:\Users\[Jmeno]\Desktop\SAS_cviceni ; 3 můžeme (předem vytvořenou) složku SAS_cviceni umístěnou na ploše definovat jako knihovnu, na niž se budeme odkazovat názvem mylib. Vytvoření trvalého datového souboru v definované knihovně se pak provede analogicky jako v podkapitole 2.1, kde vytvořený datový soubor nebyl trvalý. Pouze je nutné jméno souboru uvádět dvěma složkami oddělenými tečkou ve tvaru nazev.soubor (nazev je pojmenování knihovny, soubor je jméno datového souboru). Tím SASu říkáme, že datový soubor jménem soubor nemá skončit v implicitně používané dočasné knihovně WORK, nýbrž v adresáři (knihovně) s přiřazenou přezdívkou nazev. Příklad 2.1. Datový soubor obesity z minulé podkapitoly vytvořte jako trvalý ve vhodné knihovně. Soubor vypište s vynecháním sloupce s indexy řádků a s vynecháním nadbytečné proměnné Code. Výstup doplňte patřičným titulkem. Řešení. /* Jako knihovnu jménem mylib definujeme např. složku SAS_cviceni umístěnou na ploše */ LIBNAME mylib "C:\Users\[Jmeno]\Desktop\SAS_cviceni"; DATA mylib.obesity; INPUT Code $ Country $20. _2010 _2014; DATALINES; CZE Czech Republic 25.3 26.8 PRK North Korea 2.2 2.4 SVK Slovakia 23.4 25.7 USA United States 31.2 33.7 ; PROC PRINT DATA=mylib.obesity NOOBS; VAR Country _2010 _2014; TITLE Míra obezity ve vybraných zemích v letech 2010 a 2014 ; (Výstup viz obrázek 2.2.) Dodejme, že příkaz LIBNAME zde musí být na začátku (ač je globální). Definování knihovny MYLIB musí předcházet vytvoření souboru v této knihovně následujícím příkazem (definování knihovny musí předcházet jakémukoli odkazování na soubor z této knihovny). Spuštěním (celého) programu by se na ploše ve složce SAS_cviceni měl objevit soubor obesity.sas7bdat a v SASu by mezi aktivní knihovny měla přibýt knihovna MYLIB obsahující právě vytvořený soubor. 3 Adresáře lze uvádět i ve dvojitých uvozovkách.

Kapitola 2. Vytváření datových souborů 10 Obrázek 2.2: Výstup příkladu 2.1 Poznámka 2.2. Propojení s definovanou knihovnou trvá pouze po dobu aktuální relace. Po vypnutí a opětovném zapnutí SASu tudíž dříve definovaná knihovna nebude aktivní. Pro přístup SASu k souborům v této knihovně pomocí jména nazev.soubor je pak potřeba dané knihovně pomocí příkazu LIBNAME znovu nazev přiřadit. Poznámka 2.3. SAS interně přiřazuje dvousložkový název všem souborům i těm, které vytvoříme jednosložkovým názvem, tj. jako dočasné. Jak už víme, všechny takové soubory se (dočasně) ukládají v knihovně WORK a SAS proto datový soubor vytvořený pod jménem abc bude ve skutečnosti nazývat work.abc. Na tento soubor se pak můžeme odkazovat i jednosložkovým názvem abc, který sám o sobě značí, že jde o dočasný datový soubor z knihovny WORK. K výpisu uvažovaného souboru abc by tedy bez rozdílu vedly obě z možností PROC PRINT DATA=abc; a PROC PRINT DATA=work.abc; 2.3 Načítání dat z externího souboru Ruční vypisování datových hodnot do programu SASu nedává smysl při tvorbě větších datových souborů, kdy je výhodnější načíst data přímo z nějakého externího souboru. Nejjednodušší formou tohoto externího souboru s daty je textový soubor obsahující pouze text (v našem případě spíše data) bez formátovacích informací, tzv. prostý text. Takový soubor se vyznačuje tím, že ho můžeme vytvořit, upravit a číst jednoduchým textovým editorem (jako je např. Poznámkový blok pod Windows) a obvykle má formát TXT (přípona.txt) nebo CSV (přípona.csv). 2.3.1 Příkaz INFILE Jedním ze způsobů, jak data z popsaného vstupního souboru načíst, je identifikovat tento soubor pomocí příkazu INFILE se syntaxí INFILE nazev-souboru ; kde nazev-souboru znamená opět celý název včetně cesty k souboru. Příkaz uvádíme před příkazem INPUT uvnitř datové procedury, třeba takto: DATA braking; INFILE C:\Users\[Jmeno]\Documents\data\carstopping.txt ; INPUT Speed Distance;

Kapitola 2. Vytváření datových souborů 11 Názvy proměnných tedy definujeme stejně jako dříve příkazem INPUT, příkaz DATALI- NES při načítání dat z externího souboru neuvádíme. Nicméně takto zadaný příkaz předpokládá, že data jsou ve vstupním textovém souboru strukturována stejně, jako kdybychom je v rámci datové procedury zadávali ručně po příkazu DATALINES. V příkladu výše bychom např. potřebovali, aby soubor carstopping.txt obsahoval jen naměřené hodnoty proměnných Speed a Distance v tomto pořadí, zadané po řádcích a oddělené navzájem (alespoň jednou) mezerou. Často však vstupní soubor některý z těchto předpokladů nesplňuje a ke správnému načtení dat je pak nutné vlastnosti příkazu INFILE upravit volbami. Volby příkazu INFILE Mezi obvyklé volby příkazu INFILE patří: FIRSTOBS=cislo-pozorovani uvádí, od kolikátého pozorování ve vstupním souboru začne SAS načítat data (implicitně načítá od prvního řádku). Hodí se typicky v případě, kdy soubor s daty kromě datových hodnot obsahuje i záhlaví (např. s názvy proměnných), které načítat nechceme (názvy proměnných totiž definujeme příkazem INPUT). OBS=cislo-pozorovani udává, po kolikátý řádek ve vstupním souboru mají být data načítána. V kombinaci s volbou FIRSTOBS umožňuje načíst data v požadovaném rozsahu ze středu vstupního souboru. DELIMITER= znak(y) specifikuje znak (či seznam znaků), který ve vstupních datech hraje roli oddělovače (implicitně je oddělovačem mezera). Výhodné v situacích, kdy externími soubory s daty jsou CSV (comma-separated values) soubory, u nichž oddělovačem bývá nejčastěji čárka. Ještě popišme užitečný příkaz LENGTH, jímž je možné regulovat délku proměnných: LENGTH promenna-1 delka-1... promenna-n delka-n; přiřadí uvedeným proměnným zadané délky. Aby toto přiřazení délky bylo platné, musí příkaz v datové proceduře předcházet samotné deklaraci dané proměnné příkazem INPUT (případně musí předcházet příkazu SET, viz deklaraci proměnné v podkapitole 3.1). Je-li daná proměnná znaková, musíme to SASu opět sdělit symbolem $ (konkrétní použití viz příklad níže). Příklad 2.4. Mějme soubor rangers05.csv (viz [9]) se statistikami pěti nejproduktivnějších hráčů hokejového týmu New York Rangers v sezóně 2005 2006 (GP znamená počet odehraných zápasů, G počet vstřelených gólů, A počet asistencí, PTS počet bodů a PIM počet trestných minut, hráči jsou řazeni od nejproduktivnějšího): Name;Country;GP;G;A;PTS;PIM Jaromir Jagr;CZE;82;54;69;123;72 Michael Nylander;SWE;82;23;56;79;76 Martin Straka;CZE;82;22;54;76;42

Kapitola 2. Vytváření datových souborů 12 Martin Rucinsky;CZE;68;16;39;55;56 Petr Prucha;CZE;75;30;17;47;32 Vytvořte datový soubor rangers načtením dat ze souboru rangers05.csv tak, aby obsahoval statistiky pouze prvních tří nejproduktivnějších hráčů. Vypište výstup, v němž bude navíc celkový počet gólů a celkový počet bodů připadající na tyto tři hráče. Řešení. DATA rangers; INFILE C:\Users\[Jmeno]\Documents\hockey_stats\rangers05.csv DELIMITER= ; FIRSTOBS=2 OBS=4; LENGTH Name $20; INPUT Name $ Country $ GP G A PTS PIM; PROC PRINT; SUM G PTS; Obrázek 2.3: Výstup příkladu 2.4 Kdybychom opomněli příkaz LENGTH, jména hokejistů by se nenačetla správně. Délkou zřejmě přesahují implicitně povolených osm znaků, takže je třeba hodnotám proměnné Name povolit větší délku. Tentokrát toho však nedocílíme např. specifikací Name $16. v příkazu INPUT. Datové hodnoty ve vstupním souboru totiž nejsou strukturovány ve sloupcích a do proměnné Name by se načítalo 16 znaků ze vstupního souboru bez ohledu na oddělovače (první jméno by se načetlo jako Jaromir Jagr;CZE atd.). Z toho důvodu jsme nastavili maximální přípustnou délku jmen samostatným příkazem LENGTH, který respektuje oddělovače datových hodnot. Na závěr kapitoly dodejme, že pokud externí soubor s daty není jednoduchý soubor s prostým textem, nýbrž je jím tzv. binární soubor (XLS soubory programu MS Excel apod.), situace se příliš nezkomplikuje. Můžeme tento soubor buď exportovat do formátu CSV (je-li to možné) a následně ho načíst příkazem INFILE popsaným způsobem, nebo se dá přímo v SASu využít průvodce pro import dat výběrem položky Import Data na záložce File.

Kapitola 3 Manipulace s daty Základní informace V minulé kapitole jsme si ukázali vybrané způsoby vytváření datových souborů. V této kapitole si nastíníme alespoň základy toho, jak s datovými soubory zacházet, abychom se v příští kapitole už mohli věnovat popisné statistice a průzkumové analýze dat v SASu. 3.1 Práce s proměnnými Při manipulaci s proměnnými a pozorováními se často pracuje s již vytvořenými datovými soubory. Z toho důvodu nejprve popíšeme příkaz SET. Ten umožňuje načíst konkrétní datový soubor SASu, který poté můžeme dále upravovat. Použití příkazu je: DATA novy-datovy-soubor; SET datovy-soubor; [prikazy] Příkazem DATA takto vytvoříme soubor novy-datovy-soubor, který vznikne načtením souboru datovy-soubor pomocí příkazu SET a případnými úpravami tohoto souboru dalšími příkazy (pojmenujeme-li novy-datovy-soubor stejně jako datovy-soubor, bude datovy-soubor spuštěním programu přepsán). Ať už upravujeme existující datový soubor pomocí příkazu SET, nebo vytváříme úplně nový soubor, definování nové proměnné (i předefinování existující proměnné) s názvem promenna můžeme provést jednoduchým přiřazením uvnitř datové procedury ve formě promenna=vyraz; kde vyraz je konstanta, jiná proměnná nebo matematický výraz. Přitom konstanty zahrnují nejen čísla, ale i textové řetězce, jež musíme zadávat v uvozovkách např. kurak= ANO ;. Matematickým výrazem zase označujeme běžné aritmetické operace jako sčítání (operátor +), odčítání (operátor ), násobení (operátor *), dělení (operátor /) a umocňování (operátor **). SAS dodržuje pořadí těchto operací a závorkování, takže výsledkem přiřazení X=10*(4+3**2); je hodnota X=130 atd. 13

Kapitola 3. Manipulace s daty 14 Chceme-li naopak nějaké proměnné z datového souboru vymazat, můžeme využít dvojice podobných příkazů DROP a KEEP: DROP seznam-promennych; specifikuje proměnné, které budou vynechány ze vstupního datového souboru. KEEP seznam-promennych; specifikuje proměnné, které budou vypsány do výstupního datového souboru. Oba příkazy se používají v datové proceduře, neměly by se ale používat zároveň v rámci stejné procedury (vede k neočekávaným výsledkům). Příkaz KEEP se hodí, pokud počet proměnných, které chceme zahrnout do výstupního souboru, je podstatně menší než počet proměnných, které chceme vynechat. V opačném případě je výhodnější použít příkaz DROP. 3.1.1 Podmíněné definování proměnných Novou proměnnou můžeme rovněž definovat zadáním podmínky, jejíž splnění této proměnné přiřadí nějakou hodnotu. K tomu lze použít příkaz IF-THEN s obecnou syntaxí IF podminka THEN prikaz; nebo (je-li příkazů více) IF podminka THEN DO; prikaz-1; prikaz-2;. END; Konkrétní proměnnou promenna tímto způsobem tedy můžeme vytvořit příkazem uvnitř datové procedury ve tvaru IF podminka THEN promenna=vyraz; Podmínka má obecně tvar nazev-promenne vlastnost, kde ke stanovení požadované vlastnosti lze použít aritmetické a srovnávací operátory a jednotlivé podmínky se dají řetězit pomocí logických operátorů (viz tabulky 3.1 a 3.2). Jako příklad uveďme příkaz IF vek>=18 THEN plnoletost= ANO ; který na základě (už existující) proměnné vek vytvoří novou proměnnou plnoletost, jíž přiřadí hodnotu ANO pro každé pozorování s hodnotou věku alespoň 18. Máme-li navíc přirozený požadavek, aby proměnná promenna nabývala za různých podmínek různých hodnot, rozvětvíme přiřazení pomocí klíčového slova ELSE: IF podminka-1 THEN promenna=vyraz-1; ELSE IF podminka-2 THEN promenna= vyraz-2;. ELSE promenna=vyraz-jiny; Tato konstrukce je užitečná např. při definování proměnné, která má kategorizovat hodnoty jiné proměnné.

Kapitola 3. Manipulace s daty 15 Symbol Ekvivalentní zápis Význam Příklad & AND a (konjunkce) (a>b & c>d) nebo! OR nebo (disjunkce) (a>b OR c>d) ^ nebo ~ NOT negace NOT(a>b) Tabulka 3.1: Logické operátory SASu Symbol Ekvivalentní zápis Význam Příklad = EQ rovná se a=4 ^= nebo ~= NE nerovná se a NE 5 > GT větší než a>3 < LT menší než a<8 >= GE větší nebo rovno a>=4 <= LE menší nebo rovno a<=5 IN rovno některému prvku z výčtu a IN (3,4,5) Tabulka 3.2: Srovnávací operátory SASu 3.1.2 Popisky (labels) Labels slouží k úpravě popisků sloupců datového souboru. V základu jsou těmito popisky názvy odpovídajících proměnných. Ty jsou ovšem často zkratkami či složeninami názvů veličin, které představují (názvy proměnných nesmí obsahovat mezery apod.). Abychom sloupcům dali výmluvnější popisky, můžeme použít příkaz LABEL, jehož syntaxe je: LABEL promenna-1= label-1... promenna-n= label-n ; kde např. label-1 zastupuje v podstatě libovolný textový řetězec, jenž bude přiřazen jako popisek danému sloupci (smí obsahovat mezery a diakritická znaménka, může mít délku až 256 znaků). Příkaz LABEL je platný jak v datové proceduře, tak ve vlastních procedurách (jako je např. procedura PRINT). Nicméně je-li příkaz uvnitř datové procedury, budou definované popisky permanentně uloženy jako součást vytvářeného datového souboru, zatímco použití příkazu v rámci vlastní procedury má vliv jen na tuto proceduru (např. na výstup zobrazený procedurou PRINT). Právě popsaným příkazem LABEL však jenom spárujeme jednotlivé proměnné s příslušnými popisky. Chceme-li, aby se tyto popisky zobrazovaly namísto názvů proměnných ve výstupu procedury PRINT, musíme příkaz PROC PRINT zadat s volbou LABEL (např. PROC PRINT DATA=dotaznik LABEL;). 3.1.3 Úvod k formátům a informátům Formáty v SASu řídí podobu (formát), v jakém jsou vypisovány datové hodnoty, a informáty SASu naopak říkají, jak mají být datové hodnoty interpretovány při načítání do datového souboru.

Kapitola 3. Manipulace s daty 16 Informáty S informáty jsme se vlastně už setkali třeba když jsme v příkladu 2.1 na str. 9 příkazem INPUT definovali proměnnou Country, zapsali jsme: Country $20., kde $20. je informát, díky němuž SAS ví, že do proměnné Country má načítat 20 sloupců textového řetězce (každý název informátu obsahuje tečku, bez níž by informát byl chápán jako název proměnné a výsledkem by bylo chybové hlášení kvůli nepovoleným znakům v názvu). Informáty se tedy nejsnáze používají tak, že název příslušného informátu přidáme k názvu proměnné v příkazu INPUT. Existuje mnoho různých informátů a v této práci není možné podat jejich podrobný popis, ten lze najít v [11]. Zde jen naznačíme použití často užívaných informátů na konkrétním příkazu (informáty jsou zvýrazněny červeně): INPUT Name $10. Age 3. BirthDate MMDDYY10. (Score1 Score2) (4.1); (Uzávorkováním proměnných Score1 a Score2 a příslušného informátu bude tento informát použit při načítání každé z obou proměnných.) Informát 3. proměnné Age dává SASu instrukci k načítání tří sloupců (včetně případného znaku mínus či desetinné tečky) číselných hodnot (např. hodnota 10.5 bude načtena jako 10). Podobně informát 4.1 proměnných Score1 a Score2 zajišťuje načtení čtyř sloupců číselných hodnot tak, že z jedné poslední načtené cifry je učiněna desetinná cifra (např. hodnota 1 234 se načte jako 123.4, 1234 bude načteno jako 12.3 apod.). Pokud načítaná hodnota již obsahuje desetinná místa, pak je specifikace počtu desetinných cifer v názvu informátu ignorována (pro uvažovaný informát 4.1 se např. hodnota 1.275 načte jako 1.27). Proměnná BirthDate má informát MMDDYY10., jenž načítá kalendářní data zabírající deset sloupců a mající formu 10-31-2017 nebo 10/31/2017. Formáty Formáty proměnným přiřadíme příkazem FORMAT se syntaxí FORMAT promenna-1 format-1.... promenna-n format-n.; Podobně jako příkaz LABEL je příkaz FORMAT platný v datových i vlastních procedurách, tj. uvnitř datové procedury příkaz FORMAT přiřadí proměnným formáty trvalé (budou uloženy spolu s datovým souborem), kdežto umístěním příkazu do vlastních procedur budou ovlivněny jen tyto procedury (např. výstup zobrazený procedurou PRINT). Opět jen ukážeme, jak přiřazení formátů proměnným může vypadat v praxi (formáty jsou zvýrazněny červeně, stejně jako u informátů musí názvy formátů obsahovat tečky): FORMAT Profit Loss DOLLAR11.2 SaleDate DDMMYY8.; Na hodnoty proměnných Profit i Loss bude při výpisu aplikován formát DOLLAR11.2, který číselné hodnoty obou proměnných bude vypisovat se znakem dolaru ($) na začátku tak, že každé tři cifry oddělí čárkou a dvě desetinné cifry oddělí tečkou (hodnota 100 000 se vypíše jako $100,000.00 atd., pro správné vypsání je v tomto případě nutné, aby celková délka naformátované hodnoty včetně všech znaků nepřesahovala 11 sloupců kódu). Kalendářní data uložená v proměnné SaleDate budou pomocí formátu DDMMYY8. vypisována ve tvaru 31/10/17.

Kapitola 3. Manipulace s daty 17 Pro podrobnosti k formátům opět odkazujeme na [11]. Smyslem tohoto odstavce je hlavně popsat vytváření vlastních formátů, což je užitečná technika, bez níž bychom se ani v této práci později neobešli. Vytváření vlastních formátů Pomocí vlastních formátů je možné kódované či symbolické datové hodnoty na výstupu nahradit lépe interpretovatelnými hodnotami (tj. namísto hodnot 0 a 1 zobrazit řetězce muž a žena atd.). Vlastní formáty někdy mohou být i způsobem, jak kategorizovat hodnoty numerické proměnné bez nutnosti definovat novou proměnnou (srov. odstavec 3.1.1). Definování vlastních formátů umožňuje procedura FORMAT, jejíž obecná syntaxe je PROC FORMAT; VALUE nazev rozsah-1 = text-1 rozsah-2 = text-2. rozsah-n = text-n ; V tomto kódu nazev značí námi vybraný název pro formát, který vytváříme (nesmí se shodovat s názvem některého z předdefinovaných formátů). Je-li tento formát určen pro znaková data, pak musí nazev začínat symbolem $. Dále každý rozsah vymezuje hodnoty, kterým bude na výstupu přiřazen text v uvozovkách na pravé straně. Příklady možných způsobů vymezení rozsahu (a přiřazení textu) jsou: AU = Australie 1, 3, 5, 7, 9 = liche 65 - HIGH = seniori LOW -< 5000 = prestupek 0 <- HIGH = kladne OTHER = spatna data Znakové hodnoty musí být zadány v úvozovkách (viz AU ). Více hodnot lze do jednoho rozsahu zahrnout tak, že je navzájem oddělíme čárkami. Pro specifikaci intervalu se používá pomlčka (-), přičemž klíčová slova LOW a HIGH označují nejnižší a nejvyšší hodnotu proměnné, s níž bude vytvořený formát spojen. Znak < se dá při specifikaci intervalu použít k vynechání daného koncového bodu intervalu z rozsahu. Klíčovým slovem OTHER můžeme přiřadit formát všem zbývajícím hodnotám, které nepatří do žádného z dříve stanovených rozsahů. Jakmile je formát procedurou vytvořen, stačí jej pomocí příkazu FORMAT přiřadit proměnné, jejíž hodnoty chceme na výstupu nahradit naformátovanými hodnotami. Příklad 3.1. Uvažujme datový soubor zkouska, který má pro jednoduchost pouze pět pozorování. Jednotlivá pozorování představují jména studentů, počet jejich bodů z určité zkoušky a fakultu, na níž studují. Soubor byl vytvořen následujícím kódem: DATA zkouska; INPUT jmeno $ body fakulta $ @@;

Kapitola 3. Manipulace s daty 18 DATALINES; Petr 40 PF Tereza 65 ESF Jana 100 PF Pavla 55 ESF Jakub 70 FI ; Vytvořte vlastní formát, který místo počtů bodů vypíše známky, klasifikace je F: [0, 50), E: [50,60), D: [60,70), C: [70,80), B: [80,90), A: [90,100]. Dále vytvořte formát, který místo zkratek názvů fakult vypíše jejich celé názvy. Soubor zkouska vypište procedurou PRINT za použití vytvořených formátů. Řešení. PROC FORMAT; VALUE fmtznamek 0 - <50 = F 50 - <60 = E 60 - <70 = D 70 - <80 = C 80 - <90 = B 90-100 = A ; VALUE $fmtfakult PF = Přírodovědecká fakulta ESF = Ekonomicko-správní fakulta FI = Fakulta informatiky ; PROC PRINT DATA=zkouska NOOBS LABEL; FORMAT body fmtznamek. fakulta $fmtfakult.; LABEL jmeno= jméno body= známka ; Obrázek 3.1: Výstup příkladu 3.1 Stojí za povšimnutí, že jedinou procedurou FORMAT lze definovat více vlastních formátů a že i jména vlastních formátů je následně nutné u příkazu FORMAT psát s tečkami. Poznámka 3.2. SAS implicitně očekává, že každý řádek dat ve zdrojovém kódu představuje jediné pozorování. V části kódu ze zadání příkladu jsou však všechna pozorování na jediném řádku. Znaky @@ u příkazu INPUT SASu říkají, že má na každém řádku pokračovat v postupném načítání dat do proměnných jmeno, body a fakulta, dokud nedojde na konec řádku.

Kapitola 3. Manipulace s daty 19 3.2 Práce s pozorováními Už víme, jak se zbavit přebytečných proměnných. Mnohdy však potřebujeme v komplikovaných datových souborech odstranit také zbytečné řádky, respektive filtrovat datové soubory jen na ta pozorování, která nás zajímají. K tomu slouží příkaz WHERE se syntaxí WHERE podminka; Díky tomuto příkazu bude SAS filtrovat data pouze na ta pozorování, která vyhovují zadané podmínce. 1 Tato podmínka je výrok vzniklý užitím aritmetických, logických a srovnávacích operátorů (viz tabulky 3.1 a 3.2 na str. 15). Možné podoby příkazu WHERE tak jsou: WHERE Country IN ( CZE, SVK ); WHERE Salary/12<6000; WHERE Gender NE M AND Salary>=50000; Kromě dosud uvedených operátorů existují ještě srovnávací operátory použitelné výhradně s příkazem WHERE. Uvádíme je v tabulce 3.3. Zápis Význam Příklad BETWEEN-AND mezi (dvěma hodnotami) Salary BETWEEN 500 AND 1000 IS MISSING chybějící hodnota Job IS NOT MISSING CONTAINS obsahuje (textový řetězec) Job CONTAINS Manag LIKE jako (vzor textového řetězce) Name LIKE _o%n 2 Tabulka 3.3: Operátory příkazu WHERE Příkaz WHERE také patří k příkazům platným v datových i vlastních procedurách (uvnitř datové procedury přímo změní právě vytvářený datový soubor ponecháním jen těch pozorování, která splňují podmínku, v rámci vlastní procedury takto ovlivní jen výstup této procedury). Poznámka 3.3. Filtrovat řádky lze např. i pomocí již popsaného příkazu IF-THEN v kombinaci s příkazem DELETE pro smazání pozorování (nezaměňovat s příkazem DROP pro smazání proměnné). Použití příkazů WHERE a IF-THEN (DELETE) v tomto kontextu sice není ekvivalentní (mj. proto, že příkaz IF-THEN je platný pouze v datových procedurách), ale např. následující příkazy v datové proceduře povedou ke stejnému výsledku: IF vek<18 THEN DELETE; a WHERE vek>=18; 3.3 Třídění dat procedurou SORT Třídění se může hodit ať už kvůli lepší organizaci dat, tak i proto, že setříděná data jsou nutným předpokladem některých dalších příkazů a procedur SASu. Úlohu třídění dat řeší procedura SORT, kterou používáme ve tvaru 1 Avšak příkaz WHERE nelze použít k filtrování řádků z externího souboru s daty (viz příkaz INFILE), ani jej nelze použít v rámci stejné datové procedury, v níž zadáváme data příkazem DATALINES. 2 Znak (%) nahrazuje libovolný počet písmen, znak (_) znázorňuje právě jedno písmeno. Uvedenému řetězci tak vyhovují např. jména John nebo Logan.

Kapitola 3. Manipulace s daty 20 PROC SORT; BY promenna-1... promenna-n; Datový soubor tedy můžeme třídit podle více proměnných jak číselných, tak znakových (abecední třídění). V takovém případě SAS řádky setřídí podle první uvedené proměnné, pak pozorování se stejnou hodnotou první proměnné setřídí podle druhé specifikované proměnné atd. Data mohou být tříděna vzestupně (resp. podle abecedy) nebo sestupně (resp. od konce abecedy). Implicitně SAS data třídí vzestupně. Požadujeme-li sestupné třídění, sdělíme to SASu klíčovým slovem DESCENDING před každou proměnnou, podle níž chceme třídit sestupně. Třeba následující procedura setřídí datový soubor cities abecedně podle názvu státu tak, že názvy měst příslušejících stejnému státu budou tříděny od konce abecedy: PROC SORT DATA=cities; BY state DESCENDING city; Z tohoto příkladu je také vidět, že ke specifikaci datového souboru, na němž má být procedura vykonána, použijeme již známou volbu DATA=datovy-soubor-SASu (není-li volba specifikována, pak SAS příkazy aplikuje na posledně vytvořený datový soubor). Další užitečnou volbou příkazu PROC SORT je OUT=datovy-soubor-SASu udává název výstupního datového souboru, který vznikne setříděním vstupního souboru. Pokud volba chybí, bude vstupní soubor procedurou nahrazen setříděným souborem (tj. v uvedeném příkladu bude soubor cities nahrazen setříděným). Na následujícím příkladu ukážeme, jak může použití metod popsaných v této kapitole vypadat v praxi. Příklad 3.4. V knihovně SASHELP najdeme ukázkový datový soubor sashelp.heart. Nachází se v něm zdravotní údaje více než 5 000 obyvatel Farminghamu (data pocházejí z Farminghamské studie srdce). Na obrázku níže přikládáme náhled na první tři pozorování a vybrané proměnné datového souboru. Obrázek 3.2: Ukázkový datový soubor sashelp.heart a) Vytvořte ve vlastní knihovně datový soubor study jako kopii souboru sashelp.heart. Vytvořený soubor zkontrolujte v okně Output Data.

Kapitola 3. Manipulace s daty 21 b) V souboru study ponechte pouze lidi, kteří jsou živí a u nichž jsou známé údaje o cholesterolu a kouření. Upravte proměnné Height a Weight tak, aby výška lidí byla udána v centimetrech a tělesná hmotnost v kilogramech (výchozími jednotkami jsou zřejmě palce, resp. libry). Upraveným proměnným přiřaďte vhodné popisky. Dále odstraňte proměnné Status, DeathCause, AgeCHDdiag, AgeAtDeath a MRW a definujte proměnnou BMI, která pro každého člověka bude obsahovat jeho body hmotnost (kg) mass index (počítá se podle vztahu BMI = ). Vzniklý soubor vypište, [výška (m)] 2 jako názvy sloupců tabulky na výstupu použijte labels (jsou-li definované). c) Vytvořte proměnnou St_ohrozeni, která každého člověka zařadí do jedné ze tří skupin podle míry jeho ohrožení na životě. Lidé s vysokým cholesterolem a vysokým krevním tlakem, kteří kouří více než 15 cigaret denně a mají BMI větší než 30, patří do skupiny 3. Naopak nekuřáci se zdravou hladinou cholesterolu, s optimálním nebo normálním tlakem a hodnotou BMI v rozmezí 18,5 až 25 spadají do skupiny 1. U všech zbývajících lidí je stupeň ohrožení 2. d) Získaný datový soubor seřaďte tak, aby výsledný soubor obsahoval nejdříve všechna pozorování týkající se žen a poté všechna pozorování týkající se mužů. Lidi stejného pohlaví řaďte od největšího stupně ohrožení. Konečně lidi stejného pohlaví se stejným stupněm ohrožení seřaďte sestupně podle hodnot proměnné AgeAtStart. Setříděný soubor uložte pod názvem study2 a vypište jej pomocí procedury PRINT. Řešení. /* a) Vytvoření dat. souboru study načtením souboru sashelp.heart */ LIBNAME lib C:\SAS_priklady ; DATA lib.study; SET sashelp.heart; /* b) (Datový soubor následujícími úpravami přepíšeme) */ DATA lib.study; SET lib.study; WHERE Status= Alive AND Cholesterol IS NOT MISSING AND Smoking IS NOT MISSING; /* (palec=2,54 cm, libra=0,454 kg) */ Height=Height*2.54; Weight=Weight*0.454; LABEL Height= Výška v centimetrech Weight= Hmotnost v kilogramech ; DROP Status DeathCause AgeCHDdiag AgeAtDeath MRW; BMI=Weight/(Height/100)**2; PROC PRINT DATA=lib.study NOOBS LABEL;

Kapitola 3. Manipulace s daty 22 /* c) Vytvoření proměnné St_ohrozeni (datový soubor nyní úpravami nebudeme přepisovat) */ DATA lib.study1; SET lib.study; IF Chol_Status= High AND BP_Status= High AND Smoking>15 AND BMI>30 THEN St_ohrozeni=3; ELSE IF Chol_Status= Desirable AND BP_Status IN ( Optimal, Normal ) AND Smoking=0 AND 18.5<=BMI<=25 THEN St_ohrozeni=1; ELSE St_ohrozeni=2; /* d) Setřídění a uložení setříděných dat do souboru study2 a kontrola výstupu */ PROC SORT DATA=lib.study1 OUT=lib.study2; BY Sex DESCENDING St_ohrozeni DESCENDING AgeAtStart; PROC PRINT DATA=lib.study2; Závěrem kapitoly zmiňme proceduru CONTENTS. Její funkcí je vypsání podrobných informací o datovém souboru specifikovaném znovu volbou DATA=datovy-soubor- SASu: PROC CONTENTS DATA=datovy-soubor-SASu; Spuštěním této jednoduché procedury můžeme u příslušného datového souboru mj. zjistit typ a délku všech proměnných, popisky a formáty těchto proměnných (v případě, že byly definovány jako trvalé, tj. v datové proceduře), celkový počet pozorování a proměnných souboru i další informace, které bychom při práci s datovým souborem mohli potřebovat.

Kapitola 4 Popisná statistika v SASu Základní informace Tato kapitola se zaměřuje na některé prostředky popisné statistiky a průzkumové analýzy dat v SASu. Popisná statistika se snaží zhustit informace obsažené ve velkém počtu dat do snadněji vnímatelné formy různých číselných charakteristik, grafů a tabulek. V průzkumové analýze dat se vyšetřují statistické zvláštnosti dat, jako jsou tvarové zvláštnosti rozdělení dat či přítomnost podezřelých hodnot. Odhalují se také odchylky rozdělení výběru od typického rozdělení, obyčejně normálního. Provedení průzkumové analýzy dat je tedy důležité proto, abychom se později vyvarovali neadekvátního použití statistických metod. Tato odvětví statistiky nelze striktně oddělit, obě zahrnují obrovské množství metod a postupů a v této práci se tak omezíme jen na nejzákladnější způsoby průzkumu (převážně) jednorozměrných dat v SASu. 4.1 Klasifikace typů proměnných Proměnné se ve statistice dají klasifikovat více způsoby podle různých kritérií. S ohledem na dva základní typy proměnných v SASu (numerické a znakové proměnné) budeme v této kapitole, inspirováni knihou [7], používat poněkud zjednodušené dělení analyzovaných proměnných na kvalitativní a kvantitativní. Pod kvalitativními proměnnými budeme rozumět nominální i ordinální proměnné. Nejnižší úroveň měření mají nominální proměnné, neboť při srovnání dvou jednotek z hlediska jejich hodnot nominální proměnné můžeme pouze zjistit, zda jsou shodné či odlišné. Pro případ více než dvou jednotek lze ještě určit absolutní nebo relativní četnosti jednotek se stejnými variantami nominální proměnné, ale z hlediska statistických možností analýzy dat je to nejslabší možnost. Vyšší úroveň měření mají ordinální proměnné. Stejně jako nominální proměnné jsou i ordinální proměnné svou podstatou kvalitativní (význam variant lze nejlépe popsat slovním výkladem). Oproti nominálním proměnným však lze jednotky uspořádat podle obsahového významu variant od nejnižší (nejhorší) varianty k nejvyšší (nejlepší) variantě. Ordinální proměnnou může být např. kvalifikační třída 23

Kapitola 4. Popisná statistika v SASu 24 pracovníka, kdy třeba druhá kvalifikační třída je vyšší než první, ale není možné vypočítat či změřit, o kolik je vyšší. Kvantitativní proměnné pak umožňují nejen jednotky uspořádat podle velikosti hodnot této proměnné, ale navíc i smysluplně určit rozdíly mezi jednotlivými hodnotami. Pro tyto proměnné má tedy smysl otázka, o kolik se porovnávané jednotky od sebe liší. Proměnné jako krevní tlak, váha, věk, ale i počet přistěhovaných osob či narozených dětí jsou typické příklady kvantitativních proměnných. 4.2 Popisné statistiky pro kvantitativní proměnné Velmi účinným nástrojem pro popisnou statistiku a průzkumovou analýzu dat je v SASu procedura UNIVARIATE. V základní podobě proceduru voláme příkazy PROC UNIVARIATE; VAR seznam-numerickych-promennych; Po spuštění tato procedura na výstup v okně Results automaticky vypíše sumarizační tabulky s popisnými statistikami zvlášť pro každou numerickou proměnnou, která je uvedena příkazem VAR (chybí-li příkaz VAR, pak procedura výčty popisných statistik vypíše pro každou numerickou proměnnou z daného datového souboru). Možnosti procedury budeme demonstrovat na příkladu. Podstatnou částí kapitoly nás bude provázet již známý ukázkový datový soubor sashelp.heart, s nímž jsme pracovali v příkladu 3.4 na str. 20. Podobně jako v tomto příkladu ze souboru sashelp.heart nejprve vytvoříme nový soubor study tak, že převedeme jednotky výšky lidí z palců na centimetry a jednotky hmotnosti lidí z liber na kilogramy (kvůli interpretaci): DATA study; SET sashelp.heart; Height=Height*2.54; Weight=Weight*0.454; Datového souboru study budeme využívat spíše v podkapitole 4.3, nicméně může posloužit i k seznámení se s popisnými statistikami, jež procedura UNIVARIATE počítá a jimiž se budeme zabývat v příštích odstavcích. Typickým zástupcem kvantitativní proměnné je v tomto souboru např. proměnná Height, tedy výška sledovaných lidí. Můžeme zkusit proceduru aplikovat právě na tuto proměnnou: PROC UNIVARIATE DATA=study; WHERE Sex= Male ; VAR Height; Poznámka 4.1. Upřesněme, že zdrojový kód výše vypíše statistiky ohledně výšek mužů výšky mužů a žen se obecně liší, a je proto vhodnější podobné analýzy provádět odděleně. Všimněme si také známé volby DATA=datovy-soubor-SASu, která je použitelná pro většinu

Kapitola 4. Popisná statistika v SASu 25 vlastních procedur. Jelikož význam volby je vždy stejný, v dalším se u ní už nebudeme pozastavovat. Implicitním výstupem procedury jsou tabulky Moments, Basic Statistical Measures, Tests for Location, Quantiles a Extreme Observations. Informace z těchto tabulek lze v zásadě rozdělit na charakteristiky polohy, charakteristiky variability, charakteristiky tvaru rozdělení a ostatní údaje. V následujících odstavcích budou tyto součásti výstupu procedury popsány. Poznámka 4.2. Jednotlivé charakteristiky polohy, variability či tvaru rozdělení, kterým se budeme dále věnovat, jsou dány jako funkce konkrétních datových hodnot (přičemž rozdělení dat není předem známé). Proto pod názvy jako medián, modus, rozptyl atd. rozumíme vždy výběrové verze těchto charakteristik. 4.2.1 Charakteristiky polohy Charakteristiky polohy udávají hodnotu, kolem které se pozorované hodnoty dané veličiny shromažďují. Základní výstup procedury UNIVARIATE nabízí následující charakteristiky polohy: Mean je aritmetický průměr počítaný jako x = 1 n n i=1 x i, kde n je počet nechybějících hodnot proměnné a x i je i-tá hodnota proměnné. Průměr je maximálně věrohodným odhadem střední hodnoty normálního rozdělení, nicméně hodnota průměru je poměrně náchylná na ovlivnění extrémními hodnotami dané veličiny. Z toho důvodu je průměr užitečný tehdy, když rozdělení dat je symetrické a odlehlé hodnoty se nevyskytují. Median (medián) představuje hodnotu x, která uspořádané datové hodnoty x 1,x 2,...,x n dělí na dva stejně početné díly. Přitom nezáleží na konkrétních hodnotách prvních ani posledních členů uspořádaného souboru datových hodnot, tudíž medián není tak citlivý na extrémní hodnoty jako průměr (je robustní statistikou). Pro asymetrická data (typicky analýza příjmů na osobu) je tak medián lépe vypovídajícím měřítkem centrální tendence. Medián můžeme zobecnit na číslo x α, α (0,1), které rozděluje uspořádaná data na dolní úsek obsahující alespoň podíl α všech dat a na horní úsek obsahující alespoň podíl 1 α všech dat. Číslo x α se nazývá (výběrový) α-kvantil, procedura UNIVARIATE vybrané kvantily vypisuje v tabulce Quantiles a implicitně je počítá standardním způsobem: Je-li α (0,1), pak (výběrový) α-kvantil je dán vztahem { x x α = ( nα +1) nα nα 1 2 (x (nα) + x (nα+1) ) nα = nα. Pro medián platí x = x 0,5, dalšími význačnými kvantily jsou dolní kvartil x 0,25, který odděluje čtvrtinu nejmenších prvků, a horní kvartil x 0,75, jenž odděluje 75 % menších prvků od 25 % největších. Poznámka 4.3. V tabulce Quantiles na výstupu procedury je použito percentilové značení, α-kvantilu odpovídá percentil 100 α. Dále pro výpočet kvantilů lze použít pět různých

Kapitola 4. Popisná statistika v SASu 26 definic. Konkrétní definici vybereme volbou PCTLDEF=n příkazu PROC UNIVARIATE, kde n označuje některé z čísel 1 až 5 pro odpovídající definici (viz [1, str. 395] pro podrobnosti). Mode (modus) je nejčetnější hodnotou v datech. Je použitelný pro všechny typy proměnných, ale smysl má zejména tehdy, kdy je počet skutečně se vyskytujících hodnot podstatně menší než rozsah souboru (to zpravidla platí spíše pro kvalitativní data). Modus zřejmě nemusí být určen jednoznačně. Existuje-li více nejčetnějších hodnot sledované proměnné, procedura UNIVARIATE vypíše jen tu nejnižší. Zadáme-li příkaz PROC UNIVARIATE s volbou MODES, pak budou vypsány všechny mody dané proměnné včetně příslušných četností (avšak jsou-li všechny hodnoty proměnné unikátní, pak se tabulka s mody nezobrazí). 4.2.2 Charakteristiky variability Charakteristiky variability popisují velikost kolísání hodnot zkoumané veličiny kolem nějaké její míry polohy nebo velikost jejich vzájemné rozdílnosti. V základním výstupu procedury UNIVARIATE jsou zastoupeny následující charakteristiky variability: Variance (rozptyl) vyjadřuje míru rozptýlení datových hodnot kolem průměru. Procedura jej implicitně počítá podle vztahu s 2 = d 1 n i=1 (x i x) 2, kde d = n 1 (kdybychom požadovali d = n, je možné toho docílit volbou VARDEF=N příkazu PROC UNI- VARIATE). Podobně jako průměr je i rozptyl citlivý na extrémní hodnoty. 1 d n i=1 (x i x) 2, Std Deviation je směrodatná odchylka, tedy odmocnina z rozptylu: s = pro číslo d zde platí totéž, co bylo řečeno pro rozptyl. Směrodatná odchylka se obvykle volí za míru variability místo rozptylu, protože je vyjádřena ve stejných jednotkách jako hodnoty zkoumané proměnné a nikoli ve čtvercích užité jednotky. Coeff Variation označuje koeficient variace. Na výstupu procedury je dán v procentech: CV = x s 100% a udává, kolika procent průměru dosahuje směrodatná odchylka. Je proto vhodným ukazatelem při srovnávání variability různých proměnných. Koeficient variace má obyčejně smysl pouze pro kvantitativní veličiny tzv. poměrového typu, 1 neboť nabývají nezáporných hodnot. Interquartile Range (kvartilové rozpětí) udává rozdíl mezi horním a dolním kvartilem, tj. q = x 0,75 x 0,25. Výhodou této statistiky je, že podobně jako medián zřejmě není citlivá na extrémní hodnoty. Range (rozpětí) se počítá jako rozdíl mezi největší a nejmenší pozorovanou hodnotou sledované veličiny, což z něj činí statistiku velice náchylnou na odlehlé hodnoty, zato však snadnou pro výpočet. 1 Veličiny, pro něž existuje přirozený počátek, ke kterému jsou vztahovány všechny další hodnoty. Kupříkladu teplota, u níž význam nuly závisí na použité stupnici, není veličinou poměrového typu, zatímco hmotnost nebo délka jsou veličinami poměrového typu.

Kapitola 4. Popisná statistika v SASu 27 Std Error Mean je odhad směrodatné odchylky průměru zkoumané veličiny. Jedná se tedy o charakteristiku variability průměru a počítá se vydělením směrodatné odchylky druhou odmocninou počtu pozorovaných hodnot dané proměnné: s x = s n. Corrected SS je součet n i=1 (x i x) 2 čtverců vzdáleností datových hodnot od jejich průměru. 4.2.3 Charakteristiky tvaru rozdělení Procedura UNIVARIATE na svůj základní výstup vypisuje také hodnoty (výběrové) šikmosti a špičatosti, které charakterizují tvar křivky rozdělení sledované kvantitativní proměnné. Skewness (šikmost) měří míru a směr asymetrie kolem průměru daného rozdělení. Procedura UNIVARIATE šikmost počítá jako α 3 = ( n (n 1)(n 2) n xi x) 3, i=1 s případně α 3 = n 1 ( n xi x) 3, i=1 s jestliže zadáme zmíněnou volbu VARDEF=N. Symetrická rozdělení, jako je např. normální rozdělení, mají nulovou šikmost (v praxi šikmost blízkou nule). Kladná (záporná) šikmost poukazuje na častější výskyt odlehlejších hodnot vpravo (vlevo) od průměru a na větší kumulaci hodnot v levém (pravém) okolí průměru, tj. rozdělení má delší pravý (levý) chvost. Histogram pro data s kladnou šikmostí ukazuje obrázek 4.2 na str. 36. Je snadné si rozmyslet podobu histogramu (resp. křivky hustoty pravděpodobnosti) pro záporně zešikmená data. Kurtosis (špičatost) přináší informaci o tom, jakým způsobem jsou hodnoty proměnné koncentrovány kolem jejího průměru. Procedura UNIVARIATE špičatost implicitně počítá podle vztahu α 4 = n(n+1) ( (n 1)(n 2)(n 3) n xi x) 4 i=1 s 3(n 1) 2 (n 2)(n 3), respektive α 4 = n 1 ( n xi x) 4 i=1 s 3 s volbou VARDEF=N. Odečtení čísla 3 či výrazu limitně jdoucího k 3 v předešlém vztahu má za následek nulovou špičatost (v praxi špičatost blízkou nule) pro normálně rozdělená data. Záporná špičatost pak indikuje, že data pocházejí z rozdělení s lehčími chvosty, tj. z rozdělení, jež má méně odlehlých hodnot (a tyto hodnoty jsou méně extrémní) než normální rozdělení. Naopak kladná špičatost napovídá, že data pocházejí z rozdělení s těžšími chvosty s výraznějšími a častějšími odlehlými hodnotami, než je typické pro normálně rozdělená data. Dále v [8, str. 52] je uvedeno, že relativně dlouhé či těžké chvosty jsou obyčejně doprovázeny vyšší koncentrací hodnot okolo střední hodnoty daného rozdělení, a tedy špičatějším tvarem tohoto rozdělení (odtud název špičatost). Tamtéž je pojem špičatosti shrnut konstatováním, že vysoká špičatost odráží zvýšenou koncentraci hodnot okolo střední hodnoty daného rozdělení, nebo těžké chvosty, nebo obojí. 4.2.4 Ostatní údaje ze základního výstupu procedury UNIVARIATE Pro úplnost nejprve popišme význam zbývajících informací z tabulky Moments na výstupu procedury:

Kapitola 4. Popisná statistika v SASu 28 N vyjadřuje počet nechybějících pozorování pro zkoumanou proměnnou. Poznámka 4.4. Procedura UNIVARIATE při počítání popisných statistik proměnných uvedených příkazem VAR zcela vynechává chybějící hodnoty. Přitom je ale každá proměnná zpracovávána samostatně, takže chybějící hodnota pro jednu ze zkoumaných proměnných neovlivní výpočty pro ostatní proměnné. Sum Weights je součet vah. V rámci procedury UNIVARIATE totiž můžeme příkazem WEIGHT specifikovat číselnou proměnnou, která bude mít roli vektoru vah pro zkoumanou proměnnou (ostatní uvedené statistiky pak budou počítány jako vážené, podrobnosti lze najít v [1, str. 381]). Bez této specifikace má každá hodnota sledované proměnné váhu 1 a hodnota Sum Weights se pak rovná počtu nechybějících pozorování dané proměnné. Sum Observations je prostý součet n i=1 x i pozorovaných hodnot zkoumané proměnné. Uncorrected SS představuje součet n i=1 x2 i čtverců pozorovaných hodnot zkoumané proměnné. Zbývají tři tabulky základního výstupu procedury UNIVARIATE, jejichž údaje dosud nebyly popsány tabulky Extreme Observations, Tests for Location a Missing Values. Tabulka Extreme Observations zobrazuje seznam pěti nejmenších a pěti největších hodnot zkoumané proměnné včetně indexu pozorování, kterému tyto hodnoty odpovídají. Předmětem tabulky Tests for Location jsou tři testy o parametru polohy µ 0 sledované veličiny, a sice jednovýběrový t-test (Student s t), znaménkový test (Sign) a jednovýběrový Wilcoxonův test (Signed Rank). Ke každému testu se vypisují příslušné hodnoty testových statistik a p-hodnoty pro test hypotézy H 0 : µ 0 = 0 proti oboustranné alternativě, přitom parametr µ 0 má význam střední hodnoty v případě t-testu a mediánu v případě zbývajících testů. Jinou hodnotu µ 0 pro nulovou hypotézu můžeme specifikovat volbou MU0=hodnota příkazu PROC UNIVARIATE. Pro bližší informace k těmto testům viz např. [2] a [1] (formální náležitosti testů se v obou případech mírně liší). Tabulka Missing Values nese informace o chybějících hodnotách zkoumané proměnné. Pokud tato proměnná nemá žádné chybějící hodnoty, tabulka se na výstup nevypíše. Poznámka 4.5. Jednotlivé součásti výstupu procedury UNIVARIATE můžeme vypsat samostatně zadáním příkazu ODS SELECT nazev-tabulky; před začátek procedury. Implicitně vypisované tabulky se dají samostatně volat svými názvy Moments, BasicMeasures, TestsForLocation, Quantiles a ExtremeObs (názvy dalších částí výstupu procedury lze najít v [1, str. 449]). Kdyby nás zajímaly např. pouze kvantily (percentily) sledované proměnné, tak v následujícím tvaru procedura vypíše jen relevantní údaje: ODS SELECT Quantiles; PROC UNIVARIATE DATA=datovy-soubor-SASu; VAR numericka-promenna;

Kapitola 4. Popisná statistika v SASu 29 4.2.5 Vybrané volby příkazu PROC UNIVARIATE Na některé volby příkazu PROC UNIVARIATE jsme sice už narazili, ale existuje mnoho dalších voleb, kterými je možné výstup procedury přizpůsobovat. V tomto odstavci se pokusíme vybrat jen několik nejužitečnějších. NEXTROBS=n pro sledovanou proměnnou změní počet n největších a nejmenších hodnot, které procedura UNIVARIATE vypisuje v tabulce Extreme Observations (výchozí hodnota je n = 5). Dodejme, že v souvislosti s extrémními pozorováními se hodí příkaz ID, jenž je popsán mezi ostatními příkazy procedury v následujícím odstavci 4.2.6. NEXTRVAL=n přidá na výstup tabulku Extreme Values se seznamem n unikátních nejmenších hodnot a n unikátních největších hodnot zkoumané proměnné včetně pořadí dané hodnoty (dle velikosti) a četností, s jakými se hodnoty v datech objevují. Uvedením obou voleb NEXTROBS= a NEXTVAL= tak získáme dobrou představu o extrémních hodnotách. NORMAL vypíše k ostatním tabulkám také tabulku Tests for Normality s testy normality. Konkrétně tabulka poskytuje hodnoty testových statistik a p-hodnoty pro následující testy normality (nulová hypotéza vždy tvrdí, že data pocházejí z normálního rozdělení): Shapirův-Wilkův (za předpokladu, že zkoumaná proměnná obsahuje nejvýše 2 000 hodnot), Kolmogorovův-Smirnovův, Cramérův-von Misesův, Andersonův-Darlingův. Poznámka 4.6. Při ověřování normality dat se doporučuje nespoléhat pouze na číselné výsledky testů normality. Pravděpodobnost, s jakou test vypoví, že H 0 neplatí (tj. síla testu 2 ), se totiž zvětšuje s rostoucím rozsahem souboru. Pro velké rozsahy jsou pak detekovány i nepatrné odchylky od normality. Tuto skutečnost dokladuje i analýza výšek mužů, k níž vede zkušební zdrojový kód z úvodu podkapitoly 4.2. Ve výsledcích analýzy se hodnoty šikmosti a špičatosti blíží nule (α 3. = 0,03 a α4. = 0,07) a medián je téměř totožný s průměrem ( x. = 171,5cm a x. = 171,6cm), což napovídá dobrou shodu rozdělení výšek s normálním rozdělením. Předpoklad normality zkoumaných výšek podporuje i obrázek 4.1 na str. 35 a obrázky 4.8, 4.9 na str. 44 i fakt, že výška homogenní populace se typicky řídí normálním rozdělením. Přesto normalitu dostupné testy zamítají (rozsah souboru je přes 2 000 pozorování). Podrobnosti o těchto testech (s výjimkou Kolmogorovova-Smirnovova testu) lze najít v [6], Kolmogorovův-Smirnovův test je popsán např. v [3, str. 119] a velmi stručný popis všech testů se nachází také v [1, str. 426]. CIBASIC vypíše na výstup k dříve zmíněným tabulkám navíc tabulku se 100(1 α)% intervaly spolehlivosti za předpokladu normality pro střední hodnotu, směrodatnou 2 Odpovídá číslu 1 β, kde β značí pravděpodobnost chyby 2. druhu.

Kapitola 4. Popisná statistika v SASu 30 odchylku a rozptyl sledované veličiny (název tabulky je BasicIntervals, viz poznámku 4.5). ALPHA=α upravuje hladinu významnosti pro všechny 100(1 α)% intervaly, jež procedurou případně necháme vypočítat. Pro zadané α musí platit α (0, 1). Výchozí hladina významnosti pro všechny intervaly spolehlivosti na výstupu je α = 0,05. ALL tato volba u procedury UNIVARIATE vede k nejpodrobnějšímu výstupu, který zahrnuje všechny dosud popsané tabulky a statistiky a navíc i mnohé další (pro podrobnosti odkazujeme na [1, str. 287]). 4.2.6 Příkazy CLASS, BY a ID Jediný příkaz procedury UNIVARIATE, s nímž jsme zatím pracovali, byl příkaz VAR pro výběr kvantitativních proměnných, jejichž popisné statistiky nás zajímají. V poznámce 4.1 jsme pak naznali, že v některých situacích bývá žádoucí zkoumanou proměnnou vyšetřovat zvlášť pro různé hodnoty jiné proměnné. Tím se už dostáváme od jednorozměrné analýzy dat k vícerozměrné analýze, kdy současně sledujeme více proměnných, resp. vztahy mezi nimi. K prozkoumání vztahů mezi kvantitativními a kvalitativními proměnnými je vhodný příkaz CLASS se syntaxí CLASS promenna-1 promenna-2; Příkazem můžeme specifikovat jednu nebo dvě proměnné (tzv. klasifikační proměnné), které mohou být znakové i číselné. Nejčastěji jde o kvalitativní proměnné s několika málo přípustnými hodnotami (kategoriemi). Procedura pak popisné statistiky proměnných zadaných příkazem VAR spočítá zvlášť pro všechny možné kombinace úrovní klasifikačních proměnných. V uvažovaném datovém souboru study by nás z kvantitativních proměnných kromě výšky mohly zajímat také např. statistiky týkající se krevního tlaku a úrovně cholesterolu lidí zahrnutých do studie, a to v závislosti na jejich pohlaví a váhovém statusu: PROC UNIVARIATE DATA=study; CLASS Sex Weight_Status; VAR Systolic Diastolic Cholesterol; Procedura analýzu každé ze sledovaných proměnných provede zvlášť pro skupiny dat určené všemi kombinacemi kategorií klasifikačních proměnných, tudíž výstup bude mít několik separátních částí. Dalším příkazem pro definování skupin, v rámci kterých mají být popisné statistiky zkoumaných proměnných odděleně počítány, je příkaz BY se syntaxí BY seznam-promennych;

Kapitola 4. Popisná statistika v SASu 31 Příkaz BY funguje velmi podobně jako příkaz CLASS. Počet klasifikačních proměnných však u příkazu BY není limitován na dvě. Ještě podstatnějším rozdílem je, že k použití příkazu BY je nutné příslušný datový soubor nejprve vzestupně, resp. abecedně setřídit podle všech proměnných, jež příkazem BY uvádíme (pro třídění viz podkapitolu 3.3). Část zdrojového kódu výše bychom tak museli upravit např. následovně: PROC SORT DATA=study OUT=study_ord; BY Sex Weight_Status; PROC UNIVARIATE DATA=study_ord; BY Sex Weight_Status; VAR Systolic Diastolic Cholesterol; Z výstupu jsou patrné další drobné odlišnosti příkazu BY od příkazu CLASS: Příkaz BY všechna pozorování s chybějící hodnotou klasifikační proměnné zahrnuje do samostatné skupiny, v rámci které počítá popisné statistiky zkoumaných proměnných, a výsledky pro jednotlivé kombinace kategorií klasifikačních proměnných jsou vypsány v jiném pořadí než u příkazu CLASS. Konečně pro snadnou identifikaci extrémních pozorování na výstupu procedury UNI- VARIATE je užitečný příkaz ID se syntaxí ID seznam-promennych; Proměnné, které příkazem specifikujeme (identifikační proměnné), budou na výstupu zahrnuty v tabulce Extreme Observations, takže u největších a nejmenších hodnot zkoumané proměnné je možné ihned vyčíst odpovídající hodnoty identifikačních proměnných. Příkladem je kód PROC UNIVARIATE DATA=study NEXTROBS=10; ID Sex DeathCause; VAR AgeAtDeath; který při zkoumání věku při úmrtí vypíše deset nejnižších a deset nejvyšších věků při úmrtí tak, že ke každé hodnotě věku přidá pohlaví daného člověka a příčinu jeho smrti. Některé další příkazy procedury UNIVARIATE budou vysvětleny v následující podkapitole týkající se grafické průzkumové analýzy. 4.3 Jednorozměrná grafická analýza dat pro kvantitativní proměnné Dosud jsme se zaměřovali pouze na číselné statistiky, které o zkoumané proměnné poskytují objektivní informace, ale nepodávají úplný obraz o datech. K získání lepší představy o sledovaných proměnných je zapotřebí analýzu doplnit i grafickými metodami.

Kapitola 4. Popisná statistika v SASu 32 4.3.1 Histogram Histogram představuje grafické zobrazení intervalového rozdělení četností sledované veličiny prostřednictvím obdélníků sestrojených nad třídicími intervaly. Pokud jsou délky těchto intervalů stejné, tak jsou výšky obdélníků úměrné pozorovaným četnostem v rámci intervalů. Histogram slouží jako odhad tvaru hustoty rozdělení dané veličiny a je rovněž užitečný k posouzení centrální tendence a rozptýlení včetně odhalení odlehlých hodnot. Základní sestrojení histogramu v SASu V SASu existuje více procedur pro tvorbu histogramů. Zde zůstaneme u procedury UNI- VARIATE, která histogramy vytváří prostřednictvím příkazu HISTOGRAM se syntaxí HISTOGRAM seznam-numerickych-promennych / volby; Za seznam-numerickych-promennych dosazujeme proměnné, pro něž chceme histogram sestrojit. Jestliže žádnou proměnnou nedosadíme (ani výběr proměnných nezúžíme příkazem VAR), budou histogramy vytvořeny pro všechny numerické proměnné daného souboru. Vrátíme-li se tedy např. k výškám mužů z úvodu podkapitoly 4.2, příslušný histogram v základní podobě vytvoříme procedurou PROC UNIVARIATE DATA=study NOPRINT; WHERE Sex= Male ; HISTOGRAM Height; Volba NOPRINT zajišťuje, že se na výstupu zobrazí jen požadovaný histogram. Bez této volby by procedura histogram zobrazila spolu s popisnými statistikami všech numerických proměnných datového souboru, o nichž pojednávala minulá podkapitola. Kdybychom ale chtěli společně s histogramem vypsat i popisné statistiky analyzovaných proměnných, stačí tyto proměnné specifikovat známým příkazem VAR a volbu NOPRINT vynechat. Poznámka 4.7. Uvedeme-li v rámci procedury UNIVARIATE oba příkazy HISTOGRAM a VAR, musí výčet proměnných u příkazu VAR zahrnovat všechny proměnné vyjmenované příkazem HISTOGRAM. Histogram můžeme upravovat volbami. Ihned za lomítkem se zadávají tzv. hlavní volby, pomocí nichž lze např. upravovat meze třídicích intervalů či proložit histogram křivkou hustoty vybraného teoretického rozdělení. Nepovinné sekundární volby píšeme v závorkách za hlavními a slouží k upřesnění hlavních voleb (např. specifikováním parametrů proložené křivky teoretického rozdělení nebo barvy této křivky). S použitím voleb tedy může procedura výše vypadat takto: PROC UNIVARIATE DATA=study NOPRINT; WHERE Sex= Male ; HISTOGRAM Height / NORMAL(COLOR=RED MU=172 SIGMA=7); Užitečné volby příkazu HISTOGRAM budou v dalším blíže popsány.

Kapitola 4. Popisná statistika v SASu 33 Volby ohledně prokládání křivek hustot teoretických rozdělení histogramem Křivku hustoty požadovaného rozdělení můžeme histogramem proložit, jestliže zadáme název daného rozdělení jako hlavní volbu příkazu HISTOGRAM. Nepovinnými sekundárními volbami v závorkách za názvem rozdělení je možné specifikovat parametry dané křivky. Pro vybraná známější rozdělení ve výčtu níže uvádíme obecnou podobu voleb pro vykreslení odpovídající křivky hustoty: BETA(ALPHA= BETA= THETA= SIGMA=) EXPONENTIAL(SIGMA= THETA=) GAMMA(ALPHA= SIGMA= THETA=) GUMBEL(MU= SIGMA=) LOGNORMAL(SIGMA= THETA= ZETA=) NORMAL(MU= SIGMA=) PARETO(ALPHA= SIGMA= THETA=) RAYLEIGH(SIGMA= THETA=) WEIBULL(C= SIGMA= THETA=) Rozhodneme-li se např. proložit histogram křivkou hustoty normálního rozdělení a parametry neupřesníme, použijí se pro vykreslení křivky jejich odhady, tj. výběrový průměr pro µ a výběrová směrodatná odchylka pro σ. Je také možné v závorkách specifikovat uspořádané seznamy hodnot parametrů k vykreslení více křivek z dané skupiny rozdělení. Příkaz HISTOGRAM z kódu výše tak můžeme modifikovat třeba do podoby HISTOGRAM Height / NORMAL(COLOR=(RED BLUE) MU=172 EST SIGMA=7 EST); S těmito volbami příkaz vykreslí dvě křivky první bude červená s parametry µ = 172 a σ = 7, druhá bude modrá s hodnotou µ rovnou výběrovému průměru a s hodnotou σ odpovídající výběrové směrodatné odchylce (klíčové slovo EST tedy říká, že mají být použity odhady parametrů). Analogicky můžeme histogram proložit křivkami dalších výše jmenovaných rozdělení, případně pomocí hlavní volby KERNEL proložit histogram jádrovým odhadem hustoty sledované veličiny (pro podrobnosti, jako jsou významy parametrů jednotlivých rozdělení či parametry volby KERNEL, opět odkazujeme na [1]). K této problematice se vrátíme v příkladu 4.9 na str. 35. Poznámka 4.8. Jádrové odhady pravděpodobnostní hustoty patří mezi neparametrické odhady, tj. odhady, které nevyžadují žádné předpoklady ohledně rozdělení zkoumané veličiny. Naproti tomu např. odhad hustoty vykreslený volbou NORMAL předpokládá normální rozdělení dané veličiny s konkrétními parametry hovoříme o parametrické křivce. Volby ohledně třídicích intervalů histogramu Vzhled histogramu silně závisí na stanovení třídicích intervalů. Pokud jsou intervaly příliš úzké, pak histogram vykazuje velké fluktuace (např. jednovrcholové rozdělení může působit jako vícevrcholové apod.). Jsou-li naopak třídicí intervaly moc široké, tak výsledný

Kapitola 4. Popisná statistika v SASu 34 histogram nemusí zachytit podstatné charakteristiky tvaru skutečného rozdělení. Existují konkrétní doporučení, jak počet třídicích intervalů m volit například Sturgesovo pravidlo, podle kterého volíme m. = 1 + 3,3log 10 (n). = 1 + log 2 (n), kde n je rozsah souboru. Algoritmus, který ke stanovení třídicích intervalů používá automaticky procedura UNIVARIATE, je ve většině případů vyhovující. I tak procedura umožňuje třídicí intervaly histogramu měnit (ovšem při omezení, že všechny intervaly musejí být stejně široké), a sice následujícími hlavními volbami příkazu HISTOGRAM: ENDPOINTS=hodnoty specifikuje konkrétní dělicí body pro jednotlivé intervaly. Zadáváme je jako posloupnost ve tvaru např. ENDPOINTS=0 TO 10 BY 2 (pak je ovšem nutné, aby všechny hodnoty zkoumané proměnné spadaly do intervalu [0, 10]). Uvedení samotného klíčového slova ENDPOINTS způsobí, že na horizontální ose histogramu budou referenční rysky s hodnotami, které označují, vyneseny na koncových bodech intervalů a nikoliv uprostřed, jak je tomu implicitně. MIDPOINTS=hodnoty definuje středy třídicích intervalů analogicky jako volba ENDPOINTS, tj. např ve tvaru MIDPOINTS=2 TO 10 BY 0.5 (pak musejí všechny hodnoty zkoumané proměnné patřit do intervalu [1,75;10,25]). NENDPOINTS=m udává počet dělicích bodů m (třídicích intervalů pak bude m 1 a referenční rysky s hodnotami budou vyneseny na koncových bodech intervalů). NMIDPOINTS=m určuje počet třídicích intervalů m (a rysky s hodnotami vykreslí do středů těchto intervalů). Srovnávací histogramy Příkaz CLASS, jemuž jsme se již věnovali v odstavci 4.2.6, je užitečný také při tvorbě srovnávacích grafů. Pomocí tohoto příkazu můžeme posuzovat vztah kvantitativní a kvalitativní proměnné i prostřednictvím srovnávacích histogramů. Uvedeme-li příkazem CLASS jedinou klasifikační proměnnou, pak se vykreslí histogramy proměnných u příkazu HISTOGRAM zvlášť pro každou úroveň této klasifikační proměnné. Výsledné histogramy jsou uspořádány pod sebe s totožnými horizontálními a vertikálními osami. Takto pro ukázku vypadá srovnávací histogram pro výšky žen a mužů z datového souboru study: PROC UNIVARIATE DATA=study NOPRINT; HISTOGRAM Height / NORMAL(COLOR=RED) ENDPOINTS; CLASS Sex; Z výsledného grafu na obrázku 4.1 je podle očekávání vidět, že muži jsou v průměru vyšší a že se výšky přibližně řídí normálním rozdělením.

Kapitola 4. Popisná statistika v SASu 35 Obrázek 4.1: Srovnávací histogram pro výšky žen a mužů Jestliže u příkazu CLASS vyjmenujeme dvě klasifikační proměnné (tj. maximální možný počet proměnných pro tento příkaz), výstup bude podobný. Histogramy budou vykresleny zvlášť pro všechny kombinace kategorií klasifikačních proměnných a uspořádány do matice, v níž řádky korespondují s kategoriemi první klasifikační proměnné a sloupce odpovídají kategoriím druhé klasifikační proměnné. V následujícím příkladu ukážeme histogram pro data, která nejsou normálně rozdělena, a zopakujeme si vytváření datových souborů. Příklad 4.9. Při jistém výrobním procesu byly měřeny mezery mezi svařovanými plechy (v cm) pro 50 náhodně vybraných dílů. Data byla uložena do proměnné Gap datového souboru Plates (pro význam znaků @@ u příkazu INPUT viz poznámku 3.2 na str. 18): DATA Plates; LABEL Gap = Mezera v cm ; INPUT Gap @@; DATALINES; 0.746 0.357 0.376 0.327 0.485 1.741 0.241 0.777 0.768 0.409 0.252 0.512 0.534 1.656 0.742 0.378 0.714 1.121 0.597 0.231 0.541 0.805 0.682 0.418 0.506 0.501 0.247 0.922 0.880 0.344 0.519 1.302 0.275 0.601 0.388 0.450 0.845 0.319 0.486 0.529 1.547 0.690 0.676 0.314 0.736 0.643 0.483 0.352 0.636 1.080 ; Najděte na základě histogramu rozdělení pravděpodobnosti, které se nejlépe hodí k popisu naměřených hodnot. Řešení. Vytvořením histogramu v základní podobě nahlédneme, že jsou data značně kladně zešikmená, a nemá proto smysl uvažovat o normálním rozdělení. Místo toho vyzkoušíme Weibullovo a gamma rozdělení a necháme vykreslit i jádrový odhad hustoty. Kvůli velkým

Kapitola 4. Popisná statistika v SASu 36 skokům ve výškách jednotlivých obdélníků histogramu při implicitním nastavení ještě zvolíme jemnější dělení pro třídicí intervaly: PROC UNIVARIATE DATA=Plates; HISTOGRAM Gap / WEIBULL(COLOR=RED) GAMMA(COLOR=BLACK) KERNEL(COLOR=DARKVIOLET) ENDPOINTS=0.1 TO 1.9 BY 0.2; Obrázek 4.2: Výsledný histogram z příkladu 4.9 Černá křivka gamma rozdělení tvar histogramu vystihuje evidentně lépe než červená křivka Weibullova rozdělení (parametry obou křivek jsou odhadnuté z dat). Dále se tvar křivky gamma rozdělení vcelku podobá tvaru fialové neparametrické křivky a také testy dobré shody, jež procedura implicitně vypisuje spolu s histogramy, napovídají gamma rozdělení dat (Weibullovo rozdělení na hladině významnosti α = 0,05 zamítají). 4.3.2 Box plot Box plot je graf, jenž umožňuje posoudit rozdělení dat pomocí kvartilů. Poukazuje tak na případnou asymetrii dat, vyznačuje odlehlé hodnoty a je vhodný i k posouzení variability (zejména máme-li více diagramů v jednom obrázku). Základní sestrojení box plotu v SASu V SASu si ukážeme, jak box ploty vytvářet pomocí procedury SGPLOT (způsob, jakým procedura box plot konstruuje, je znázorněn na obrázku 4.3). Procedura SGPLOT je další velice univerzální procedurou. Umožňuje vytvářet mnoho různých typů grafů včetně histogramů, sloupcových grafů, grafů lineární regrese a dalších.

Kapitola 4. Popisná statistika v SASu 37 Obrázek 4.3: Konstrukce box plotu procedurou SGPLOT (převzato z [12]) K vykreslení vertikálního box plotu u této procedury slouží příkaz VBOX (k vytvoření horizontálního box plotu je určen příkaz HBOX, jehož použití je zcela stejné). Obecná syntaxe příkazu VBOX je VBOX numericka-promenna / volby; Příkazem tedy musíme uvést jedinou numerickou proměnnou, pro niž chceme box plot sestrojit. Jednoduchým příkladem použití tak může být následující procedura, která diagram vytvoří pro systolický tlak žen v datovém souboru study: PROC SGPLOT DATA=study; WHERE Sex= Female ; VBOX Systolic; Volby pro vykreslování více box plotů do jednoho obrázku Velkou výhodou box plotů je možnost porovnat rozdělení pro různé skupiny dat vykreslením příslušných diagramů do jednoho obrázku (opět se tak od jednorozměrné analýzy dat dostáváme k vyšetřování závislosti kvantitativní a kvalitativní proměnné). U procedury SGPLOT za tímto účelem existuje volba CATEGORY příkazu VBOX: CATEGORY=kvalitativni-promenna sestrojí box ploty zkoumané proměnné zvlášť pro každou kategorii specifikované kvalitativní proměnné a umístí je do jednoho obrázku. Když se vrátíme ke kódu výše, tak nyní pomocí box plotů můžeme systolický tlak žen sledovat v závislosti na jejich váhovém statusu (volba NOTCHES bude vysvětlena později

Kapitola 4. Popisná statistika v SASu 38 na str. 40, význam příkazů FORMAT a XAXIS bude okomentován v poznámce 4.10 na str. 39): PROC SGPLOT DATA=study; WHERE Sex= Female ; FORMAT Weight_Status $formatvah.; VBOX Systolic / CATEGORY=Weight_Status NOTCHES; XAXIS DISCRETEORDER=FORMATTED; Obrázek 4.4: Box ploty pro závislost systolického tlaku na váhovém statusu Z výstupního obrázku 4.4 je zřejmé, že směrem k váhovému statusu overweight se zvyšují mediány i průměry systolických tlaků žen v jednotlivých skupinách. Nabízí se tak např. otázka, zda jsou rozdíly mezi středními hodnotami systolického tlaku v jednotlivých skupinách statisticky významné, tj. zda střední hodnota systolického tlaku závisí na přítomnosti nadváhy. Uvnitř jednotlivých skupin je rovněž patrné zvětšující se rozptýlení hodnot systolického tlaku, měřené výškou krabic (tedy kvartilovým rozpětím), roste i počet odlehlých hodnot (svůj podíl na tom budou mít rozsahy souborů, které se s každou další kategorií podstatně zvětšují). Také si můžeme udělat představu o tvarech příslušných rozdělení rozdělení jsou ve všech skupinách asymetrická. Totiž, je-li interval obsahující pravou polovinu rozdělení delší než interval, který obsahuje levou polovinu rozdělení, pak toto rozdělení je kladně zešikmené. Zde ve všech skupinách právě taková situace nastala (viz umístění mediánů v rámci diagramů) a kladnou šikmost napovídají také hodnoty průměrů převyšující mediány. Kdybychom nevystačili se závislostí na jedné kvalitativní proměnné a zajímala by nás závislost sledované kvantitativní proměnné na dvou kvalitativních proměnných současně, je možné v rámci jednotlivých kategorií definovaných volbou CATEGORY vytvořit ještě samostatné box ploty pro podskupiny dat určené volbou GROUP.

Kapitola 4. Popisná statistika v SASu 39 GROUP=promenna klasifikuje data do skupin určených uvedenou proměnnou (tato proměnná nemusí být nutně kvalitativní) a box ploty vykreslí zvlášť pro každou z těchto skupin. S touto volbou můžeme graf výše upravit tak, aby zachycoval závislost systolického tlaku nejen na váhovém statusu, ale také třeba na pohlaví: PROC SGPLOT DATA=study; FORMAT Weight_Status $formatvah.; VBOX Systolic / CATEGORY=Weight_Status GROUP=Sex GROUPORDER=ASCENDING; XAXIS DISCRETEORDER=FORMATTED; Obrázek 4.5: Box ploty pro systolický tlak složitější závislost Použijeme-li volbu GROUP, mohou se hodit ještě tyto související volby: GROUPDISPLAY=OVERLAY překryje box ploty skupin definovaných volbou GROUP přes sebe. GROUPORDER=ASCENDING DESCENDING definuje, jakým způsobem budou seřazeny box ploty jednotlivých skupin v rámci kategorie (klíčové slovo ASCENDING vede na vzestupné či abecední řazení, opačné řazení zajistí slovo DESCENDING). Implicitně se diagramy zobrazují v takovém pořadí, v jakém se příslušné hodnoty grupovací proměnné vyskytují v datech. Poznámka 4.10. K seřazení hlavních kategorií v grafech na obrázcích 4.4 a 4.5 byl použit příkaz XAXIS s volbou DISCRETEORDER=FORMATTED, díky níž jsou kategorie řazeny vzestupně podle svých naformátovaných hodnot (pro formáty viz odstavec 3.1.3). Implicitně se kategorie řadí vzestupně, resp. abecedně dle svých původních hodnot, takže v našem případě by pořadí diagramů bylo nelogické (Normal, Overweight,

Kapitola 4. Popisná statistika v SASu 40 Underweight). Využili jsme proto formátování názvů kategorií tak, aby formátované názvy již byly v požadovaném pořadí (stačí přidat před názvy kategorií čísla určující toto pořadí). Zde použitý formát byl vytvořen následujícím způsobem: PROC FORMAT; VALUE $formatvah Underweight = 1. Underweight Normal = 2. Normal Overweight = 3. Overweight ; Aby vytvořený formát byl použit, je nutné jej příkazem FORMAT spárovat s proměnnou, k níž se vztahuje, a to buď při vytváření souboru (v datové proceduře), nebo až ve vlastní proceduře, jak to bylo provedeno v našem případě u procedury SGPLOT. Dodejme, že volbou DISCRETEORDER=DATA příkazu XAXIS je možné kategorie v grafu zobrazit v takovém pořadí, v jakém se poprvé vyskytují v datovém souboru. Volby ohledně vzhledu box plotů V této části už jen stručně popíšeme vybrané volby příkazu VBOX, jimiž je možné přizpůsobovat vzhled diagramů. EXTREME protáhne vousy (vertikální čáry vedoucí z krabice diagramu, viz obrázek 4.3) až k maximální, resp. minimální hodnotě zkoumané proměnné. Implicitně vousy sahají pouze k největší datové hodnotě nepřesahující horní vnitřní hradbu, resp. k nejmenší datové hodnotě, která není nižší než dolní vnitřní hradba (hodnoty za vnitřními hradbami, tj. vzdálenější od horního, resp. od dolního kvartilu o více než 1,5násobek kvartilového rozpětí, jsou označovány jako odlehlé hodnoty). WHISKERPCT=a změní délku vousů tak, že spodní bude dosahovat k percentilu a a horní k percentilu 100 a. Zřejmě musí být a [0, 25]. DATALABEL=promenna připíše do grafu k odlehlým pozorováním hodnoty specifikované proměnné pro tato pozorování. Zadáme-li pouze volbu DATALABEL (bez upřesnění proměnné), budou k odlehlým pozorováním připsány příslušné hodnoty sledované proměnné (v našem případě systolického tlaku). LABELFAR způsobí, že příslušné hodnoty budou v grafu připsány pouze k extrémním pozorováním (= pozorování za vnějšími hradbami). Volba výstupní graf nijak neovlivní, pokud chybí volba DATALABEL nebo pokud nejsou přítomna extrémní pozorování. NOTCHES vykreslí box [ ploty s výřezy po stranách. ] Šířka těchto výřezů je dána jako délka intervalu x 1,58 q n, x + 1,58 q n, kde x je medián, q je kvartilové rozpětí a n značí rozsah sledované skupiny. Výřezy slouží jako přibližné vodítko při posuzování

Kapitola 4. Popisná statistika v SASu 41 významnosti rozdílů mezi mediány jestliže se výřezy u dvou diagramů navzájem nepřekrývají, je to důvod se domnívat, že rozdíl mezi příslušnými mediány je statisticky významný. Například z obrázku 4.4 na str. 38 tak můžeme soudit, že medián systolického tlaku u žen s nadváhou se významně liší od mediánů systolického tlaku u žen ve zbývajících skupinách. 4.3.3 Matice scatter plotů Jedná-li se o vztahy více proměnných, dosud jsme pouze naznačili, jak se v SASu dají vizualizovat vztahy mezi kvantitativní a kvalitativní proměnnou (viz srovnávací box ploty či histogramy pro jednotlivé kategorie kvalitativní proměnné). V tomto odstavci stručně ukážeme, jak můžeme graficky znázornit vztah dvou kvantitativních proměnných (u grafického posouzení vztahu dvou kvalitativních proměnných se v krátkosti zastavíme později v podkapitole 4.5). Nechť X = (X,Y ) je dvourozměrný náhodný vektor s realizacemi (x i,y i ), i = 1,...,n. Scatter plot představuje znázornění bodů (x i,y i ) v dvourozměrném grafu s osami v kartézské soustavě souřadnic. Vykreslením scatter plotů pro více dvojic veličin a následným uspořádáním grafů do matice získáme matici scatter plotů. V SASu je možné tuto matici vykreslit procedurou SGSCATTER s příkazem MATRIX v obecném tvaru PROC SGSCATTER DATA=datovy-soubor-SASu; MATRIX seznam-numerickych-promennych / volby; Volby příkazu MATRIX Vystačíme s popisem dvou nejpotřebnějších voleb pro úpravy matice scatter plotů a s ukázkou praktického využití: GROUP=promenna specifikuje klasifikační proměnnou (nemusí být nutně kvalitativní), pomocí níž budou body v grafu náležející různým skupinám barevně odlišeny. DIAGONAL=(seznam-grafu) přidá na diagonální buňky výstupní matice zvolené grafy (implicitně tyto buňky obsahují pouze názvy příslušných proměnných). Za seznam-grafu je možné dosazovat klíčová slova HISTOGRAM, KERNEL (pro jádrový odhad hustoty) nebo NORMAL (pro parametrickou křivku hustoty normálního rozdělení). Konkrétní příklad matice scatter plotů bude výhodnější ukázat pro změnu na datovém souboru sashelp.cars, jenž obsahuje technické údaje o 428 automobilech. Náhled na první tři pozorování a vybrané proměnné souboru je na obrázku 4.6. Graf na obrázku 4.7 zachycuje vzájemné závislosti dojezdu (proměnná MPG_City 3 ), hmotnosti (Weight) a délky automobilů (Length). Pro přehlednost jsou v grafu uvažovány 3 MPG je zkratkou sousloví miles per gallon, nízká hodnota MPG tedy koresponduje s vysokou spotřebou paliva a naopak.

Kapitola 4. Popisná statistika v SASu 42 Obrázek 4.6: Ukázkový datový soubor sashelp.cars jen dva typy vozidel (sedan a truck), pomocí volby GROUP jsou jim odpovídající body barevně odlišeny. Vykreslení grafů na diagonále pomocí volby DIAGONAL bohužel potlačí zobrazení měřítek os v jednotlivých buňkách. PROC SGSCATTER DATA=sashelp.cars; WHERE Type IN ( Sedan, Truck ); MATRIX MPG_City Weight Length / GROUP=Type DIAGONAL=(HISTOGRAM KERNEL); Obrázek 4.7: Vzájemné závislosti spotřeby, hmotnosti a délky automobilů Evidentní je pozitivní závislost hmotnosti a délky vozidel, naopak závislost dojezdu na hmotnosti (a délce) vozidla je v souladu s intuicí negativní. Díky barevnému rozlišení je navíc zjevné, že vozidla typu truck jsou ve srovnání se sedany těžší, delší a mají menší dojezd.

Kapitola 4. Popisná statistika v SASu 43 4.3.4 Q-Q plot a P-P plot Diagnostické grafy, kterými se nyní budeme zabývat, si jsou v jistých ohledech podobné a značně se podobá i způsob, jakým se vytvářejí v SASu, pročež se oběma grafům budeme věnovat ve společném odstavci. Q-Q plot (quantile-quantile plot) je graf, který umožňuje posoudit, zda data pocházejí z nějakého známého rozdělení. V SASu je konstruován tak, že na svislé ose jsou uspořádané hodnoty x (1)... x (n) sledované proměnné a na vodorovné ose jsou uvedeny kvantily F 1 ( i r ad j n+n ad j ), i = 1,...,n, kde r ad j a n ad j jsou korigující faktory 4 a F 1 (p) značí standardizovanou kvantilovou funkci zvoleného teoretického rozdělení. 5 Potom i-tý bod v grafu je dán jako dvojice ( ( ) F 1 i r ad j n+n ad j,x (i) ). Na hodnoty x (1)... x (n) lze pohlížet jako na kvantily empirické distribuční funkce F n (x) = 1 n n 1 x(i) x, i=1 kde 1 A označuje indikátor jevu A, jenž nabývá hodnoty 1, pokud nastal jev A a 0 jinak. Q-Q plot tak srovnává výběrové kvantily s příslušnými teoretickými kvantily. Soulad mezi empirickým a teoretickým rozdělením se projeví tak, že se vykreslené body přibližně řadí do přímky s jednotkovou směrnicí a procházející počátkem. Jestliže se teoretické a empirické rozdělení liší pouze v parametru polohy nebo měřítka, body se stále budou řadit do přímky, avšak ta již nebude mít jednotkový sklon nebo nebude procházet počátkem (viz tabulku 4.1 na str. 46). P-P plot (probability-probability plot) naproti tomu porovnává empirickou distribuční funkci se standardizovanou distribuční funkcí zvoleného teoretického rozdělení. Konkrétně v SASu je P-P plot sestaven tak, že se opět vzestupně uspořádají datové hodnoty x (i), spočítají se odpovídající normované hodnoty z (i) = x (i) m, i = 1,...,n, s kde m je parametr polohy a s je parametr měřítka vybraného rozdělení 6 (např. pro normální rozdělení m = µ je střední hodnota a s = σ je směrodatná odchylka), a v grafu je pak i-tý bod určen souřadnicemi ( F(z (i) ), i ), n kde F je distribuční vybraného teoretického rozdělení a n i je hodnota výběrové distribuční funkce F n (x (i) ). V případě shody výběrového rozdělení se zvoleným teoretickým rozdělením se body P-P plotu řadí do přímky s jednotkovou směrnicí a procházející počátkem. 4 V SASu je implicitně r ad j = 0,375 a n ad j = 0,25. 5 Například pro normální Q-Q plot F 1 (p) = Φ 1 (p) je inverzní funkce k distribuční funkci standardizovaného normálního rozdělení N(0,1). 6 Pokud tyto parametry přímo nezadáme (viz později), použijí se buď implicitní hodnoty, nebo se hodnoty parametrů odhadnou z dat tak je tomu např. u normálního rozdělení, kde se v takovém případě použije výběrový průměr pro m a výběrová směrodatná odchylka pro s.

Kapitola 4. Popisná statistika v SASu 44 Základní sestrojení Q-Q plotu a P-P plotu v SASu Abychom si ukázali, jak oba grafy vytvářet v SASu, vrátíme se k proceduře UNIVARIATE. Ta umožňuje vykreslení Q-Q plotu, resp. P-P plotu příkazem QQPLOT, resp. příkazem PPPLOT se syntaxí QQPLOT seznam-numerickych-promennych / volby; PPPLOT seznam-numerickych-promennych / volby; Příkazy se používají velmi podobně jako příkaz HISTOGRAM, všechny totiž náležejí stejné proceduře. Když tedy do seznamu proměnných žádnou proměnnou nedosadíme, vykreslí se grafy pro všechny numerické proměnné datového souboru, případně grafy pro všechny numerické proměnné vyjmenované příkazem VAR. Poznámka 4.11. Uvedeme-li v rámci procedury UNIVARIATE současně příkazy QQPLOT (či PPPLOT) a VAR, musí výčet proměnných u příkazu VAR zahrnovat všechny proměnné vyjmenované u příkazu QQPLOT (či PPPLOT). Podobné je i zacházení s volbami. Píší se opět za lomítkem a můžeme pomocí nich např. specifikovat teoretické rozdělení, s nímž chceme porovnat rozdělení dané proměnné, nebo upravovat vzhled grafů. Sekundárními volbami v závorkách je znovu možné hlavní volby v některých případech konkretizovat. Pro konkrétní ukázku vytvoření Q-Q plotu a P-P plotu uvažme znovu výšky mužů v datovém souboru study: ODS GRAPHICS ON; PROC UNIVARIATE DATA=study NOPRINT; WHERE Sex= Male ; QQPLOT Height / NORMAL(MU=EST SIGMA=EST); ODS GRAPHICS OFF; ODS GRAPHICS ON; PROC UNIVARIATE DATA=study NOPRINT; WHERE Sex= Male ; PPPLOT Height / NORMAL; ODS GRAPHICS OFF; Obrázek 4.8: Q-Q plot pro výšky mužů Obrázek 4.9: P-P plot pro výšky mužů Výsledné grafy na obrázcích 4.8 a 4.9 stejně jako histogram na str. 35 potvrzují předpoklad, že se výšky řídí normálním rozdělením. U histogramu je však posouzení souladu s vybraným teoretickým rozdělením silně ovlivněno volbou třídicích intervalů, zatímco u Q-Q plotu a P-P plotu tento problém samozřejmě nevyvstává. Dále můžeme na grafech výše pozorovat skutečnost, že P-P ploty jsou citlivé na odchylky od teoretického rozdělení ve

Kapitola 4. Popisná statistika v SASu 45 střední části, kdežto Q-Q ploty jsou citlivé na odchylky od teoretického rozdělení v oblasti konců. Poznámka 4.12. Globální příkazy ODS GRAPHICS ON; jsou v kódech výše zadány proto, aby k zobrazení výstupu byl použit tzv. Output Delivery System (ODS). ODS je součást SASu, která umožňuje produkovat výstup programů v různých formátech. Vzhledem ke stáří SASu jsou implicitně grafické výstupy některých statistických procedur poněkud zjednodušené a k vykreslení grafů v lepší kvalitě je nutné ODS grafiku jednorázově povolit uvedeným příkazem (zakázána může být analogicky příkazem ODS GRAPHICS OFF;). Volby pro specifikování teoretického rozdělení Název teoretického rozdělení, s nímž chceme porovnat rozdělení zkoumané proměnné, píšeme jako hlavní volbu (tj. za lomítkem) příkazu QQPLOT (PPPLOT). Výčet níže obsahuje obecnou podobu těchto voleb pro vybraná rozdělení: BETA(ALPHA= BETA= SIGMA= THETA=) EXPONENTIAL(SIGMA= THETA=) GAMMA(ALPHA= SIGMA= THETA=) GUMBEL(MU= SIGMA=) LOGNORMAL(SIGMA= THETA= ZETA=) NORMAL(MU= SIGMA=) PARETO(ALPHA= SIGMA= THETA=) RAYLEIGH(SIGMA= THETA=) WEIBULL(C= SIGMA= THETA=) Poznámka 4.13. Červeně zvýrazněné sekundární volby ve výčtu jsou u příkazu QQPLOT povinné, tzn. zadáme-li název příslušného rozdělení jako hlavní volbu příkazu QQPLOT, musíme specifikovat i hodnoty zvýrazněných parametrů. Zůstává v platnosti, že klíčovým slovem EST danému parametru přiřadíme hodnotu odhadnutou z dat (viz kód pro sestrojení Q-Q plotu na obrázku 4.8 na str. 44). Není-li za lomítkem určeno žádné rozdělení, vytvoří se implicitně normální Q-Q ploty, resp. normální P-P ploty pro zadané proměnné. Sestrojení grafů se ale liší v tom, že zatímco u P-P plotu se diagonální referenční přímka, která usnadňuje vyhodnocení lineárního trendu bodů, vykreslí vždy (její umístění a sklon jsou pokaždé stejné), u Q-Q plotu se implicitně referenční přímka nezobrazuje. Referenční přímka se u Q-Q plotu vykreslí teprve tehdy, když specifikujeme teoretické rozdělení včetně jeho parametrů polohy a měřítka. Parametry polohy a měřítka daného rozdělení určují vlastnosti referenční přímky, tabluka 4.1 níže typy parametrů pro jednotlivá rozdělení klasifikuje a ukazuje jejich vliv na sklon a posunutí této přímky. Můžeme se například přesvědčit, že na obrázku 4.8 má referenční přímka vykreslená specifikací MU=EST a SIGMA=EST u volby NORMAL skutečně absolutní člen roven hodnotě ˆµ = 171,62 a sklon odpovídající hodnotě ˆσ = 6,9396.

Kapitola 4. Popisná statistika v SASu 46 Parametr Referenční přímka Rozdělení Polohy Měřítka Tvaru Absolutní člen Sklon Beta θ σ α, β θ σ Exponenciální θ σ θ σ Gamma θ σ α θ σ Gumbelovo µ σ µ σ Logaritmicko-normání θ ζ σ θ exp(ζ ) Normální µ σ µ σ Zobecněné Paretovo θ σ α θ σ Rayleighovo θ σ θ σ Weibullovo θ σ c θ σ Tabulka 4.1: Souvislost parametrů vybraných rozdělení s referenční přímkou Q-Q plotu Jelikož je Q-Q plot v praxi používanějším z obou grafů, bude účelné se v další části blíže zaměřit na jeho interpretaci. Při té příležitosti nahlédneme na použití cyklů v datové proceduře SASu a na generování náhodných čísel. Interpretace odchylek od normálního rozdělení pomocí Q-Q plotu Při zpracovávání dat se mnohdy používají metody, které jsou založeny na předpokladu, že data pocházejí z normálního rozdělení. V této části naznačíme, jak se na Q-Q plotu mohou projevit konkrétní případy, v nichž předpoklad normality dat splněn není. Na str. 47 srovnáváme náhodné výběry rozsahu 500 z různých rozdělení (jsou uloženy v proměnné x) s normálním rozdělením pomocí normálních Q-Q plotů. Přikládáme rovněž zdrojové kódy vedoucí k vykreslení těchto grafů. K vygenerování náhodné hodnoty ze zvoleného rozdělení je použita funkce RAND, jednoduchým cyklem DO je pak v každé iteraci proměnné x (a také čítací proměnné i) přiřazena hodnota. Příkaz OUTPUT SASu říká, aby aktuální hodnoty proměnných x a i pro danou iteraci vypsal do vytvářeného datového souboru ihned jinak by se hodnoty v jednotlivých iteracích přepisovaly a k vypsání do souboru by došlo až na konci datové procedury, kdy by proměnným x a i byly přiřazeny pouze hodnoty z poslední iterace. Čítací proměnnou i v souborech nepotřebujeme, a proto je po cyklu mazána dříve popsaným příkazem DROP. Na obrázku 4.10 je zachycen tvar normálního Q-Q plotu, jenž je charakteristický pro data z rozdělení s těžkými chvosty (zde náhodný výběr pochází ze Studentova rozdělení o čtyřech stupních volnosti). Body od přímky na koncích vybočují proti směru hodinových ručiček, což je dáno tím, že směrem k maximální hodnotě výběru jsou v datech přítomny vyšší hodnoty, než jaké jsou očekávané pro normální rozdělení, a směrem k minimální hodnotě se vyskytují naopak nižší než očekávané hodnoty. Podobný tvar normálního Q-Q plotu tak zároveň prozrazuje kladnou šikmost uvažovaného výběru. Opačná je situace na obrázku 4.12, kde je náhodný výběr dat generován z rovnoměrného spojitého rozdělení na intervalu (0, 1). V datech z tohoto rozdělení se z definice odlehlé hodnoty vyskytovat nemohou, jedná se tedy o rozdělení s lehkými chvosty a zápornou špičatostí. Tomu odpovídá tvar normálního Q-Q plotu, kdy body na koncích rozdělení vybočují od přímky po směru hodinových ručiček (hodnoty blížící se maximální hodnotě

Kapitola 4. Popisná statistika v SASu 47 DATA student; DO i=1 to 500; x=rand( T, 4); OUTPUT; END; DROP i; PROC UNIVARIATE DATA=student NOPRINT; QQPLOT / NORMAL(MU=EST SIGMA=EST); DATA chisq; DO i=1 to 500; x=rand( CHISQUARE, 5); OUTPUT; END; DROP i; PROC UNIVARIATE DATA=chisq NOPRINT; QQPLOT / NORMAL(MU=EST SIGMA=EST); Obrázek 4.10: Normální Q-Q plot pro výběr z rozdělení s těžkými chvosty DATA unif; DO i=1 to 500; x=rand( UNIFORM ); OUTPUT; END; DROP i; PROC UNIVARIATE DATA=unif NOPRINT; QQPLOT / NORMAL(MU=EST SIGMA=EST); Obrázek 4.11: Normální Q-Q plot pro výběr z rozdělení s kladnou šikmostí DATA bimodal; DO i=1 to 250; x=rand( NORMAL, 0, 1); OUTPUT; END; DO i=251 to 500; x=rand( NORMAL, 5, 1); OUTPUT; END; DROP i; PROC UNIVARIATE DATA=bimodal NOPRINT; QQPLOT / NORMAL(MU=EST SIGMA=EST); Obrázek 4.12: Normální Q-Q plot pro výběr z rozdělení s lehkými chvosty Obrázek 4.13: Normální Q-Q plot pro výběr z dvouvrcholového rozdělení

Kapitola 4. Popisná statistika v SASu 48 v datech jsou nižší než hodnoty očekávané pro normální rozdělení a hodnoty blížící se minimální hodnotě jsou vyšší než očekávané hodnoty). Situace na obrázku 4.11 je v jistém smyslu kombinací předchozích dvou případů. Data jsou zde náhodně generována z rozdělení chí-kvadrát o pěti stupních volnosti, což je kladně zešikmené rozdělení. Proto není překvapivé, že směrem k nejvyšší datové hodnotě se body od přímky odchylují stejným směrem jako u rozdělení s těžkými chvosty a směrem k minimální hodnotě se body naopak řadí do tvaru podobného jako u rozdělení s lehkými chvosty. Snadno nahlédneme, že pro výběr z rozdělení se zápornou šikmostí by analogicky body normálního Q-Q plotu kopírovaly konkávní křivku. Konečně obrázek 4.13 ilustruje, jak může vypadat (normální) Q-Q plot pro výběr z rozdělení se dvěma vrcholy prvních 250 hodnot proměnné x je náhodně generováno ze standardizovaného normálního rozdělení, dalších 250 hodnot pochází z normálního rozdělení se střední hodnotou 5 a jednotkovým rozptylem. 4.4 Jednorozměrná analýza kvalitativních dat pomocí četnostních tabulek Popisné statistiky, kterým jsme se věnovali v podkapitole 4.2 pro kvantitativní proměnné, většinou nejsou vhodné pro popis kvalitativních dat. Předně je zřejmé, že uvažujeme-li nominální proměnné (v SASu např. znakovou proměnnou pohlavi s hodnotami muz, zena), můžeme nanejvýš určit četnosti jednotlivých kategorií této proměnné v datech (tj. v uvedeném příkladu počet mužů a žen) a modus jakožto nejčetnější variantu. V případě ordinálních proměnných již existuje pořadí jednotlivých kategorií. Pokud tyto kategorie jsou kódovány číselnými hodnotami (v SASu může jít např. o proměnnou postoj s hodnotami 1 až 5 reprezentujícími různou míru ztotožnění s určitým tvrzením), tak mohou kromě četností a modu být případně určeny také kvantily, zejména pak medián (výpočet průměru a dalších momentových charakteristik pro ordinální proměnné až na výjimky smysl nemá, neboť mezi jednotlivými kategoriemi ordinální proměnné obecně nelze interpretovat vzdálenosti). Obyčejně jsou ale hlavními prostředky pro popis jednorozměrných kvalitativních dat četnostní tabulky a grafické metody pro znázornění četností. V SASu je právě k těmto sumarizacím určena procedura FREQ, kterou si v dalším přiblížíme. Nejprve si vytvořme datový soubor, na němž budeme práci s kvalitativními daty demonstrovat. Nechť je tento soubor tvořen údaji o 30 studentech, z nichž je 15 dívek a 15 chlapců (kódování je 0... dívka, 1... chlapec). Pro každého studenta je zaznamenána známka z fyziky a z chemie v pololetí (pro 14. pozorování známka z chemie chybí): pohlaví 1 1 0 1 1 1 1 0 0 0 1 0 0 0 1 1 1 0 1 1 0 0 0 0 1 0 1 0 1 0 známka F 1 2 2 4 2 4 2 4 3 4 2 2 2 4 3 3 2 2 5 3 3 5 2 2 3 3 2 1 1 1 známka CH 2 3 3 5 1 3 2 2 3 5 3 3 2-3 4 3 2 3 2 4 4 1 2 1 4 1 1 1 2 Tabulka 4.2: Data pro ilustrativní datový soubor Níže je odpovídající datový soubor znamky vytvořen (pro význam symbolů @@ u příkazu INPUT viz poznámku 3.2 na str. 18):

Kapitola 4. Popisná statistika v SASu 49 DATA znamky; INPUT Pohlavi $ Fyzika Chemie @@; DATALINES; chlapec 1 2 chlapec 2 3 divka 2 3 chlapec 4 5 chlapec 2 1 chlapec 4 3 chlapec 2 2 divka 4 2 divka 3 3 divka 4 5 chlapec 2 3 divka 2 3 divka 2 2 divka 4. chlapec 3 3 chlapec 3 4 chlapec 2 3 divka 2 2 chlapec 5 3 chlapec 3 2 divka 3 4 divka 5 4 divka 2 1 divka 2 2 chlapec 3 1 divka 3 4 chlapec 2 1 divka 1 1 chlapec 1 1 divka 1 2 ; 4.4.1 Procedura FREQ Proceduru FREQ pro vypisování četnostních tabulek používáme v obecném tvaru PROC FREQ DATA=datovy-soubor-SASu; TABLES kombinace-promennych / volby; Jednorozměrné četnostní tabulky získáme vyjmenováním proměnných, pro něž tabulku požadujeme, u příkazu TABLES (proměnné se oddělují mezerami, pro každou proměnnou bude vypsána samostatná tabulka). Pokud příkaz TABLES chybí, zobrazí procedura jednorozměrné četnostní tabulky pro všechny proměnné datového souboru. Pro ukázku vytvořme četnostní tabulku pro známky z chemie v datovém souboru znamky: PROC FREQ DATA=znamky; TABLES Chemie; Obrázek 4.14: Četnostní tabulka pro známky Vidíme, že pro jednotlivé známky j, j = 1,...,5, jsou implicitně kromě absolutních četností n j každé známky vypsány rovněž procentuálně vyjádřené relativní četnosti p j = n j n 100%,

Kapitola 4. Popisná statistika v SASu 50 dále absolutní kumulativní četnosti N j = n 1 + + n j a konečně procentuálně vyjádřené relativní kumulativní četnosti F j = N j n 100%. Můžeme si také všimnout údaje o chybějící hodnotě sledované proměnné. Procedura odpovídající pozorování implicitně ignoruje, tj. za rozsah souboru je zde při výpočtu četností vzato n = 29. Posledním postřehem je, že známky jsou vypsány ve vyhovujícím pořadí. SAS jednotlivé kategorie sledované proměnné do tabulky řadí vzestupně, resp. abecedně, takže v tomto případě je správné uspořádání hodnot spíše dílem náhody. Stačilo by namísto číselných hodnot pro jednotlivé známky použít textové řetězce (vyborne, chvalitebne atd.) a výsledné uspořádání hodnot v tabulce by bylo nelogické a smysl by nedávaly ani sloupce s kumulativními četnostmi (už by na základě nich nešlo rozumně určit, že např. 79,31% studentů mělo z chemie trojku či lepší známku). Problematice uspořádání hodnot v četnostní tabulce se budeme věnovat později. Kumulativní četnosti nedávají smysl ani v případě, kdy sledovaná proměnná je nominální a její hodnoty nelze uspořádat, ale SAS tyto četnosti implicitně přesto vypisuje, neboť obecně nemá jak rozeznat nominální proměnnou od ordinální. V následující části proto bude mj. popsáno, jak zobrazovaní kumulativních četností zakázat. Vybrané volby příkazu TABLES Vypisování sloupců do četnostní tabulky můžeme regulovat následujícími volbami příkazu TABLES: NOCUM způsobí, že četnostní tabulka bude vypsána bez sloupců s absolutními kumulativními četnostmi a relativními kumulativními četnostmi. NOPERCENT vypíše četnostní tabulku bez sloupců s relativními četnostmi a relativními kumulativními četnostmi. Volby příkazu TABLES se zadávají za lomítkem (podobně jako volby ostatních příkazů statistických procedur v SASu). Kdyby nás kupříkladu zajímalo pouze zastoupení chlapců a dívek v souboru znamky bez kumulativních četností, které pro nominální proměnnou Pohlavi nemají význam, i bez relativních četností, tak by procedura měla tvar PROC FREQ DATA=znamky; TABLES Pohlavi / NOCUM NOPERCENT; Uveďme ještě volbu MISSING, která upravuje zacházení s chybějícími hodnotami: MISSING zapříčiní, že chybějící hodnoty sledované proměnné budou chápány jako její samostatná kategorie. Pro tuto kategorii tudíž budou spočítány všechny četnosti a chybějící hodnoty budou zahrnuty i do rozsahu souboru n, což ovlivní také relativní četnosti standardních kategorií proměnné.

Kapitola 4. Popisná statistika v SASu 51 Separátní četnostní tabulky pro skupiny určené příkazem BY Příkaz BY je součástí mnoha vlastních procedur a jeho funkcí většinou je, roztřídit podle hodnot určité proměnné data do skupin, pro něž daná procedura zobrazí výsledky samostatně. S výjimkou procedury SORT je vždy nutným předpokladem použití příkazu BY, aby data byla setříděna podle hodnot proměnné, kterou příkazem specifikujeme. Podobně je tomu i v případě procedury FREQ. Ta umožňuje pomocí příkazu BY vypsat četnostní tabulky zvlášť pro skupiny tímto příkazem definované, jestliže jsou data odpovídajícím způsobem setříděna. Pro náš soubor se známkami ukážeme, jak bychom mohli vypsat četnostní tabulky pro známky z chemie zvlášť podle pohlaví studentů: PROC SORT DATA=znamky OUT=znamky_setridene; BY Pohlavi; PROC FREQ DATA=znamky_setridene; TABLES Chemie / MISSING; BY Pohlavi; Obrázek 4.15: Četnostní tabulky pro známky podle pohlaví Užití formátů při práci s četnostními tabulkami Vraťme se nyní k dříve nastíněnému problému uspořádání úrovní ordinálních proměnných v četnostních tabulkách. Pro určitost předpokládejme, že nás zajímají počty různě závislých kuřáků v již dobře známém datovém souboru sashelp.heart, takže použijeme proceduru FREQ a příkaz TABLES aplikujeme na proměnnou Smoking_Status. Jednotlivé úrovně proměnné budou uspořádány v nežádoucím abecedním pořadí (Heavy, Light, Moderate, Non-smoker a Very Heavy). Požadovaného pořadí úrovní lze dosáhnout pomocí formátů podobně jako když jsme v odstavci 4.3.2 měnili pořadí více box plotů v jednom grafu. Vytváření vlastních formátů bylo popsáno v odstavci 3.1.3, zde jen přidejme kód vedoucí ke správnému uspořádání hodnot proměnné Smoking_Status v četnostní tabulce:

Kapitola 4. Popisná statistika v SASu 52 PROC FORMAT; VALUE $kurakfmt Non-smoker = 1. Non-smoker Light (1-5) = 2. Light (1-5) Moderate (6-15) = 3. Moderate (6-15) Heavy (16-25) = 4. Heavy (16-25) Very Heavy (> 25) = 5. Very Heavy (16-25) ; PROC FREQ DATA=sashelp.heart ORDER=FORMATTED; FORMAT Smoking_Status $kurakfmt.; TABLES Smoking_Status; Obrázek 4.16: Četnostní tabulka s úrovněmi seřazenými pomocí formátu Kromě vytvoření formátu $kurakfmt a propojení tohoto formátu příkazem FORMAT s proměnnou Smoking_Status uvnitř procedury FREQ bylo ještě třeba zadat následující volbu příkazu PROC FREQ: ORDER=DATA FORMATTED FREQ určuje pořadí úrovní hodnot sledované proměnné v četnostní tabulce. Pořadí odvozené z naformátovaných hodnot proměnné žádáme klíčovým slovem FORMATTED. Pomocí klíčového slova DATA by úrovně byly vypsány v souladu s pořadím, v jakém se poprvé vyskytly v datech, a slovo FREQ úrovně proměnné v tabulce seřadí sestupně od úrovně s nejvyšší četnosti. Při práci s kvalitativními daty v SASu mají formáty využití také při slučování hodnot proměnných nebo v situaci, kdy má nějaká ordinální proměnná být vytvořena kategorizací kvantitativní proměnné. Kdyby nás v souboru sashelp.heart zajímalo pro změnu věkové zastoupení lidí vybraných do studie (proměnná AgeAtStart), jistě bychom nezkoumali četnosti pro každou vyskytující se hodnotu věku, nýbrž se nabízí hodnoty věku kategorizovat. Aplikováním procedury UNIVARIATE na proměnnou AgeAtStart zjistíme, že věky účastníků na začátku studie sahají od 28 po 62 let. Můžeme např. stanovit kategorie: pod 40 let, 40 až 50 let a nad 50 let. Následující kód ukazuje, jak tuto kategorizaci provést s využitím formátů:

Kapitola 4. Popisná statistika v SASu 53 PROC FORMAT; VALUE fmtveku LOW - <40 = pod 40 40-50 = 40 až 50 50< - HIGH = nad 50 ; PROC FREQ DATA=sashelp.heart; FORMAT AgeAtStart fmtveku.; TABLES AgeAtStart; Obrázek 4.17: Četnostní tabulka pro kategorizované hodnoty věku O správné uspořádání úrovní kategorizované proměnné AgeAtStart jsme se nemuseli starat díky tomu, že implicitně (tj. bez volby ORDER) se úrovně řadí podle původních, nenaformátovaných hodnot (libovolná původní hodnota věku z kategorie pod 40 let předchází libovolnou hodnotu věku z kategorie 40 až 50 let atd.). Použití příkazu WEIGHT při načítání četnostních a kontingenčních tabulek V závěru tohoto odstavce se zastavme u situace, kdy bychom již měli k dispozici tabulku četností, jako je třeba ta na obrázku 4.17, a chtěli bychom její údaje načíst do SASu např. pro účely další analýzy. V praxi tato potřeba může vyvstat obzvláště při práci s kontingenčními tabulkami známou kontingenční tabulku bychom mohli chtít zadat do SASu a následně v něm testovat nezávislost proměnných, jimiž je tabulka určena, případně určit míru jejich závislosti apod. V této práci se většinou omezujeme na jednorozměrnou analýzu dat, pročež se kontingenčních tabulek, které jsou určeny pro zkoumání více (kvalitativních) proměnných současně, pouze dotkneme s cílem popsat význam příkazu WEIGHT procedury FREQ. Vytváření kontingenčních tabulek se v SASu velmi podobá vypisování jednorozměrných četnostních tabulek. Opět můžeme použít proceduru FREQ, pouze je nutné u příkazu TABLES proměnné, které tabulku určují, navzájem oddělit znakem hvězdičky (*). Kontingenční tabulku pro známky z fyziky a z chemie v souboru znamky tedy vypíšeme takto: PROC FREQ DATA=znamky; TABLES Fyzika*Chemie / NOPERCENT NOROW NOCOL;

Kapitola 4. Popisná statistika v SASu 54 Poznámka 4.14. Kategorie poslední jmenované proměnné jsou vždy sloupce výstupní tabulky, kategorie předposlední proměnné utvoří řádky (viz obrázek 4.18). Jsou-li specifikovány ještě další proměnné (případ tří a vícerozměrných tabulek), pak jejich kategorie (či kombinace kategorií) určují vrstvy n-rozměrné tabulky. Volby NOPERCENT, NOROW a NOCOL byly použity, aby se v buňkách zobrazovaly jen absolutní četnosti. Pro úpravy kontingenčních tabulek se dá využít formátů dříve popsaným způsobem. Obrázek 4.18: Kontingenční tabulka pro známky Tato kontingenční tabulka vznikla na základě datového souboru znamky, který obsahuje jen n = 30 pozorování. Při jeho vytváření jsme tak vystačili s běžným způsobem načítání dat, kdy se datové hodnoty zadávají zvlášť pro každé z n pozorování (viz kód na str. 49). Tento způsob by ovšem přinesl komplikace už ve chvíli, kdy bychom chtěli načíst tuto jednoduchou kontingenční tabulku: Léčba Vedlejší účinek (nevolnost) Ano Ne Skutečný lék 15 35 50 Placebo 4 46 50 19 81 100 Tabulka 4.3: Vzorová kontingenční tabulka Nyní je v tabulce zaznamenáno 100 pozorování, což by načítání běžným způsobem činilo složitým. Z toho důvodu využijeme příkaz WEIGHT, jímž lze specifikovat numerickou proměnnou, která bude vážit každé zadané pozorování. Toto pozorování pak bude ve skutečnosti představovat k pozorování, kde k je odpovídající hodnota váhové proměnné. Kontingenční tabulku podle vzorové tabulky 4.3 vytvoříme pomocí příkazu WEIGHT následovně: DATA lecba; INPUT lecba $ nevolnost $ cetnost @@; DATALINES;

Kapitola 4. Popisná statistika v SASu 55 lek ano 15 lek ne 35 placebo ano 4 placebo ne 46 ; PROC FREQ DATA=lecba; TABLES lecba*nevolnost / NOPERCENT NOROW NOCOL; WEIGHT cetnost / ZEROS; Obrázek 4.19: Výsledek načtení tabulky 4.3 do SASu Níže je popsána volba ZEROS příkazu WEIGHT, která byla použita v kódu: ZEROS zahrne do výstupní tabulky i kombinace kategorií (tj. buňky tabulky) mající nulovou četnost (v uvedeném kódu je volba jen pro ukázku, nulové buňky se nevyskytují). Implicitně procedura pozorování s nulovou váhou ignoruje. Zcela analogicky můžeme příkazu WEIGHT využít při tvorbě jednorozměrných četnostních tabulek. 4.5 Grafická analýza kvalitativních dat Grafická analýza kvalitativních dat zahrnuje různé způsoby vizualizace četností, kterým jsme se věnovali v předchozím odstavci při popisu četnostních tabulek. Stejně jako četnostní tabulky lze i některé grafy vhodné pro kvalitativní data vytvářet pomocí procedury FREQ, a to použitím volby PLOTS příkazu TABLES. Obecný zápis procedury pro zobrazení grafů pak je: ODS GRAPHICS ON; PROC FREQ DATA=datovy-soubor-SASu; TABLES kombinace-promennych / volby PLOTS = seznam-grafu(volby-grafu); ODS GRAPHICS OFF; (Vykreslování grafů je podmíněno povolením ODS grafiky, viz poznámku 4.12 na str. 45.)

Kapitola 4. Popisná statistika v SASu 56 4.5.1 Sloupcový graf Sloupcový graf je soustava stejně širokých obdélníků sestrojených nad každou kategorií sledované proměnné, přičemž výška každého obdélníku je rovna absolutní či relativní četnosti odpovídající kategorie. Na rozdíl od histogramu jsou jednotlivé obdélníky sloupcového grafu odděleny mezerami, aby se zdůraznilo, že příslušná proměnná je kvalitativní. K sestrojení sloupcového grafu procedurou FREQ je nutné za volbou PLOTS uvést klíčové slovo FREQPLOT: TABLES kombinace-promennych / volby PLOTS = FREQPLOT(volby-grafu); Níže přidáváme popis užitečných voleb (viz volby-grafu) pro modifikace sloupcového grafu: SCALE=PERCENT GROUPPERCENT změní měřítko vertikální osy s četnostmi. Implicitní je hodnota SCALE=FREQ, jež zobrazuje absolutní četnosti jednotlivých kategorií. Pro SCALE=PERCENT budou výšky sloupců měřeny relativními četnostmi kategorií vůči celku. Nastavení SCALE=GROUPPERCENT funguje pro dvourozměrné sloupcové grafy a zapříčiní, že místo relativních četností vůči celku budou výšky sloupců měřeny relativními četnostmi vůči dané skupině dat určené kombinováním kategorií proměnných u příkazu TABLES. TWOWAY=GROUPHORIZONTAL CLUSTER STACKED určuje uspořádání dvourozměrných sloupcových grafů. Implicitně je použito nastavení TWOWAY=GROUPVERTICAL, při němž jsou sloupcové grafy vykresleny zvlášť pro každou úroveň první jmenované proměnné a uspořádány jsou do jednoho obrázku nad sebe (společná horizontální osa pak představuje kategorie druhé jmenované proměnné). V případě hodnoty TWOWAY=GROUPHORIZONTAL se sloupcové grafy vykreslí zvlášť pro každou úroveň druhé jmenované proměnné a uspořádány jsou do jednoho obrázku vedle sebe. Význam zbývajících dvou nastavení je patrný z obrázků 4.20 a 4.21 níže. Podobně je možné zobrazit sloupcový graf znázorňující kumulativní četnosti úrovní, nahradíme-li klíčové slovo FREQPLOT slovem CUMFREQPLOT. Tento graf ale neumožňuje sledovat více proměnných současně, a tak pro jeho vykreslení nesmí být mezi proměnnými v příkazu TABLES symbol hvězdičky. Volba SCALE pro graf kumulativních četností funguje stejně jako pro obyčejný sloupcový graf: ODS GRAPHICS ON; PROC FREQ DATA=znamky; TABLES Chemie / PLOTS = CUMFREQPLOT(SCALE=PERCENT); ODS GRAPHICS OFF; (Výsledný graf viz obrázek 4.22.)

Kapitola 4. Popisná statistika v SASu 57 ODS GRAPHICS ON; PROC FREQ DATA=znamky; TABLES Pohlavi*Chemie / PLOTS = FREQPLOT(TWOWAY=CLUSTER); ODS GRAPHICS OFF; ODS GRAPHICS ON; PROC FREQ DATA=znamky; TABLES Pohlavi*Chemie / PLOTS = FREQPLOT(TWOWAY=STACKED); ODS GRAPHICS OFF; Obrázek 4.20: Dvourozměrný sloupcový graf shlukový Obrázek 4.21: Dvourozměrný sloupcový graf skládaný Obrázek 4.22: Graf relativních kumulativních četností známek 4.5.2 Koláčový graf Koláčový graf umožňuje zběžně porovnat četnosti jednotlivých kategorií (obsah výsečí) s celkovým počtem pozorovaných hodnot dané proměnné (obsah celého kruhu). Je proto hojně využíván např. v médiích, avšak v seriózní literatuře se téměř nevyskytuje délky sloupců u sloupcových diagramů lze porovnat přesněji než obsahy či úhly výsečí, koláčové grafy se stávají nepřehlednými při vyšším počtu kategorií atd.

Kapitola 4. Popisná statistika v SASu 58 Z procedur, které v SASu umožňují vykreslování koláčových grafů, zde představíme proceduru GCHART a její příkaz PIE s následující obecnou syntaxí: PROC GCHART DATA=datovy-soubor-SASu; PIE seznam-promennych / volby; Proměnné mohou být libovolného typu, specifikováním více proměnných se grafy vykreslí pro každou proměnnou zvlášť. Volby pro zobrazování kategorií v koláčovém grafu V této části budou vysvětleny volby, které upravují vzhled a dovolují snížit možnou nepřehlednost koláčových grafů. Pracovat budeme znovu se souborem sashelp.cars, který byl představen v odstavci 4.3.3. TYPE=PERCENT zobrazí u kategorií grafu jejich procentuální podíly na celku. Implicitní je nastavení TYPE=FREQ, které ke kategoriím vypisuje jejich absolutní četnosti. OTHER=p sloučí všechny kategorie, jejichž podíl na celku je nejvýše p%, do jediné kategorie s názvem OTHER. Implicitní je hodnota p = 4. Je-li přítomna jediná kategorie s relativní četností nejvýše 4 %, nemá volba žádný vliv. Funkce volby OTHER je zřetelná z obrázků 4.23 a 4.24 níže, na kterých koláčové grafy ukazují zastoupení různých značek u těch automobilů ze souboru sashelp.cars, které byly vyrobeny v USA. Ostatní volby použité v kódu nad obrázkem 4.24 budou objasněny vzápětí. Při implicitním nastavení jsou kategorie (výseče) v grafu řazeny vzestupně (resp. abecedně) dle svých názvů, a to proti směru hodinových ručiček. První kategorie začíná na pozici tří hodin. Pořadí kategorií je opět možné ovlivnit vytvořením vlastního formátu pro sledovanou proměnnou a následným přiřazením tohoto formátu proměnné příkazem FORMAT uvnitř procedury GCHART. Další možnosti pro úpravu pořadí a rozvržení kategorií nabízejí následující volby: ASCENDING DESCENDING uspořádá výseče grafu ve vzestupném, resp. sestupném pořadí podle příslušných četností. Žádná z obou voleb ovšem neovlivní umístění výseče pro kategorii OTHER, která je vždy poslední. CLOCKWISE způsobí, že výseče grafu budou řazeny po směru hodinových ručiček s první výsečí na pozici dvanácti hodin. ANGLE=hodnota-ve-stupnich umístí výseč první kategorie na pozici danou uvedeným úhlem. Implicitní hodnota 0 koresponduje s pozicí tří hodin, zadané hodnoty mohou být kladné i záporné pro určení odpovídajícího směru úhlu.

Kapitola 4. Popisná statistika v SASu 59 PROC GCHART DATA=sashelp.cars; WHERE Origin= USA ; PIE Make / TYPE=PERCENT; PROC GCHART DATA=sashelp.cars; WHERE Origin= USA ; PIE Make / TYPE=PERCENT OTHER=7 ANGLE=90 DESCENDING; Obrázek 4.23: Základní koláčový graf pro značky automobilů Obrázek 4.24: Koláčový graf pro značky automobilů s použitím voleb Nejvíce přímočarou možností pro výběr kategorií a stanovení jejich pořadí v grafu je vyjmenovat tyto kategorie ve zvoleném pořadí volbou MIDPOINTS: MIDPOINTS=seznam-hodnot zobrazí v grafu pouze kategorie specifikované v seznamu-hodnot v takovém pořadí, v jakém byly vyjmenovány. Jestliže je sledovaná proměnná znaková, musí její hodnoty být zadány v uvozovkách. Volby pro srovnávací koláčové grafy Chceme-li koláčové grafy využít k posouzení vlivu určité klasifikační proměnné na četnosti kategorií proměnné, kterou analyzujeme, pak jsou relevantní tyto volby příkazu PIE: GROUP=klasifikacni-promenna vykreslí grafy zvlášť pro každou hodnotu klasifikační proměnné. Výseče reprezentující stejnou kategorii zkoumané proměnné mají v každém grafu stejnou barvu. ACROSS=pocet-sloupcu DOWN=pocet-radku vykreslí grafy pro všechny skupiny na jednu stránku hned vedle sebe (s volbou ACROSS) nebo pod sebe (s volbou DOWN) pro snazší srovnání. Využitím obou voleb můžeme v souboru sashelp.cars např. zkoumat, zda (a jak) se liší zastoupení různých typů automobilů v závislosti na tom, kde byly vyrobeny (Evropa, USA):

Kapitola 4. Popisná statistika v SASu 60 PROC GCHART DATA=sashelp.cars; WHERE Origin IN ( Europe, USA ); PIE Type / GROUP=Origin ACROSS=2 TYPE=PERCENT CLOCKWISE; Obrázek 4.25: Srovnávací koláčové grafy