Longitudinální a panelová data – NMST422

Letný semester 2024 | Cvičenie 3 | 11.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




III. Jednoduché metódy a testy pre longitudinálne data

Korelované (resp. závislé) opakované (longitudinálne) pozorovania lze často vhodne analyzovať aj klasickými štatistickými metódami a postupmi, ktoré sú primárne určené pre analýzu nezávislých a rovnako rozdelených pozorovaní (náhodný výber – tzv. \(i.i.d.\) pozorovania).

Takúto ``jednoduchú’’ analýzu je ale nutné spracovať korektným postupom. Niektoré základné metódy v tomto smere a tiež ich konkrétnu aplikáciu na reálne data v programe SAS ilustrujeme nižšie.

V prvom rade je ale nutné správne pochopenie celkovej štruktúry longitudinánlych dat. Ich formálna (matematická) reprezentácia môže byť ale rôzna a nemusí byť jednoznačná a nie je ani ekvivalentná.

1. Formálna reprezentácia longitudinálnych dat

Už bolo spomenuté, že v terminológii longitudinálnych dat a ich analýzy sa bežne používajú pojmy ako long-data, resp. wide-data.
Z matematického hľadiska by bolo možne oba typy reprezentovať nasledujúcim spôsobom.


Predpokládajme, že sledujeme opakovane (v čase) \(n \in \mathbb{N}\) vzájomne nezávislé subjekty a zaujíma nás konkrétna odozva – t.j. napr. náhodná veličina \(Y\). Jednotlivé (realizované) porozorvania pre každý subjekt môžeme reprezentovať ako vektor \(\boldsymbol{Y}_{i} = (Y_{i j}, \dots, Y_{i m_i})^\top\), kde \(m_i \in \mathbb{N}\) je počet opakovaných pozorovaní vrámci \(i\)-teho subjektu. Pre celkový počet pozorovaní \(N \in \mathbb{N}\) (počet sledovaných subjektov je značený ako \(n \in \mathbb{N}\)) samozrejme platí, že \[ N = \sum_{i = 1}^n m_i. \] Celkový vektor pozorovaní (t.j. long-data) je potom možné reprezentovať združene prostredníctvom výsledného vektoru \[ \boldsymbol{Y} = \Big( Y_{1 1}, \dots, Y_{1 m_1}, Y_{2 1}, \dots, Y_{n m_n}\Big)^\top = \Big(\boldsymbol{Y}_1~^\top, \dots, \boldsymbol{Y}_{n}~^\top\Big)^\top. \] Ak su naviac longitudinálne data balancované, resp. pre každý subjekt je odsledovaný rovnaký počet pozorovaní (niekedy sa navyše ešte predpokladá, že jednotlivé pozorovania sú uskutočnené v rovnakých časových okamžikoch), t.j. \(m _i = m \in \mathbb{N}\) pro \(\forall i \in \{1, \dots, n\}\) tak ``data’’ lze reprezentovat i v maticovom zápise (t.j. wide-data) ako \[ \mathbb{Y} = \left( \begin{array}{ccc} Y_{1 1} & \dots & Y_{1 m_1}\\ Y_{2 1} & \dots & Y_{2 m_2}\\ \ldots & \dots & \ldots\\ Y_{n 1} & \dots & Y_{n m_n} \end{array} \right) = \left( \begin{array}{c} \boldsymbol{Y}_1~^\top\\ \boldsymbol{Y}_2~^\top\\ \vdots \\ \boldsymbol{Y}_n~^\top\\ \end{array} \right). \] Jeden aj druhý zápis majú svoje zjavné výhody aj nevýhody (resp. obmedzenia). Poskúste sa výhody aj nevýhody oboch uvedených reprezentácii stručne, ale explicitne popísať. Prípadné výhody a nevýhody sú evidentné hlavnne pri fomulácii regresného modelu pre jednotlivé reprezentácie.


Regresné rozšírenie pre vektor \(\boldsymbol{Y}\)

