Lineaarinen regressio – Esimerkki: kuolleisuuden selittäminen tulotasolla

Tilastollinen päättely Ei kommentteja

Tässä tapausesimerkissä pyrimme selvittämään, miten hyvin syöpäkuolleisuutta voidaan selittää väestön keskimääräisellä tulotasolla. Käytämme esimerkissä ilmaiseksi saatavilla olevaa aineistoa, jossa kuvataan syöpäkuolleisuutta sekä keskeisiä väestöllisiä muuttujia piirikunnittain Yhdysvalloissa. Aineisto on saatavilla osoitteesta: https://data.world/nrippner/ols-regression-challenge (vaatii kirjautumisen esimerkiksi Googlen, Twitterin, GitHubin tai Facebookin tunnuksilla).

Aineisto sisältää 34 erilaista muuttujaa, joiden kuvaus löytyy ylläolevalta nettisivulta.

Tarkoituksenamme on selvittää miten piirikunnan keskimääräinen väestön tulotaso vaikuttaa syöpäkuolleisuuteen. Tarkoituksena ei ole ennustaa syöpäkuoleisuutta vaan selittää sitä. Altisteena (eng. exposure) toimii muuttuja tulotaso (medIncome). Päätemuuttujana (eng. outcome) on syöpäkuolleisuus (TARGET_deathRate). Koska tutkimuksen tarkoitus on selittää eli tutkia tulotason vaikutusta syöpäkuolleisuuteen, pitää tilastollinen analyysi aloittaa kausaali- eli selitysmallin rakentamisella.

Alla on DAGitty-sovelluksella (Pika-ohje DAGitty -sovelluksen käyttöön) laadittu ehdotus kausaalimallille, jossa selvitetään miten tulotaso vaikuttaa syöpäkuolleisuuteen väestötasolla. Alla on kuvattuna yksi kausaalikuvaaja, miten tulotaso voisi vaikuttaa syöpäkuolleisuuteen.

Altisteen ja päätulosmuuttujan lisäksi aineistosta saatavia muuttujia ovat Ikä (MedianAge), Ihon väri (PctWhite), Koulutustaso (PctHS25_Over), Yksityinen terveysvakuutus (PctPrivateCoverage) sekä Työttömyysaste (PctUnemployed16_Over). Hoitoon pääsy sekä Terveyskäyttäytyminen ovat latentteja muuttuja eli niitä ei ole mitattu väestötasolla. Tämä voidaan korostaa ja tuoda vielä esille kuvaajassa.

Tärkeää on nyt varmistua, että valituilla muuttujilla eli kovariaateilla ei aiheudu harhaa, kun arvioimme tulotason kokonaisvaikutusta syöpäkuolleisuuteen. Jos noudatamme Shrier & Plattin kuvaamaa menetelmää, törmäämme heti ongelmaan. Ensimmäinen vaihe S&P:n menetelmässä ohjeistaa varmistamaan, että mikään kovariaatti ole altisteen jälkeläinen (eng. descendant). Yksityinen vakuutus on altisteen jälkeläinen, koska siihen tulee nuoli Tulotasosta. Näin ollen emme sisällytä muuttujaa Yksityinen vakuutus malliimme vaan käsittelemme sitä latenttina. Emme siis poista sitä kuvaajasta vaan jätämme sen pois analyysistä. Tämän jälkeen S&R-menetelmän perusteella voimme todeta, että kausaalimallin harha tutkittavalle selityssuhtelle on minimoitu.

Kausaalimallin tarkastelu onnistuu myös automaattisesti DAGitty-ohjelmassa. Ylläolevassa kuvaajassa on määritelty, että Koulutustaso, Ikä, Ihon väri ja Työttömyysaste ovat “adjusted” eli mukana mallissa. Terveyskäyttäytyminen, Yksityinen vakuutus ja Hoitoon pääsy ovat puolestaan “unobserved” eli latentteja. Näillä valinnoilla voimme automaattisesti tulkita kausaalimallin tilanteen oikeasta ylänurkasta DAGitty-ohjelmassa. Ohjelman mukaan Tulotason kokonaisvaikutuksen arvioimiseksi syöpäkuolleisuuteen pitää mukaan malliin ottaa kyseiset neljä muuttujaa.

