Longitudinální a panelová data – NMST422

Letný semester 2026 | Cvičenie 1 | 02.03.2026



I. Základy programu SAS

Cvičenie k predmetu NMST422 prebieha štandardne formou rôznych teoretických a praktických úloh. Vzorové príklady, ilustrácie na reálnych datach a ďalšie praktické problémy budú riešené pomocou štatistického programu SAS.

Pre účely výuky budeme pracovať s (bezplatným) cloudovým online produktom SAS OnDemand ktorý je pre akademické použitie dostupný prostredníctvom webového rozhrania na adrese https://welcome.oda.sas.com/ (špecifické podrobnosti sú nižšie).

Jednotlivé príklady, konkrétne úlohy, aj ilustrácie na reálnych datach budú zadávané prostredníctvom predpripraveného zdrojového kódu, ktorý je možné priamo kopírovať do webového rozhrania SAS OnDemand a následne zdrojový kód spustiť (pomocou tlačítka Run).

Súčasťou cvičenia bude jednak riešenie konkrétnych praktických problémov, dopĺňovanie a rozšírovanie teoretických znalosti z prednášky a práca s programom SAS (v rámci štatistickej analýzy panelových a longitudinálnych datových súbprov).

Doporučená literatúra a ďalšie užitočné materiály
  • Diggle, P., Diggle, P. J., Heagerty, P., Liang, K. Y., & Zeger, S. (2002). Analysis of longitudinal data. Oxford university press.
  • Fitzmaurice, G. M., Laird, N. M., & Ware, J. H. (2012). Applied longitudinal analysis. John Wiley & Sons.
  • Hardin, J.W. and Hilbe, J.M. (2007). Generalized Linear Model and Extensions. StataPress.
  • Pinheiro, J., & Bates, D. (2006). Mixed-effects models in S and S-PLUS. Springer science & business media.

  • Jednoduchý (online) SAS tutorial (english)
  • Základný SAS OnDemand tutorial (english)
  • Stručný (Český) manuál uživatele SASu na stránke doc. Kulicha
  • Užitočné aj neužitočné príklady zdrojových kódov v SAS (english)




1. SAS OnDemand

Predstavuje viac-menej plnohodnotnú inštaláciu programu SAS, ktorá funguje na online cloude a ktorá je (registrovaným užívateľom) k dispozícii prostredníctvom webového rozhrania https://welcome.oda.sas.com. Po vytvorení účtu a následnom prihlásení je pre používanie programu SAS potrebné internetové pripojenie. Podrobnejšie informácie je možné nájsť na webovej stránke
https://www.sas.com/en_us/software/on-demand-for-academics.html.


Samostatne


Ak boli všetky kroky urobené správne, zobrazí sa SAS konzola, v ktorej je možné vytvárať resp. editovať zdrojový kód programu SAS a tieto bloky následne vyhodnotiť (stlačením tlačítka Run). Niekoľko jednoduchých a ilustrativných príkladov SAS kódu je uvedených v následujúcej časti.