Predchádzajúci model lze rozšíriť v zmysle regresného konceptu. Pre slcový vektor závislých pozorovaní \(\boldsymbol{Y} = \Big(\boldsymbol{Y}_1~^\top, \dots, \boldsymbol{Y}_{n}~^\top\Big)^\top\) a regresnú maticu \(\mathbb{X} \in \mathbb{R}^{N \times p}\) môžeme uvažovať regresný model v tvare \[ \boldsymbol{Y} = \mathbb{X} \boldsymbol{\beta} + \boldsymbol{\varepsilon}, \] kde \(\boldsymbol{\beta} \in \mathbb{R}^p\) je \(p\)-rozmerný (neznámy) vektor parametrov. Keďže je nutné správne zohľadniť variačnú a kovariačnú štruktúru pozorovaní medzi jednotlivými (nezávislými) subjektami a korelovanosť, resp. závislosť opakovaných meraní vrámci jedného subjektu, je potrebné pre vektor náhodných chýb predpokladať vhodné rozdelenie – napr. mnohorozmerné normálne rozdelenie \[ \boldsymbol{\varepsilon} = \left( \begin{array}{c} \varepsilon_{1 1}\\ \vdots \\ \varepsilon_{1 m_1}\\ \varepsilon_{2 1}\\ \vdots \\ \varepsilon_{n m_n} \end{array} \right) \sim N_{N} \left( \left( \begin{array}{c} 0\\ \vdots \\ 0 \end{array} \right), \left( \begin{array}{c} \Sigma_1 & 0 & \dots & 0\\ 0 & \Sigma_2 & \dots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \dots & \Sigma_n \end{array} \right) \right), \]

kde covariančna štruktúra (nulové prvky – resp. nulové matice vhodných rozmerov) reprezentujú vzájomnú nezávislosť medzi jednotlivými subjektvami a príslušné (pozitívne definitné) variačné kovariačné matice \(\Sigma_{i} \in \mathbb{R}^{m_i \times m_i}\) pre \(i \in \{1, \dots, n\}\) sú obecně v tvare \[ \Sigma_{i} = \left( \begin{array}{c} \sigma_{1 1}^{(i)} & \sigma_{1 2}^{(i)} & \dots & \sigma_{1 m_i}^{(i)}\\ \sigma_{2 1}^{(i)} & \sigma_{2 2}^{(i)} & \dots & \sigma_{2 m_i}^{(i)}\\ \vdots & \vdots & \ddots & \vdots \\ \sigma_{m_i 1}^{(i)} & \sigma_{m_i 2}^{(i)} & \dots & \sigma_{m_i m_i}^{(i)}\\ \end{array} \right). \]

Regresné rozšírenie pre maticu \(\mathbb{Y}\)

V prípade odozvy reprezentovanej v maticovom tvare je zápis modelu trochu odlišny. Analogický model, ako v predchádzajúcom prípade, môžeme formálne zapísať ako \[ \mathbb{Y} = \mathbb{X}\boldsymbol{B} + \boldsymbol{E}, \] kde tentokrát \(\mathbb{X} \in \mathbb{R}^{n \times p}\) a namiesto vektoru neznámych parametrov \(\boldsymbol{\beta} \in \mathbb{R}^p\) (ako v predchádzajúcom prípade) reprezentuje \(\boldsymbol{B} \in \mathbb{R}^{p \times m}\) maticu neznámych parametrov a \(\boldsymbol{E}\) je matica chybových členov, pričom platí (uvažujúc opäť normálny model), že \(\boldsymbol{E} = (\boldsymbol{\varepsilon}_{1}^\top, \dots, \boldsymbol{\varepsilon}_{n}^\top)^\top\), pričom náhodné vektory \(\boldsymbol{\varepsilon}_i = (\varepsilon_{i 1}, \dots, \varepsilon_{i m})^\top\) pre \(i = 1, \dots, n\) tvoria náhodný výber z mnohorozmerného normálneho rozdelenia s nulovým vektorom stredných hodnot a variačnou kovaričnou maticou \[ \Sigma = \left( \begin{array}{c} \sigma_{1 1} & \dots & \sigma_{1 m}\\ \vdots & \ddots & \vdots\\ \sigma_{m 1} & \dots & \sigma_{m m} \end{array} \right). \]