Jos katsomme vielä alkutilannetta ja valitsemme muuttujalle Yksityinen vakuutus valinnan “adjusted” ilmoittaa ohjelma, että The total effect cannot be estimated due to adjustment for an intermediate or a descendant of an intermediate. Tämä tarkoittaa, että mallissa on mukana mediaattori eli välitysmuuttuja ja kokonaisvaikutusta ei voida luotettavasti arvioida.

Kun selitysmalli on kokonaisuudesaan laadittu ja todettu päteväksi, voidaan siirtyä varsinaiseen tilastolliseen analyysiin.

R

Aineiston siirto R-ympäristöön ja aineiston tarkastelu

Aivan aluksi lataamme aineiston R-ympäristöön komennolla read.csv():

df <- read.csv("[URL]", header=TRUE, stringsAsFactors=FALSE)

Selitysmallimme mukaisesti valitsemme analyysimme päätemuuttujan lisäksi muuttujat medIncome, MedianAge, PctWhite, PctHS25_Over ja PctUnemployed16_Over. Muuttujien valinnan teemme dplyr -paketin select() -komennolla.

df <- df %>% select(TARGET_deathRate, medIncome, MedianAge, PctWhite, PctHS25_Over, PctUnemployed16_Over)

Ennen varsinaista analyysiä, on hyvä tarkastella muuttujia esimerkiksi puuttuvien arvojen tai poikkeavien arvojen osalta. describe() -komento Hmisc -paketissa on hyödyllinen käyttää, kun tarve on saada kerralla kokonaiskäsitys muuttujien keskeisistä ominaisuuksia.

> describe(df)
df 

 6  Variables      3047  Observations
------------------------------------------------------------------------------------------------------------------------
TARGET_deathRate 
       n  missing distinct     Info     Mean      Gmd      .05      .10      .25      .50      .75      .90      .95 
    3047        0     1053        1    178.7    30.67    134.1    145.4    161.2    178.1    195.2    213.3    224.4 

lowest :  59.7  66.3  80.8  87.6  93.8, highest: 277.6 280.8 292.5 293.9 362.8
------------------------------------------------------------------------------------------------------------------------
medIncome 
       n  missing distinct     Info     Mean      Gmd      .05      .10      .25      .50      .75      .90      .95 
    3047        0     2920        1    47063    12717    31838    34212    38883    45207    52492    61323    69964 

lowest :  22640  23047  24035  24265  24707, highest: 107250 108477 110507 122641 125635
------------------------------------------------------------------------------------------------------------------------
MedianAge 
       n  missing distinct     Info     Mean      Gmd      .05      .10      .25      .50      .75      .90      .95 
    3047        0      325        1    45.27    14.48    31.93    34.50    37.70    41.00    44.00    47.70    50.17 

lowest :  22.3  23.2  23.3  23.5  23.9, highest: 536.4 546.0 579.6 619.2 624.0
------------------------------------------------------------------------------------------------------------------------
PctWhite 
       n  missing distinct     Info     Mean      Gmd      .05      .10      .25      .50      .75      .90      .95 
    3047        0     3044        1    83.65    16.43    47.96    60.42    77.30    90.06    95.45    97.20    97.77 

lowest :  10.19916  11.00876  12.01620  12.27367  13.62272, highest:  99.61528  99.64629  99.69304  99.84590 100.00000
------------------------------------------------------------------------------------------------------------------------
PctHS25_Over 
       n  missing distinct     Info     Mean      Gmd      .05      .10      .25      .50      .75      .90      .95 
    3047        0      361        1     34.8    7.906    22.23    25.60    30.40    35.30    39.65    43.40    45.40 

lowest :  7.5  8.3 10.8 11.5 11.8, highest: 51.7 52.1 52.7 53.6 54.8
------------------------------------------------------------------------------------------------------------------------
PctUnemployed16_Over 
       n  missing distinct     Info     Mean      Gmd      .05      .10      .25      .50      .75      .90      .95 
    3047        0      195        1    7.852    3.765      2.8      3.8      5.5      7.6      9.7     12.2     13.8 

lowest :  0.4  0.5  0.7  0.8  0.9, highest: 25.3 25.4 26.8 27.0 29.4
------------------------------------------------------------------------------------------------------------------------

