Longitudinální a panelová data – NMST422

Letný semester 2024 | Cvičenie 2 | 04.03.2024



Prihlásenie k SAS OnDemand: https://www.sas.com/en_us/software/on-demand-for-academics.html

Doporučená literatúra a ďalšie užitočné materiály




II. Exploratívna analýza longitudinálnych dat

Podobne ako v prípade štandardných (lineárnych) regresných modelov (resp. akejkoľvek štatistickej analýzy – t.j. aplikácie nejakého konkrétneho stochastického modelu), je štatistická analýza dat rozdelená do dvoch samostatných, ale vzájomne prepojených časti – exploratívnej analýzy a tzv. “confirmatoryanalýzy. Exploratívna analýza využíva rôzne popisné charakteristiky (t.j., empirické odhady teoretických charakteristík) a nástroje pre vizualizáciu dat. Konfirmačná analýza (i.e., štatistická inferencia) hľadá pomocou vhodných pravdepodobnostných metód odpoveď na konkrétnu (expertnú) otázku (t.j., testuje konkrétnu nulovú hypotézu).

Hlavnou výhodou longitudinálnych dat (a modelov určených na ich analýzu) je to, že na rozdiel od cross-sekčného porovnania dvoch subpopulácii umožňujú odhadovať a porovnávať (testovať) aj zmenu v rámci konkrétnych subjektov a to vzhľadom k časovo sa meniacim sa hodnotám nezávislých premenných v rámci daného subjektu. Klasická regresná analýza cross-sekčných dat umožňuje len porovnávať dve podskupiny, ktoré sa vzájomne líšia vzhľadom k hodnotám nezávislých premenných. Longitudinálne data a modely teda umožňujuú porovnanie jednak statických (medzi-populačných) rozdielov a tiež dynamických zmien v rámci konkrétneho subjektu. Nejedná sa ale o kauzálnu analýzu.

Pre \(N \in \mathbb{N}\) nezavislých subjektov, z ktorých každý subjekt \(i \in \{1, \dots, N\}\) sledujeme opakovane \(n_i \in \mathbb{N}\) krát, môžeme data reprezentovať v tvare \(\{(Y_{ij}, \boldsymbol{X}_{ij}^\top)^\top;~i = 1, \dots, N; j = 1, \dots, n_{i}\}\). V prípade reprezentácie v zmysle \[ \{(\boldsymbol{Y}_{i}^\top, \boldsymbol{X}_{i 1}^\top, \dots, \boldsymbol{X}_{i n_i}^\top)^\top;~i = 1, \dots, N\} \] môžeme dokonca (v určitom zmysle) hovoriť o náhodnom výbere (nezávislé a rovnako (združene) rozdelené náhodné vektory). Je nutn0 si ale uvedomiť, že rozmer (dĺžka) náhodných vektorov \((\boldsymbol{Y}_{i}^\top, \boldsymbol{X}_{i 1}^\top, \dots, \boldsymbol{X}_{i n_i}^\top)^\top\) je pre rôzne \(i \in \{1, \dots, N\}\) rôzna.

Obyčajný linárny regresný (tzv. “cross-sectional”) model môžeme formulovať ako \[ Y_{i 1} = \boldsymbol{x}_{i 1}^\top \boldsymbol{\beta}_{CS} + \varepsilon_{i 1}, \qquad i = 1, \dots, N, \] pre vektor neznámych parametrov \(\boldsymbol{\beta}_{CS} \in \mathbb{R}^p\). Príslušný ohad \(\widehat{\boldsymbol{\beta}}_{CS}\) lze po jednotlivých zložkách interpretovať ako odhadovaný očakávaný rozdiel medzi dvoma podskupinami, ak je rozdiel príslušného regresoru (jeden konkrétny element v \(\boldsymbol{x}_{i 1}\)) jednotkový a ostatné hodnoty regresorov (zvyšných elementov \(\boldsymbol{x}_{i 1}\)) sú rovnaké.