Samostatne

  • Zamyslite sa nad výhodami a nevýhodami jednotlivých formulácii regresného modelu, kde je uvažovaný buď združený vektor závislých premenných \(\boldsymbol{Y}\), alebo jednotlivé tzv. ``subject-specific merania’’ sú reprezentované samostatne (i.e. marginálne v riadkoch) prostredníctvom matice \(\boldsymbol{B}\).
  • Aké sú konkrétne teoretické, praktické/aplikačné a interpretačné obmedzenia, ktoré z jednotlivých formulácii vyplývajú?
  • Akým spôsobom, resp. akými konkrétnymi nástrojmi by jednotlivé obmedzenia bolo možné eliminovať (alebo aspoň čiastočne riešiť)?



2. Párový t-test pre longitudinálne data

Najednoduchším príkladom štatistickej analýzy longitudinálnych dat môže byť klasický jednovýberový párový \(t\)-test. Ten je čosto možné veľmi efektívne aplikovať aj v prípade, že longitudinálne data, ktoré je potrebné analyzovať, obsahujú vrámci jednotlivých subjektov výrazne viacej, ako len dva opakované pozorovania. Keďže správna (korektná) štatistická analýza longitudinálnych dat je pomerne zložitá, v praxi sa celkom bežne používajú niektoré jednoduchšie postupy, ktorých cieľom je určité zjednodušenie štruktúry dat a následná štatistická analýza nezávislých (\(i.i.d\)) pozorovaní.

Medzi takéto metódy môžeme zahrnúť napr.
  • Separátnu analýzu \(n \in \mathbb{N}\) nezávislých subjektov v jednom konkrétnom časovom meraní;
  • Analýza plochy pod jednotlivými profilmi (tzv. Area Under the Curve – AUC analýza);
  • Analýza počiatočných, resp. koncových bodov;
  • Analýza konrétnych inkrementov/rozdielov vrámci času;
  • Analýza kovariancie medzi a vrámci subjektov;



Samostatne

  • Na vhodnom datovom súbore sa pokúste aplikovať a následne interpretovať niektoré z vyššie uvedených (jednoduchých) metód.
  • Zamyslite sa nad výhodami/nevýhodami jednotlivých zjednodušených postupov uvedených vyššie.
  • Uvažujte napr. datový súbor pacientov so sklerózou (viď zdrojový SAS kód nižšie) a pokúste sa navrhnúť iné možnosti, ako data zredukovať do súboru nezávislých pacientov, na ktorých lze následne aplikovať klasické štatistické metódy určene pre (združene) \(i.i.d.\) data.



V následujúcej časti budeme pre ilustráciu uvažovať csv súbor) s datami o pacientoch so sklerózou multiplex. Zameriame sa hlavne na implementáciu párového \(t\)-testu v programe SAS. Ako závislú premennú budeme uvažovať veličinu EDSS (t.j., Expanded Disability Status Scale) .

Data načítame v SAS OnDemand a náslene upravíme do vhodnejšieho tvaru (pre aplikáciu pároveho \(t\)-testu) pomocou následujúcich príkazov:

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;

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

proc transpose data=sm.data out=sm.dataWide;
    by id;
    var EDSS;
run;

proc print datafile = sm.dataWide; 
run;



Užitočné

  • Pred samotnou aplikáciou pároveho \(t\)-testu je samozrejme nutné premyslieť, v ktorých časových okamžikoch budeme hodnoty EDSS brať do úvahy (keďže sa jedná o párový test, je nutné rozhodnúť o počiatočnom meraní a o koncovom meraní);
  • Štatistickej (t.j., konfirmačnej) analýze – použitu štatistického testu – by aj v tomto prípade mala predchádzať exploratívna analýza.
  • Exploratívna analýza dat by v ideálnom prípade mohla pomocť v rozhodovaní, ktorá z uvedených jednoduchých metód vyššie je vhľadom k povahe dat nepoužiteľná a naopak, ktorá by mohla byť užitočná (ak vôbec niektorá);



Pre ilustráciu budeme pomocou párového \(t\)-testu analyzovať zmenu EDSS v období piatich rokov po aplikácii novej liečby – Lemtrady. Implementácia párového \(t\)-testu v programe SAS je následovná:

proc ttest data=sm.dataWide alpha=0.05;
    paired COL5*COL1;
run;