Puuttuvat arvot eivät ole ongelma aineistossamme. Sen sijaan voimme todeta, että osassa piirikunnista muuttujan MedianAge arvot ovat useita satoja, joka ei voi tietenkään pitää paikkaansa. Aineiston koko on varsin laaja, joten poistamme havaintoyksiköt, joiden MedianAge on kirjattu väärin. Käytämme tähän dplyr -paketin filter() -komentoa.

df <- df %>% filter(MedianAge<80)

Vaikka muuttujien valinta onkin perustunut kausaalimalliin, on silti hyvä tarkastella myös kolineariteettia, koska sillä on vaikutusta tilastollisen mallin sovitukseen ja regressiokertoimien keskivirheiden määritykseen. Yksi tapa lähestyä kolineariteettiongelmaa on tarkastella jo heti analyysin alussa muuttujien keskinäistä korrelaatiota. Hmisc -paketissa on komento redun(), joka tekee ns. redundanssianalyysin. Se määrittää, miten eri muuttujat voidaan ennustaa toisista muuttujista. Jos jokin muuttuja voidaan ennustaa toisten muuttujien perusteella, sitä ei kannata ottaa monimuuttujamalliin mukaan. r2 -parametri komennossa redun() tarkoittaa raja-arvoa, joka perusteella määritetään onko muuttuja turha. Mitään oikeaa arvoa parametrille r2 ei ole, mitä lähempänä se on arvoa 1 sitä väljemmin tulkitaan muuttujien keskinäinen kolineariteetti. Asetamme r2 arvoksi 0.75, joka on melko suuri.

> redun(~medIncome+MedianAge+PctWhite+PctHS25_Over+PctUnemployed16_Over,data=df,r2=0.75)

Redundancy Analysis

redun(formula = ~medIncome + MedianAge + PctWhite + PctHS25_Over + 
    PctUnemployed16_Over, data = df, r2 = 0.75)

n: 2868 	p: 5 	nk: 3 

Number of NAs:	 0 

Transformation of target variables forced to be linear

R-squared cutoff: 0.75 	Type: ordinary 

R^2 with which each variable can be predicted from all other variables:

           medIncome            MedianAge             PctWhite         PctHS25_Over PctUnemployed16_Over 
               0.463                0.255                0.410                0.459                0.431 

No redundant variables

Merkittävää kolineariteettia ei todeta, koska yhtäkään muuttujaa ei voida selkeästi ennustaa muiden pohjalta.

Regressioanalyysi

Tämän jälkeen voimme suorittaa varsinaisen lineaarisen regression. lm() on R-ympäristön vakiokomento lineaariselle regressiolle.

model.1<-lm(TARGET_deathRate ~ medIncome + MedianAge + PctWhite + PctHS25_Over + PctUnemployed16_Over, data=df)

Tarkastelemme lineaariregression tuloksia kommennolla summary():

> summary(model.1)

Call:
lm(formula = TARGET_deathRate ~ medIncome + MedianAge + PctWhite + 
    PctHS25_Over + PctUnemployed16_Over, data = df)

Residuals:
     Min       1Q   Median       3Q      Max 
-117.538  -12.631    0.497   13.002  146.837 

Coefficients:
                       Estimate Std. Error t value Pr(>|t|)    
(Intercept)           1.597e+02  5.656e+00  28.234  < 2e-16 ***
medIncome            -3.493e-04  4.557e-05  -7.666 2.42e-14 ***
MedianAge            -4.720e-01  9.269e-02  -5.093 3.76e-07 ***
PctWhite             -9.669e-02  3.280e-02  -2.947  0.00323 ** 
PctHS25_Over          1.376e+00  7.420e-02  18.549  < 2e-16 ***
PctUnemployed16_Over  1.889e+00  1.580e-01  11.958  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 22.87 on 2862 degrees of freedom
Multiple R-squared:  0.3074,	Adjusted R-squared:  0.3061 
F-statistic:   254 on 5 and 2862 DF,  p-value: < 2.2e-16

Regressiokertoimien luottamusvälit eivät tulostu automaattisesti. Ne voidaan laskea toki keskivirheen perusteella, mutta ne saa myös suoraan komennolla confint():

> confint(model.1)
                             2.5 %        97.5 %