Na druhej strane, jednoduchý model pre longitudinálne data môžeme zapísať aj v tvare \[ Y_{i j} = \boldsymbol{x}_{i 1}^\top \boldsymbol{\beta}_{CS} + (\boldsymbol{x}_{i j} - \boldsymbol{x}_{i 1})^\top \boldsymbol{\beta}_{L} + \varepsilon_{i j}. \qquad i = 1, \dots, N; j = 1, \dots, n_i, \] kde celkový počet pozorovaní je \(\sum_{i = 1}^N n_{i}\). Model ale okrem odhadu pre vektorový parameter \(\boldsymbol{\beta}%/CS(\) (ktorý má ekvivalentnú interpretáciu ako v prípade obýčajného regresného modelu vyššie) umožňuje odhadnúť aj vektorový parameter \(\boldsymbol{\beta}_L\). Interpretácia tohto parametru je ale už specifická pre daný subjekt a vyjadruje zmenu v rámci daného subjektu \(i \in \{1, \dots, N\}\). Príslušný odhad \(\widehat{\boldsymbol{\beta}}_{L}\) môžeme po jednotlivých zložkách interpretovať ako očakávanú zmenu v rámci daného subjektu v čase, ak sa príslušný regresor zmení v čase o jednotku.


Užitočné

Niekoľko jednoduchých doporučení, ako vhodne vizualizovať longitudinálne data:

  • Obrázok/graf by mal zobrazovať čo najviac dôležitej a hlavne relevantnej informácie a tp výrazne nad ramec jednoduchých popisných charakteristík spočítaných z dat;
  • Obrázok/graf by mal vizualizovať podstatnú iformáciu a súvislosti v datach relevantne s expertnou otázkou – nulovou hypotézou;
  • Väčšinou je užitočné zobraziť jednak klasické porovnanie v zmysle štandardného lineárneho regresného modelu (cross-sectional), ale tiež longitudinálne profily (resp. zmeny vrámci subjektov);
  • Obrázok/graf by mal byť pomerne jednoduchý, transparentný a ľahko pochopiteľný (obrázok je vždy v texte doplnený o popisok, ktorý dostatočne komplexne daný obrazok popisuje);



1. Longitudinálne profily v SAS

Pre ilustráciu použijeme datový súbor pig_weights.csv, ktorý udáva váhu u 48 ošípaných, ktoré boli postupne merané po dobu 9 týždňov
(t.j., follow-up obdobie, po ktoré subjekty sledujeme, je 9 týždňov – nie ale nutné stejných 9 týždňov). Do programu SAS data načítame následujúcim príkazom:


libname weight '/home/u63241636/sasuser.v94';
filename reffile '/home/u63241636/sasuser.v94/data/pig_weights.csv';

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

Samostatne sa podívajte na niektoré základné popisné charakteristiky spočítané z dat. Pre ilustráciu niektorých popisných charakteristík poslúži napr. aj následujúci graf. Pokúste sa ale vytvoriť aj niekoľko ďalších grafov a obrázkov samostatne.

proc sgscatter data=weight.data;
   matrix weight week /
      ellipse=(type=mean)
      diagonal=(histogram kernel);
run;

V nasledujúcej časti sa špecificky zameriame na vizualizáciu datového súboru vhľadom k jeho časovo-zavislej štruktúre a tzv. subject-specific longitudinálnych profilov.

Porovnajte následujúce grafické výstupy:

proc sgscatter  data=weight.data;
   plot weight * week ;
run;
proc sgscatter  data=weight.data;
   plot weight * week  / group = id;
run;
proc sgplot data=weight.data;
    series y=weight x=week /group=id;
run;

Podívajte sa na základnú syntax procedrúry PROC sgscatter napr. na tejto stránke a analogicky tiež na syntax procedúry PROC sgplot napr. na tejto stránke.

Samostatne

  • Aké rôzne informácie lze vyčítať z jednotlivých grafov?
  • Aké informácie, ktoré by nás v súvislosti s datami mohli zaujímať, naopak z grafov nedokážeme získať?
  • Ktorý graf je pre vizualizáciu longitudinálneho charakteru dat najviac vhodný?



2. Transformácia dat a štandardizované profily

Jednoduché longitudinálne profily nie vždy dobre poslúžia k tomu, aby sme získali dôležité informácie o (časovom) vývoji konkrétneho jednotlivca vzhľadom k celkovej skupine. Špeciálne v prípadoch, keď je uvažovných subjektov príliš mnoho, je niekedy užitočné zvážiť aj graf s tzv. štandardizovanými longitudinálnymi profilmi.

Jedna z možnosti, ako štandardizované longitudinálne profily získať v programe SAS, je v niekoľkých krokoch uvedená v následujúcich bodoch:

  1. K vytvoreniu štandardizovaných profilov potrebujeme v prvom rade vhodné popisné charakteristiky spočítané z dat. Konkrétne výberové priemery a smerodatné odchýlky v jednotlivých (časových) meraniach. Vytvorenie popisných charakteristík (agregované data vzhľadom k jednotlivým týždňom follow-up obdobia) získame napr. následujúcim spôsobom:

    proc means data=weight.data mean std;
      class week;
      var weight;
      output out=summary mean = MeanValue std = StdValue;
    run;
    proc print datafile = summary; 
    run;
  2. V ďalšom kroku potrebujeme priradit jednotlivé agregované (empirické) charakteristiky k jednotlivým pozorovaniam (spojiť dva datove súbory). V programe SAS je pre tento krok kľôčove správne usporiadanie jednolivých pozorovaní – v tomto konkrétnom prípade ide o usporiadanie oboch datových súborov podľa premennej, ktorá identifikuje jednotlivé týždne (premenná week):

    proc sort data=weight.data; by week; run;
    proc sort data=summary; by week; run;
  3. Zlúčenie oboch datových súborov dohromady a opätovne preusporiadanie podľa jednotlivých subjektov (ako v pôvodných datach):

    data weight.dataStd;
      merge summary weight.data ;
      by week;
    run;
    
    proc sort data=weight.dataStd; by id; run;
  4. V aktuálnom datovom súbore už celkmo jednoducho (pomocou lineárnej kombinácie existujúcich premenných) vytvoríme novú premennú, ktorá bude obsahovať štandardizované profily: :

    data weight.dataStd;
        set weight.dataStd; 
        weightStd = (weight - MeanValue)/StdValue;
    run;
    proc print datafile = weight.dataStd; 
    run;

Momentálne sú data pripravené k vykresleniu štandardizovaných profilov. Jednotlivé “subject-specific profily” sú často výraznejšie práve v takomto type grafov:

proc sgplot data=weight.dataStd;;
    series y=weightStd x=week /group=id;
run;


Užitočné

  • Dôležitou časťou exploratívnej analýzy je postupne overovanie podmienok a predpokladov, ktoré sú postulované pravdepodobnostným modelom, ktorý na analýzu dát chceme použíť. Niektoré technické predpoklady ale nie je možné overiť priamo z podkladového datového súboru a niektoré dodatočné kroky sú nutné…
  • Graf štandardizovaných rezíduí je možné napríklad použíť k nahliadnutiu na rezídua, prípadne na overenie niektorých predpokladov súvisiacich s náhodnými chybami.

    ods graphics on;
    
    proc loess data=weight.dataStd;
       model weightStd=week;
    run;



Samostatne

  • Modifikujte predchádzajúci zdrojový kod tak, aby ste získali opäť štandardizované longitudinálne profily, ale štandardizácia bude nie časovo-špecifická, alebo subjektovo-špecifická.
  • Ake základné rozdiely medzi oboma postupmi sledujete? Akú je rozdiel medzi grafom, ktorý obsahuje základné (klasické) longitudinálne profily?
  • Pokúste sa vymyslieť a navrhnúť iný spôsob vizualizácie longitudinálnych dat, ktorý bude zameraný na nejakú inú charakteristiku časovo závislých dat.
  • Pokúste sa vytvoriť novú kategorickú premennú – napr. veľký a malý jedinci – a následne využiť túto premennú v grafe.



3. Cross-sectional vs. longitudinálna štruktúra dat

V tejto časti použijeme trochu komplexnejší datový súbor o pacientoch so sklerózou multiplex (roztroušená skleróza). Podkladový datový súbor je možné stiahnúť ako csv súbor (následne je potrebné súbor uploadovať do SAS OnDemand a pomocou nasledujúceho SAS kódu načítať).

libname sm '/home/u63241636/sasuser.v94';
filename reffile '/home/u63241636/sasuser.v94/data/sm_data2.csv';

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

V praxi sa niektoré premenné rozlíšujú do dvoch skupín: tzv. subject-specific variables a tzv. time-dependent variables. V prvom prípade sa jedná o premenné, ktoré sú v čase nemenné (napr. pohlavie pacienta, vek pacienta v čase podstúpenia liečby, zdravotný stav pacienta v čase podstúpenia liečby, alebo aj napr. výskyt/nevýskyt komplikácii počas sledovania). V tom druhom prípade sa jedná o premenné, ktoré sa vrámci konkrétneho jedinca v priebehu opakovaných meraní môžu meniť (napr. hodnota EDSS, alebo opäť výskyt komplikácii zaznamenaný samostatne pri každej kontrole).


Cross-sekčná závislosť

Ide o zisťovanie a vyšetrovanie vzťahov (závislostnej štruktúry) v tzv. subject-specific premenných – porovnávanie vrámci nezávislých subjektov (podskupín, sub-populácii). V prípade datového súboru s pacientami so sklerózou multiplex – napríklad EDSS (t.j., Expanded Disability Status Scale) v závislosti na pohlaví pacienta:

proc loess data = sm.data;
   model EDSS = age / clm smooth=0.1 0.5 residual;;
   by gender;
run;

Longitudinálna závislosť

Jedná sa o zisťovanie vplyvu/zmeny vrámci opakovaných pozorovaní – korelované pozorovania vrámci daného subjektu. Opäť v prípade datového súboru s pacientami so sklerózou multiplex – napríklad EDSS (a jeho vývoj) v závislosti na čase:

proc loess data = sm.data;
   model EDSS = time / clm smooth=0.1 0.5 residual;
run;

Nemusí sa ale nutne jednať pouze o čas ako takový – t.j., premennú time. Analogicky móžeme zisťovať napr. zmenu v EDSS v závislosti na zmene hodnoty v premennej relapse:

proc sort data=sm.data; by relapse; run;

proc boxplot data=sm.data;
   plot EDSS*relapse;
run;


Samostatne

  • Podrobne sa podívajte na cross-sekčnú a longitudinálnu štruktúru datového súboru sm_data2.csv;
  • Pokúste sa vytvoriť (v programe SAS) niekoľko vhodných obrázkov, z ktorých by bola zrejmá závislosť EDSS na tzv. “subjec-specific” premenných a tiež závislosť na zmene v čase – tzv. “time-dependent” premenných;
  • Použijte vlastný (iný) datový súbor a sa pokúste vypracovať pre data analogickú exploratívnu analýzu zohľadňujúc oba typy premenných;



4. Variančná-kovariančná štruktúra

Na záver sa opäť vrátime k datovému súboru o váhach ošípaných, ktorý sme navyše doplnili o štandardizované profily. Vytvorené štandardizované longitudinálne profily použijeme k tomu, aby sme nahliadli do časovo-závislej štruktúry.

proc print datafile = weight.dataStd; 
run;

Existuje samozrejme množstvo rôznych spôsobov, ako empiricky vyšetrovať a zisťovať prípadnú závislosť medzi pozorovaniami. Predpokládame, že jednotlivé súbjekty sú vzájomne nezávisle (malo by to vyplývať z povahy samotného experimentu). Opakované pozorovania vrámci konkretného jedinca ale nezávislé samozrejme nie sú. Pre následné modelovanie (t.j., “confirmatory analysis”) je ale dôležité závislostnú štruktúru opakovaných pozorovaní vyšetriť.

V prvom kroku vhodne pripravíme data. Pri analýze longitudinálnych dat sa často používa terminológia, ktorá odkazuje na tzv. long-data štruktúru dat, prípadne tzv. wide-data typ dat. Data uložené v datovom súbore weight.dataStd sú reprezentované v tzv. long-data type. Pomocou PROC transpose ale data môžeme reprezentovať vo wide-data formáte:

proc sort data=weight.dataStd; by id; run;

proc transpose data=weight.dataStd out=weight.dataWide;
    by id;
    var weightStd;
run;

Wide-data formát už môžeme priamo využiť pre spočítanie variančenej kovariačnej (resp. korelačnej) matice

proc corr data=weight.dataWide;
var COL1 COL2 COL3 COL4 COL5 COL6 COL7 COL8 COL9;
run;

prípadne tzv. matice scatterplotov, ktorá časovo-závislostnú štruktúru reprezentuje vizuálne:

proc sgscatter data=weight.dataWide;
  title "Scatterplot Matrix -- Repeated observations";
  matrix COL1 COL2 COL3 COL4 COL5 COL6 COL7 COL8 COL9;
run;
title;

Predchádzajúci výstup lze také porovnať s následujúcim výstupom:

proc sgscatter data=weight.dataWide; 
matrix COL1 COL2 COL3 COL4 COL5 COL6 COL7 COL8 COL9 / diagonal=(histogram kernel);
run;


Samostatne

  • Aké konrétne závery lze získať z pohľadu na odhadnutú korelačnú maticu, pripadne na graf príslušných scatterplotov?
  • Ako presne chápať a interpretovať grafy v matici scatterplotov?
  • Aké podstatné následky maju zistenia v empirickej časti analýzy vzhľadom k následnej konfirmačnej analýze?
  • Premyslite, akým iným spôsobom by bolo možné vizualizovať závislosť/nezávislosť medzi dvoma konkrétnymi premennými.






Samostatný úkol (a)

Pripomeňme, že pre ľubovolnú náhodnú veličinu \(X \sim F\) z nejakého (absolútne) spojitého rozdelenia s distribučnou funkciou \(F\) platí, že \[ P[X \leq x] = F(x), \qquad \forall x \in \mathbb{R}. \] Zároveň ale dostávame, že platí tiež \[ P[F(X) \leq x] = P[X \leq F^{-1}(x)] = F\Big(F^{-1}(x)\Big) = x, \qquad \textrm{pre} \quad x \in [0,1], \] kde \(F^{-1}(u)\) pre \(u \in [0,1]\) je príslučná kvantilová funkcia náhodnej veličiny \(X\) (t.j., inverzná funkcia k distribučnej funkcii \(F\)). Inými slovami, transformovaná náhodná veličina \(F(X)\) má rovnomerné (spojité) rozdelenie na intervale \([0,1]\).


  • Ako by sa vyššie uvedená (teoretická) vlastnosť dala využiť v (empirickej) exploratívnej analýze pre posúdenie závislosti/nezávislosti nejakej náhodnej veličiny?
  • Akým spôsobom by bolo možné daný postup zovšeobecniť na posúdenie závislosti/nezávislosti medzi dvoma konkrétnymi náhodnými veličinami?
  • Pomocou programu SAS sa pokúste daný postup implementovať a aplikovať na príklad dvoch konkrétnch (spojitých) premenných, u ktorých chcete posúdiť ich vzájomnú závislosť/nezávislosť.



Samostatný úkol (b)

  • Na webovej stránke http://faculty.washington.edu/heagerty/Books/AnalysisLongitudinal/datasets.html sú umiestnené niektoré data z knihy Diggle, P. J., Heagerty, P., Liang, K. Y., & Zeger, S. (Analysis of longitudinal data, 2002). Vyberte si jeden datový súbor a vypracujte základnú exploratívnu analýzu pre longitudinálny typ dat. Dôležité zistenia, vhodné grafy s príslušnými popisnými charakteristikami, prípadne závery so stručnou interpretáciou prineste vo forme PDF dokumentu na cvičenie budúci týždeň vo štvrtok, t.j., 2.března, 2023.