Samostatne

  • Porovnajte a diskutujte výsledky získané (a jednotlivé numerické hodnoty) získané v párovom \(t\)-teste.
  • Aký je konkrétne počet stupňov voľnosti? Aký bol počiatočný počet pozorovani?
  • Aká je interpretácia testu na základe spočítanej testovej štatistiky a príslušnej \(p\)-hodnoty?
  • Dokážete premyslieť a navrhnúť modifikáciu (napr. vhodnou transformáciou premenných) tak, aby mal výsledok testu a jeho následná interpretácia lepšiu výpovednú hodnotu?
  • Pokúste sa navrhnutú úpravu/transformáciu implementovať v programe SAS a následne opäť aplikovať párový \(t\)-test.



Pre porovnanie, aplikujeme ešte klasický dvojvýberový \(t\)-test a vzájomne porovnáme výsledky. V prvom rade je potrebné upraviť data vo forme dvoch (nezávislých) náhodných výberov. K tomuto účelu z datového súboru sm.dataWide vyberieme pouze relevantne premenné (t.j. stĺpce COL1 a COL5):

data sm.data15; 
   set sm.dataWide;
   keep COL1 COL5;
run;

proc print datafile = sm.data15; 
run;

Vytvorili sme nový datový súbor s názvom sm.data15. Následne hodnoty z oboch stĺpcov združíme do jedného a príslušné riadky označíme poradím merania:

data sm.twoSample;
length Sample $284.;

    set sm.data15;
    array numvars[*] _NUMERIC_;

    do i = 1 to dim(numvars);
        Sample = vname(numvars[i]);
        EDSS = numvars[i];
        output;
    end;

    keep Sample EDSS;
run;


proc print datafile = sm.twoSample; 
run;

Následne je už možné priamo aplikovať dvojvýberový \(t\)-test na datový súbor sm.twoSample. Konkrétna implementácia v programe SAS je následujúca:

proc ttest data=sm.twoSample alpha=0.05;
   class Sample;
   var EDSS;
run;


Samostatne

  • Porovnajte \(p\)-hodnoty oboch \(t\)-testov (párového \(t\)-testu, ktorý správne zohľadňuje korelované opakované pozorovania a dvojvýberového \(t\)-testu, ktorý nesprávne predpokladá vzájomnú nezávislosť medzi všetkými – t.j. 284 poorovaniami).
  • Teoreticky zdôvodnite sledované rozdiely.



3. Regresné modely pre \(\boldsymbol{Y}\)  a \(\mathbb{Y}\)

Zakladné rozdiely medzi long-data'' reprezentaciou (vektor odozvy $\boldsymbol{Y}$) awide-data’’ reprezentáciou (matica odozvy \(\mathbb{Y}\)) vrámci regresných modelov formulovaných vyššie, ilustrujeme aj na reálnych datach. Pre tento účel využijeme datový súbor cars.csv (data lze stiahnúť ako csv súbor).

Následne data načítame do programu SAS a pomocou procedúry print sa na data môžeme podívať.

libname car '/home/u63241636/sasuser.v94';
filename reffile '/home/u63241636/sasuser.v94/data/cars.csv';

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

proc print datafile = car.data; 
run;

Budeme uvažovať jednoduchhý príklad, kde odozva bude dvojrozmerná a bude predstavovať dve ceny – výrobcom navrhnutú cenu (t.j., Manufacturer’s suggested retail price – MSRP) (premenná MSRP) a skutočnú cenu, za ktorú bolo auto zakúpené (premenná Invoice).

Obe uvedené premenné sú ale v datovom súbore reprezentované ako charakterové hodnoty. Pre účely regresného modelu je potrebné premenné vhodne upraviť, aby nové premenné predstavovali kvantitatívne hodoty (ceny).

To lze dosiahnúť napr. pomocou následujúceho kódu:

data car.data2;
set car.data;
MSRP2 = input(compress(translate(MSRP,"","$,")),best.);
Invoice2 = input(compress(translate(Invoice,"","$,")),best.);
run;

proc print datafile = car.data2; 
run;

Pomocou procedúry proc reg alebo procedúry proc glm môžeme fitovať požadovaný regresný model:

proc reg data=car.data2;
    model MSRP2 Invoice2 = EngineSize Horsepower;
run;

proc glm data=car.data2;
    model MSRP2 Invoice2 = EngineSize Horsepower;