(Intercept)           1.383484e+02  1.579745e+02
medIncome            -4.307142e-04 -2.546781e-04
MedianAge            -2.480063e-02  1.158192e-02
PctWhite             -2.246549e-01 -1.038494e-01
PctHS25_Over          1.177317e+00  1.456103e+00
PctUnemployed16_Over  1.584169e+00  2.195945e+00

Muuttujan medIncome regressiokertoimen arvo on varsin pieni, -0.0003493. Tämä on luonnollinen seuraus siitä, että muuttujan arvot ovat välillä 22000 – 125000. Regressiokerroin β ilmoittaa aina muutoksen päätemuuttujassa, kun lähtömuuttuja kasvaa yhden yksikön. Yhden dollarin muutos mediaanituloissa ei ymmärrettävästi saa aikaan suurta muutosta syöpäkuolleisuudessa, joka vaihtelee välillä 599 ja 362 (per 100000 asukasta). Regressionkerroin on järkevämpi ilmoittaa jonain kerrannaisena kuten 1000 dollarin kasvuna mediaanituloissa. Tämä tapahtuu kertomalla regressiokertoimen ja luottamusvälien arvot 1000:lla.

Vaihtoehtoisesti analyysi voidaan suorittaa uudelleen siten, että muuttujan medIncome arvot jaetaan luvulla 1000. Tällöin regressiokertoimen arvo kertoo suoraan miten 1000 dollarin muutos vaikuttaa päätemuuttujaan.

Ennen kuin tulkitsemme muuttujia tarkemmin, teemme oleellisimmat tarkistukset regressiodiagnostiikan osalta. Tarkoituksenamme ei ole ennustaa, joten diagnostiikkaan ei tarvitse suhtautua niin tarkasti kuin, jos tarkoitus olisi tilastomallin pohjalta ennustaa uusia havaintopisteitä. Merkittävät poikkeamat ja selkeät taustaoletuksen virheet kuitenkin vaikuttavat regressiokertoimien luotettavuuteen.

Regressiodiagnostiikan kannalta keskeisimmät tarkasteltavat muuttujat ovat residuaalit eli virhetermit sekä sovitetut arvot. Virhetermit saadaan komennolla resid() ja sovitetut arvot komennolla predict(). Lisäämme aineistoon jokaiselle havaintoyksikölle sen virhetermin ja sovitetun eli mallin pohjalta ennustetun päätemuuttujan arvon:

df$fitted<-predict(model.1)
df$res<-resid(model.1)

Homoskedastisuuden tarkastamme graafisesti piirtämällä pisteparvikuvion, jossa x-akselilla on sovitetut arvot ja y-akselilla on virhetermit. Lisäksi sovitamme kuvioon ns. loess-kuvaajan komennolla loess() osoittamaan mahdollisen epälineaarisen korrelaation muuttujien välillä.

homoscedast <- loess(res ~ fitted,data=df)
plot(res ~ fitted, data=df)
j <- order(df$fitted)
lines(df$fitted[j],homoscedast$fitted[j],col="red")

Virhetermien suuruus ei vaikuta riippuvan sovitetuista arvoista, koska pisteparikuvio sijaitsee säännöllisesti ja symmetrisesti vaaka-akselin suuntaisesti. Tämä tukee myös loess-kuvaaja.

Toinen tärkeä tarkasteltava oletus regressiodiagnostiikassa on virhetermien normaalius. Tämän tarkastelu onnistuu parhaiten kvantiili-kvantiilikuvaajalla. qqnorm() -komento piirtää suoraan annetuille virhetermeille kvantiilikuvaajan ja qqline() -komennolla kuvaajaan piirtyy myös referenssiviiva.

qqnorm(df$res)
qqline(df$res)

Kuvaajista näemme, että virhetermien jakauma ei aivan asetu normaalijakaumaa kuvaavalle referenssiviivalle vaan ääripäissä arvot poikkeavat siitä. Jos tarkastelemme virhetermien jakaumaa voidaan havaita, että virhetermien jakauma on normaalijakaumaan nähden hieman liian huipukas eli jakauma on kapea.

plot(density(df$res))

Koska virhetermeissä ei ole havaittavissa selkeää poikkeamaa normaalijakaumasta eikä selkeää toista parempaa mallia ole selkeästi tarjolla, toteamme että virhetermit ovat riittävän normaalit.