Užitočné

  • V prípade, že je program SAS nainštalovaný na lokálnom počítači/notebooku, je možné (v určitej miere) používať program SAS prostredníctvom programu R (resp. Rkového interfacu RStudio). Je nutné ale použiť R knižnicu `SASmarkdown’, ktorá sa v programe R nainštalujete a následne inicializujete pomocou dvojice príkazov

    install.packages("SASmarkdown")
    library(SASmarkdown)
  • Následne je možné použíť Rkový balíček (knižnicu) `Knitr’ a prostredníctvom programu R skompilovať (t.j., vytvoriť napr. HTML markdown, alebo PDF dokument) zdrojový Rmd súbor, ktorý ale na rozdiel od príkazov pre program R bude obsahovať príkazy pre program SAS.
  • Podrobnejšie informácie je možné nájsť napr. na oficiálnej CRAN stránke knižnice `SASmarkdown’ a príslušnej PDF dokumentácii, alebo tiež na tejto stránke.



Základná syntax programu SAS

Niekoĺko základných informácii ohľadom syntaxe používanej v programe SAS:
  • Každý příkaz v programe SAS končí středníkem (chýbajúci středník býva najčastejšou chybou);
  • Příkazy mohou být libovolně rozděleny na více řádků, pokud nejsou rozděleny uvnitř klíčového slova nebo jména;
  • Příkazy mohou mezi klíčovými slovy a jmény obsahovat libovolné množství mezer (ale aspoň jednu);
  • Na jednom řádku může být více příkazů (oddělených středníky);
  • Řádky dat se neoddělují středníky. Všechny hodnoty dat vstupující z klávesnice se považují za jeden příkaz a jsou ukončeny jedním středníkem na konci (v praxi ale data väčšinou načítame z datového súboru);
  • Program SAS nerozlišuje velká a malá písmena, s výjimkou řetězcových konstant;
  • Jména proměnných se skládají z písmen a číslic, nesmí začínat číslicí a mohou obsahovat nejvýše 8 znaků;



Pre účely výuky budú podkladové zdrojové kódy pre program SAS k dispozícíí v následujúcom formáte (príkazy z nasledujúceho bloku je možné jednoducho skopírovať a vložit do SAS konzoly vo webovom rozhrani SAS OnDemand—po príhlásení sa do svojho účtu—a následne spustiť):

/* jednoduchý príklad v SAS */
data example1;
  ex1 = probnorm(0);
  ex2 = probnorm(-1) - probnorm(1);
  ex2 = probnorm(-2) - probnorm(2);
  ex3 = probnorm(quantile('normal', 0.95));
run;

Tento jednoduchý datový súbor (čo presne jednotlivé hodnoty representujú?) je možné vizualizovať pomocou procedúry PROC PRINT:

proc print data=example1; 
run; 

Prípadne je možné použiť aj více specificku verziu – napr.

proc print data=example1; 
  var ex1 ex2; 
run; 



2. Základné príkazy a jednoduché príklady

Niekoľko jednoduchých, ale pre celkové porozumenie implementácie (štandardne používanej v programe SAS) je možné nejaké užitočné príklady nájsť na tejto stránke. Celkom intuitivný je aj SAS tutoriál na webovej stránke https://www.tutorialspoint.com/.


Samostatne

  • Vytvorenie jednoduchého (stručného) datového súboru v programe SAS:

    data example2; 
      input id name $ gender age height; 
      datalines; 
      1 jozef 1 28 162
      2 petr  1 51 180
      3 marie 2 42 165
      4 filip 1 12 155
      5 klara 2 55 172
      6 tomas 1 42 182
      7 sarka 2 40 178
      ;
    run; 

    Ako by vyzeral datový súbor vytvorený bez použitia špeciálneho znaku $?

  • <liNiektoré základné popisné charakteristiky (exploratívne štatistiky) vo vytvorenom datovom súbore:

    proc means data=example2 mean median std var;
      var age height;
    run;

    Podrobnosti k SAS procedúre PROC MEANS je možne nájsť napr. v SAS dokumentácii. Analogické popisné charakteristiky sumarizované v rámci pohlavia získame napr. takto:

    proc sort data=example2;
      by gender;
    run;
    
    proc means data=example2 mean median std var;
      by gender;
      var age height;
    run;

    Ako by vyzeral výstup z procedúry PROC MEANS bez predchádzajúceho použitia procedúry PROC SORT?

  • Jednoduchý scatterplot:

    title 'Výška v závislosti na věku';
    proc sgplot data=example2;
    
       styleattrs datacolors=(blue red);
    
       scatter x=age y=height /
               group=gender
               datalabel=name;
    
       keylegend / title="Pohlaví";
    run;
  • Samostatne
    Rozšírte datový súbor pridaním nových pozorovaní a dodatočných premenných (prípadne využijte transformáciu už existujúcich premenných). Pomocou SAS tutoriálu, dokumentácie k jednotlivým procedúram, prípadne google/chatGPT sa pokúste vypracovať jednoduchú analýzu datového súboru (t.j., popisné charakteristiky, vhodný obrázok, prípadne nejaký štatistický test/model). Použitie dvojvýberového \(t\)-testu pre otestovanie zhodnosti stredných hodnôt výšky mužov a žien:

    proc ttest data=example2;
       class gender;
       var height;
    run;



V praxi je ale dôležitejšie pracovať s reálnymi datovými súbormi. Je preto nutné dokázať datový súbor správne načítať do programu SAS a následne s nim pracovať. Pomocou cloudového web rozhrania SAS OnDemand je možne vzhľadom k licenčným podmienkam pre používanie SAS OnDemand načítať len niektoré súborové typy—hlavne tzv. “SAS related datasets”, t.j. napr. .sas7bdat, .sd2 (SAS Data File), štandardné textové súbory, napr. .csv (comma delimited), .txt (text file), ,dat (flat data file), nebo .tab (text file).

Pre potreby výuky budeme využívať hlavne datové súbory typu .csv a prípadne .txt. Toto obmedzenie preto nebude v žiadnom smere limitujúce.

Zoznam niekoľkých vzorových datových súborov pre program SAS je k dispozícii na následujúcej stranke:
https://support.sas.com/documentation/onlinedoc

Stiahnite si niektorý z datových súborov, ktoré sú k dispozícii na uvedenej webovej stránke (pripadne použijte niektorý z následujúcich súborov: cars.csv (cross-sectional data) nebo sm_data.csv) (longitudinálne data) a uploadujte súbor do svojho účtu v SAS OnDemand. Data sa pokúste načítať do programu SAS. Napríklad datový súbor cars.csv je možné z pracovného adresáru načítať a následne zobraziť pomocou SAS príkazov

filename reffile '/home/uXXX/sasuser.v94/data/cars.csv';

proc import datafile=reffile
    dbms=csv
    out=work.data
    replace;
    getnames=yes;
run;

V zdrojovom kóde vyššie je potrebné nahradiť výraz XXX príslušným užívateľským číslom (ktoré je špecifické pre každého užívateľa a ktoré je pridelené pri registrácii do služby do SAS OnDemand).

Datový súbor zobrazíme napr. pomocou príkazu

proc print data = work.data;
run;


Samostatne

  • S využitím datového súboru cars.csv spočítajte základné popisné charakteristiky pre niektoré numerické premenné. Uvažujte aj podkategórie definované kvalitativnými premennými.
  • Vhodnými obrázkami vizualizujte štruktúru dat. Zamerajte sa na závislosť spontreby (t.j., premenné MPG_City a MPG_Highway).
  • Aplikujte vhodný štatistický model a otestujte, či stredná hodnota spotreby v meste je rovnaká, ako je stredná hodnota spotreby na diaľnici.



Datový súbor pacientov s SM

Ilustračný datový súbor sm_data.csv, ktorý obsahuje opakované pozorovania pacientov (t.j. data longitudinálneho typu) so sklerózou multiplex (ďalšie podrobnosti o tomto datovom súbore budú diskutované postupne v priebehu semestru), je možné načítať a zobraziť pomocou príkazov

filename reffile '/home/uXXX/sasuser.v94/data/sm_data.csv';

proc import datafile=reffile
    dbms=csv
    out=work.data
    replace;
    getnames=yes;
    guessingrows=300;
run;

proc print data = work.data;
run;



Užitočné

Pozrite sa na funkcionalitu dotatočného parameteru guessingrows=300 použitom v príkaze vyššie. Načítajte data bez tohto parametru (defaultná hodnota je 20) a podrobne preskúmajte načítane data – viac užitočných podrobnosti, ako správne načítať .csv súbory v programe SAS, je možné nájsť napríklad na tejto stránka.


Základnú štruktúru súboru získame pomocou príkazu

proc contents data=work.data; 
run;

Vzhľadom na povahu predmetu (t.j., longitudinální a panelová data) sa v následujúcej časti stručne pozrieme práve na tento datový súbor a využijeme niektoré grafické nástroje v programe SAS, ktoré slúžia k vizualizácii opakovaných pozorovaní – resp. longitudinálnych profilov.

3. Základné grafické nástroje v programe SAS

  • Stručný popis niektorých grafických nástrov (t.j., konkrétnych procedúr) v SASe napríklad na tejto stránke;
  • Komplexnejší a sofistikovanejší popis niektorých SAS nástrojov určených pre komplexnú vizualizáciu datových súborov a výsledkov (štatistickej) analýzy napríklad na tejto stránke;


Samostatne

  • Využijte niektoré z dostupných grafických nástrojov v programe SAS a pokúste sa vizualizovať niektoré zaujímavé charakteristiky v datovom súbore pacientov s SM.
  • Vytvoriť graf, ktorý bude obsahovať viac, ako pouze dve rôzne premenné (t.j., jednoduchý \(xy\) scatterplot s využitím niektorých kategorických premennych).


V prípade časovo závislých pozorovaní býva podstatné tento fakt patrične v grafe vizualizovať. Často používané sú napr. tzv. “subject-specific time profiles”, resp. časovo závislé profily pre jednotlivé (nezávislé) subjekty. Jedná z mnohých možností, ako takéto profily v programe SAS získať, je napríklad následujúca časť SAS kódu:

proc sgplot data=work.data;
    series y=EDSS x=LEM1 /group=patient;
run;

proc sgplot data=work.data;
    reg x=EDSS y=LEM1 / group=PDMT;
run;

   



O niečo komplexnejší graf obsahujúci aj odhadnuté priemerné profily (pomocou tzv. LOWESS vyhladzovania) a binárnu premennú NEDA (tzv. “No Evidence of Disease Activity”), je možné získať napr. následujúcim SAS kódom:

proc sgplot data=work.data;
    styleattrs datacolors=(gray black);

    series x=LEM1 y=EDSS / group=patient
           group=NEDA
           transparency=0.8;

    loess x=LEM1 y=EDSS /
           group=NEDA
           lineattrs=(thickness=3);
run;

Pokúste sa datový súbor vhodne upraviť a vizualizovať pouze určitú jeho časť. Napríklad, lze uvažovať pouze pacientov mužov/ženy, prípadne zjednotiť tzv. “follow-up period” od času \(t = 0\) až do času posledného merania. Uvažujte prípadne niektorú z dodatočných premenných, ktoré sú explicitne uvedené v datovom súbore.



Samostatne

  • Stiahnite si datový súbor rats.csv a načítajte tieto data do programu SAS. Datový súbor obsahuje longitudinálne pozorovania pre 27 (vzájomne nezávislých) myší, u ktorých je sledovaná telesná váha (v gramoch) po dobu 5 týžňov (od narodenia). Uvažujú sa tri rôzne skupiny a každý jedinec je meraný 5 krát (t.j., tzv. balancovaný datový súbor).
  • Pomocou programu SAS vykreslite individuálne profily pre jednotlivé myši a pokuste sa uvažovať rôzne skupiny (controlná skupina control a dve treatment skupiny – thiour a thyrox)
  • Následujúci kód načíta datový súbor v programe SAS, vypíše základné charakteristiky a a vykresli individuálne profily (resp. skupinové regresné priamky):

    FILENAME rats '/home/uXXX/sasuser.v94/data/rats.csv';
    
    proc import datafile = rats
        dbms = csv
        out = rats;
        getnames = yes;
    run;
    
    proc print data = rats; 
    run; 
    
    proc contents data = rats; 
    run;
    
    proc sgplot data=rats;
        series y=resp x=time /group=subject;
        reg x=time y=resp / group=group;
    run;
  • Subject-specific profily vs. skupinove priemery (lineárne regresné priamky):

       



4. Stručné teoretické opakovanie (samostatný úkol)

Pripomeňte si teoretické základy lineárnej regresie, konkrétne:
  1. Štandardné značenie a formulácia ordinálneho lineárneho (normálneho) regresného modelu;
  2. Mnohonásobného (tzn. multiple, t.j., \(\boldsymbol{X} \in \mathbb{R}^p\)) regresného modelu;
  3. Zobecněného lineárneho regresného modelu (GLM).

Pomocou programu SAS a konkrétneho datového súboru (podľa vlastného výberu) nafitujte linerárny regresný model typu 1., 2., aj 3. (pre jednotlivé regresné modely je možné využiť rôzne datové súbory).

Na záver, do svojho online účtu v SAS OnDemand uploadujte niekoľko datových súborov (napr. z programu R), tak aby bolo možné ich následne správne načítať do programu SAS (tieto datové súbory budú následne slúžiť ako pomocné a ilustračné data pre ďalšiu prácu v rámci semestru). Ideálne by niektoré datové súbory mali byt longitudinálneho typu.