run;

Modely vyššie porovnajte s následujúcimi modelmi:

proc reg data=car.data2;
    model MSRP2 = EngineSize Horsepower;
run;

proc reg data=car.data2;
    model Invoice2 = EngineSize Horsepower;
run;


Samostatne

  • V čom sa jednotlivé modely vzájomne líšia? Ktorý model by ste doporučili ako ten najviac vhodny?
  • Ako sa jednotlivé modely vzájomne líšia z teoretického pohľadu? Ako, resp. kedy sa tieto teoretické rozdiely prejavia aj vo výsledkoch – t.j. rozdielných výsledkov a záverov konkrétnych štatistických testov?



Pomocou nasledujúceho kódu môžeme zároveň otestovať napríklad nulovú hypotézu, že regresná priamka pre MSRP cenu a regresná priamka pre skutočnú cenu (Invoice) sú totožné.

proc reg data=car.data2;
    model MSRP2 Invoice2 = EngineSize Horsepower;
     mtest intercept, EngineSize, Horsepower, MSRP2-Invoice2;
run;


Ako by analogicky štatistický test vyzeral a bol implementovaný v programe SAS v prípade, že by sa pozorovania reprezetovali v tzv. long-data type (t.j., pomocou vektoru \(\boldsymbol{Y}\) )?

Analogický a v určitom zmysle aj ekvivalentný model dostaneme ale aj pomocou tzv. long-data formatu, ked vhodne zostavíme regresný model pre vektor závislých pozorovaní \(\boldsymbol{Y}\).

Pre prehľadnosť vyberieme len relevantné premenné:

data car.dataLong; 
   set car.data2;
   keep MSRP2 Invoice2 EngineSize Horsepower;
run;

proc print datafile = car.dataLong; 
run;

Data následne upravíme do vhodného formátu:

data car.twoSample;
length Sample $856.;

    set car.dataLong;
    array numvars[2] MSRP2 Invoice2;

    do i = 1 to dim(numvars);
        Type = i;
        Price = numvars[i];
        output;
    end;
run;

proc print datafile = car.twoSample; 
run;

A pre účely implementácie potrebných interačných členov prípravíme interakčné premenné:

data car.twoSampleInt;
set car.twoSample;

Type2 = Type - 1; 
EngineType = Type2 * EngineSize; 
HorseType = Type2 * Horsepower;
run; 

Výsledný regresný model získame následujúcim spôsobom:

proc reg data=car.twoSampleInt;
    model Price = Type2 EngineSize Horsepower EngineType HorseType;
run;



Porovnajte odhadnuté parametre, príslušné smerodatné chyby a \(p\)-hodnoty príslušných štatistických testov v regresnom modeli, ktorý bol založený na wide-data type (na matici závislých pozorovaní \(\mathbb{Y}\)) a modeli, ktorý bol vybudovaný pre long-data typ (teda vektor \(\boldsymbol{Y}\) ).



Samostatný úkol

Uvažujte jednoduchší prípad pouze s jednou nezávislou premennou (ale dvoma závislými premennými). Cieľom je porovnať \(p\)-hodnoty dvoch štatistických testov.
  • V prvom prípade uvažujte model \[ (\boldsymbol{Y}_1, \boldsymbol{Y}_2) = \mathbb{X} \boldsymbol{B} + \boldsymbol{B}, \] tak, aby matica \(\mathbb{X}\) obsahovala pouze dva sloupce (t.j. intercept a smernica, teda odhaduje jednoduchú lineárnu závislosť pomocou priamky). V takomto modeli otestujte nulovú hypotézu, že smernice oboch priamok sú stejné.
  • V druhom prípade uvažujte model \[ \left( \begin{array}{c} \boldsymbol{Y}_1\\ \boldsymbol{Y}_2 \end{array} \right) = \mathbb{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon}, \] kde matica \(\mathbb{X}\) má štyri stĺpce (Intercept, smernicu, korekci interceptu pre \(\boldsymbol{Y}_2\) a korekci smernice pre \(\boldsymbol{Y}_2\)) a otestujte nulovú hypotézu, že obe regresné přímky jsou vzájomne rovnobežné (to znamená, že korekcia smernice je nulová).