Lopuksi voimme tarkastella mahdollista kolineariteettia. Varianssin inflaatiotekijät saadaan määritettyä komennolla vif():

> vif(model.1)
           medIncome            MedianAge             PctWhite         PctHS25_Over PctUnemployed16_Over 
            1.659416             1.003601             1.446422             1.420870             1.647827 

Tärkeää on kuitenkin huomata, että analyysin alussa teimme jo redundanssianalyysin, jonka tarkoitus oli poistaa ne muuttujat joilla on merkittävä keskinäinen korrelaatio.

Nyt keskeisin tuloksemme on medIncome muuttujan regressiokerroin. Koska tarkoitus ei ole ennustaa, Adjusted R-squared tuloksella ei ole merkitystä. Myöskään mallin keskivirheitä ei tarvitse tulkita. Tulkitsemme vain pääaltisteen regressiokerrointa. Muiden muuttujien regressiokertoimien tulkinta ei ole myöskään mahdollista, koska emme tiedä kuvastavatko ne muuttujien kokonaisvaikutusta päätemuuttujaan.

SPSS

Aineiston siirto R-ympäristöön ja aineiston tarkastelu

Aloitamme avaamalla lähdesivulta ladatun cancer_reg.csv -tiedoston. Tämä tapahtuu valitsemalla File > Import Data > CSV file.

Tiedoston avaamisen jälkeen SPSS haluaa tietää, miten se käsittelee .csv-muotoista tekstitiedostoa. Yleensä .csv-tiedostossa on ensimmäisellä rivillä muuttujien nimet joten laitamme rastin kohtaan First line contains variable names. Keskeistä on lisäksi katsoa, mikä merkki toimii ns. erottimena (eng. delimiter) tiedostossa. Tässä tiedostossa se on pilkku (eng. comma) ja valitsemme sen kohdasta Delimiter between values. Lisäksi katsomme mikä on aineistossa desimaalierotin (eng. Decimal symbol) ja tässä tapauksessa se on piste (eng. period), joten valitsemme sen kohdasta Decimal symbol. Nyt aineisto on käsittelymuodossa SPSS:ssa.

Selitysmallimme mukaisesti valitsemme analyysimme päätemuuttujan lisäksi muuttujat medIncome, MedianAge, PctWhite, PctHS25_Over ja PctUnemployed16_Over.

Ennen varsinaista analyysiä, on hyvä tarkastella muuttujia esimerkiksi puuttuvien arvojen tai poikkeavien arvojen osalta. Aineiston yleisluontoiseen tarkasteluun voidaan käyttää toimintoa Descriptives valikon Analyze > Descriptive Statistics -valikon takaa. Valitsemme edellä kuvatut muuttujat tarkasteltavaksi. Oleellista on tarkastella erityisesti saraketta N, joka kertoo kuinka aineistossa on puuttuvia arvoja.

Millään muuttujalla ei ole puuttuvia arvoja. Muuttujan MedianAge kohdalla huomaamme, että sen suurin arvo on 624. Kun selaamme muuttujan arvoja tarkemmin, voimme todeta, että muutamissa piirikunnissa arvot ovat useita satoja, mikä on selkeä virhekirjaus. Näin ollen emme ota analyysiin mukaan havaintopisteitä, joissa muuttuja MedianAge on kirjattu väärin. Tämä onnistuu valitsemalla Data > Select cases. Valitsemme toiminnon If condition is satisfied ja klikkaamme nappia If. Avautuvasta ikkunasta kaksoisklikkaamme muuttujaa MedianAge, jolloin se siirtyy oikealla olevaan tekstikenttään. Täydennämme tekstikenttää lisäämällä muuttujan perään “<80”. Nyt määrittely “MedianAge<80” tarkoittaa, että aineistosta valitaan ne rivit, jotka vastaavat kyseistä määrittelyä. Lopuksi valitsemme Continue ja OK. Huomaamme, että muutamien rivien kohdalle vasemmalle rivinumeron päälle on tullut viistoviiva kuvaamaan, että kyseinen havaintopiste on väliaikaisesti poistettu aineistosta.

Regressioanalyysi

Tämän jälkeen voimme suorittaa varsinaisen lineaarisen regression. Tämä onnistuu valitsemalla Analyze > Regression > Linear.

Dependent eli päätemuuttujaksi valitsemme TARGET_deathRate. Independent eli lähtömuuttujksi valitsemme ylläolevat kausaalimallin mukaiset muuttujat. Statistics -valikon takaa valitsemme tarvitsemamme tulostemuuttujat. Regressiokertoimietn luottamusväli ovat keskeiset, joten laitamme rasin kohtaan Confidence Interval. Lisäksi tarvitsemme varianssin inflaatiotekijät ja sen onnistuu valitsemalla Colinearity Diagnostics.

Plots -valikon takaa valitsemme lisää regressiodiagnostiikan osalta tärkeitä tulosteita. Homoskedastisuuden arviointia varten valitsemme X-akselille *ZPRED (predicted) ja Y-akselille *ZRESID. Lisäksi laitamme rastin kohtaan Histogram -otsikon Standardized Residual Plots -valintaan, jolloin saamme tulosteena virhetermien jakauman eli histogrammin.

Kvantiili-kvantiilikuvaajan piirtämistä vaten pitää erikseen tallentaa virhetermit ja se tapahtuu laittamalla Save -valikon takaa rasti kohtaan Standardized residuals. Kaiken tämän jälkeen painamme OK ja ajamme lineaarisen regression.

SPSS tulosteen tulkinta

Muuttujan medIncome regressiokerroin B on nyt arvoltaa ,000. Tarkan arvon saamme selville kaksoiklikkaamalla taulukkoa ja avautuvassa ikkunassa viemme kursorin regressiokertoimen arvon päälle. Tällöin kursorin viereen tulee estimaatin tarkka arvo -0.000350. Samalla tavalla näemme myös luottamusvälien arvot.

Muuttujan medIncome regressiokertoimen arvo on siis varsin pieni. Tämä on luonnollinen seuraus siitä, että muuttujan medIncome arvot ovat välillä 22000 – 125000. Regressiokerroin β ilmoittaa aina muutoksen päätemuuttujassa, kun lähtömuuttuja kasvaa yhden yksikön. Yhden dollarin muutos mediaanituloissa ei ymmärrettävästi saa aikaan suurta muutosta syöpäkuolleisuudessa, joka vaihtelee välillä 599 ja 362 (per 100000 asukasta). Regressionkerroin on järkevämpi ilmoittaa jonain kerrannaisena kuten 1000 dollarin kasvuna mediaanituloissa. Tämä tapahtuu kertomalla regressiokertoimen ja luottamusvälien arvot 1000:lla.

Vaihtoehtoisesti analyysi voidaan suorittaa uudelleen siten, että muuttujan medIncome arvot jaetaan luvulla 1000. Tällöin regressiokertoimen arvo kertoo suoraan miten 1000 dollarin muutos vaikuttaa päätemuuttujaan.

Kolineariteetti sekä muut regressiodiagnostiikkaan liittyvät tulokset ovat oleellisia vaikka emme tarkastelleet ennutekykyyn liittyviä tuloksia. Merkittävät poikkeamat ja selkeät taustaoletuksen virheet kuitenkin vaikuttavat regressiokertoimien luotettavuuteen.

Regressiokertoimien lisäksi samaan taulukkoon tulostuu varianssin inflaatiotekijät. Ne ovat kaikki alle 2, joten merkittävää kolineariteettiongelmaa ei ole.

Ensimmäinen kuvaaja tulosteessa on virhetermien histogrammi. Vakavaa poikkeamaa virhetermien normaalijakaumasta ei havaita. Jakauma on puhtaaseen normaalijakaumaan nähden hieman huipukkaampi, mutta tämä ei ole vakava ongelma.

Alimpana tulosteessa on nyt pisteparvikuvio, jossa jossa x-akselilla on sovitetut arvo ja y-akselilla on virhetermit. Virhetermien suuruus ei vaikuta riippuvan sovitetuista arvoista, koska pisteparikuvio sijaitsee säännöllisesti ja symmetrisesti vaaka-akselin suuntaisesti. Voimme sovittaa vielä kuvioon ns. loess-viivan, osoittamaan mahdollisen epälineaarisen korrelaation muuttujien välillä. Tämä onnistuu tuplaklikkaamalla kuviota, jolloin aukeaa kuvaajan muokkausikkuna. Oikeassa reunassa alemmalla ikkunarivillä on kuvake, jonka päälle tulee otsikko Add Fit Line at Total. Tämän jälkeen aukeaa valintaikkuna, josta valitsemme Loess. Lines -välilehden alta voimme valita viivan väriksi esimerkiksi punaisen. Lopuksi valitsemme Apply, joka hyväksyy muutokset. Valintaikkuna sulkeutuu valitsemalla Close. Lopuksi voimme sulkea kuvaajan muokkausikunan.

Lopuksi tarkastelemme vielä kvantiilikuvaajaa. Sen piirtäminen tapahtuu valitsemalla Analyze > Descriptive Statistics > Q-Q Plots. Nyt valitsemme alimpana olevan Standardized Residuals (ZRE_1) Variables oikealla olevaan laatikkoon. Jos lineaarisen regression suorittaa useita ja on valinnut tallennettavaksi Standardized Residuals tai muita virhetermejä, ne tulostuvat joka kerta uuteen sarakkeeseen. Esimerkiksi vakioidut virhetermit tulostuvat muodossa ZRE_X, jossa X kasvaa joka analyysikerran myötä. Esimerkiksi kvantiilikuvaajaa tehdessä pitää olla äärimmäisen huolellinen, että valitsee oikeat virhetermit piirrettäväksi, jos on suorittanut monia eri regressioajoja. Kvantiilikuvaajan saamme tulostettua painamalla OK.

Kuvaajista näemme, että virhetermien jakauma ei aivan asetu normaalijakaumaa kuvaavalle referenssiviivalle vaan ääripäissä arvot poikkeavat siitä. Jos tarkastelemme ylläolevaa virhetermien jakaumaa voidaan havaita, että virhetermien jakauma on normaalijakaumaan nähden hieman liian huipukas eli jakauma on kapea. Koska virhetermeissä ei ole havaittavissa selkeää poikkeamaa normaalijakaumasta eikä selkeää toista parempaa mallia ole selkeästi tarjolla, toteamme että virhetermit ovat riittävän normaalit.

Tulosten raportointi

Tutkimuksen tarkoitus oli selittää syöpäkuolleisuutta tulotasolla. Tämän vuoksi tulosten tulkinnassa selitysaste, mallin keskivirheet, F-testi ja muut ennustamiseen liittyvät suureet eivät ole oleellisia. Keskeisin tulos on muuttujan medIncome regressiokerroin ja sen luottamusvälit. Muiden monimuuttujamallissa olleiden muuttujien regressiokertoimien ei tule raportoida, koska emme tiedä mitä vaikutuksia ne kuvaavat. Niiden regressiokertoimien tulkintaa emme suorita, koska emme tiedä kuvastavatko ne epäsuoraa vai kokonaisvaikutusta. Jos haluaisimme tulkita muiden tekijöiden vaikutusta, pitäisi kausaalimalli rakentaa kyseisen muuttujan näkökulmasta. Oleellista on ymmärtää, että R tai SPSS tai muukaan tilastolaskenta-ohjelma ei ymmärrä kausaalimallia eikä erottele altistetta sekoittavista tekijöistä. Ohjelma suorittaa vain matemaattisen laskennan ja tulkinta kausaalisesta on puhtaasti tutkijan vastuulla.

Päätulos voitaisiin raportoida esimerkiksi seuraavasti: Vakioituna iän mediaaniarvolla, ihon värillä koulutusasteella sekä työttömien määrällä, tuhannen dollarin kasvu mediaanituloissa aiheuttaa 0.34 yksikön laskun syöpäkuolleisuudessa. Tuloksemme on yhtenevä 0.25 ja 0.43 suuruisen laskun kanssa ja tätä suuremmat muutokset voidaan poissulkea 5% virhetasolla. Lisäksi on tärkeää raportoida kausaalimalli, johon analyysi perustuu tai muut kausaalipäätelmät, joita tutkimuksessa on tehty.


Kirjoittanut Aleksi Reito, vertaisarvioinut Ville Ponkilainen.

Mitä mieltä olit artikkelin sisällöstä?

Klikkaa tähteä arvostellaksi artikkelin!

Keskiarvo 5 / 5. Arvostelujen lukumäärä: 2

Kukaan ei ole vielä äänestänyt, ole ensimmäinen

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *