Gå till index

Analys med R

0% färdig
0/0 Steps
  1. Analys och forskning med R och Posit (Rstudio)
  2. Grunderna i R och Rstudio
    7 Ämnen
  3. Importera, exportera, spara och ladda data
    5 Ämnen
  4. Strängar och regular expressions (regex)
    1 Ämne
  5. Bearbetning av data med dplyr
    12 Ämnen
  6. Visualisera och presentera
    14 Ämnen
  7. Explorerande analyser
    6 Ämnen
  8. Prediktionsmodeller
    12 Ämnen
  9. Klassisk regressionsanalys
    8 Ämnen
  10. Machine learning (ML) och Artificiell Intelligens (AI)
    9 Ämnen
  11. Prediktionsmodeller: Tidymodels
  12. Hypotestester
    1 Ämne
Avsnitt 7, Ämne 3
Startad

Screening av kolumner

Avsnitt Progress
0% färdig

Det är viktigt att få en snabb sammanställning av kolumnerna i en data frame. Denna typ av analys används för att förvissa sig om att alla kolumner har förväntat innehåll. Såvida inte datainsamling skett mycket omsorgsfullt är det sannolikt att en eller flera variabler inte har förväntad formatering. Förekomst av ett enda icke-numeriskt tecken i en kolumn med datum eller numeriska värden räcker för att hela kolumnen ska tolkas som en textkolumn i R.

Det finns ett antal olika paket och funktioner för att generera sammanställningar av data frames. Nedan följer ett antal funktioner med små men viktiga nyanser.

Vi börjar med paketet mlr som innehåller funktionen summarizeColumns(). Paketet mlr måste vara installerat för att funktionen ska kunna användas. Installera och aktivera paketet enligt följande:

R
install.packages("mlr")
library(mlr)

mlr tenderar att använda scientific notation, vilket innebär att stora och små tal skrivs ut som exponenttal; exempelvis skrivs 100000000 ut som 1e+08. Du kan stänga av scientific notation med följande kommando:

R
# Stäng av scientific notation i R
options(scipen = 999)

Använd sedan funktionen summarizeColumns() för att granska innehållet i vår data frame (rhc):

R
summarizeColumns(rhc)
name (variabelnamn)type (variabeltyp)na (antal missing)mean (medelvärde)disp (SD för numeriska värden; kvalitativ variation för kategoriska)median (medianvärde)mad (median absolute deviation; NA för kategoriska kolumner)min (minsta värde)max (största värde)nlevs (antal nivåer för kategoriska variabler; 0 för numeriska)
adld3pinteger42961.182070881.8190571750.00000000.000000000.000000007.00000000
agenumeric061.3758830016.68192929064.047000016.9623969518.04199000101.84796000
alb1numeric03.092742780.7832767893.50000000.296809550.2999878029.00000000
amihxinteger00.034873580.1834755740.00000000.000000000.000000001.00000000
aps1integer054.6676547519.95643384554.000000019.273800003.00000000147.00000000
bili1numeric02.267066984.8015375601.00976560.430011930.0999908458.19531250
cacharacter0NA0.236442895NANA384.000000004379.00000003
cardcharacter0NA0.336704446NANA1931.000000003804.00000002
cardiohxinteger00.176634700.3813925090.00000000.000000000.000000001.00000000
cat1character0NA0.565823888NANA7.000000002490.00000009
cat2character4535NANANANA2.00000000826.00000006
chfhxinteger00.178029640.3825710520.00000000.000000000.000000001.00000000
chrpulhxinteger00.189886660.3922455160.00000000.000000000.000000001.00000000
crea1numeric02.133016892.0530797581.50000000.889704790.0999908425.09765620
das2d3pcnumeric020.496887545.31718567719.74609005.4670875011.0000000033.00000000
deathcharacter0NA0.351002616NANA2013.000000003722.00000002
dementhxinteger00.098343500.2978045070.00000000.000000000.000000001.00000000
dnr1character0NA0.114036617NANA654.000000005081.00000002
dschdteinteger111660.05040112513.44732205611777.0000000658.2744000010757.0000000012560.00000000
dth30character0NA0.334437663NANA1918.000000003817.00000002
dthdteinteger201311753.86915637538.81233006511831.5000000675.3243000010757.0000000012783.00000000
edunumeric011.678461463.14583100412.00000002.965200000.0000000030.00000000
gastrcharacter0NA0.164254577NANA942.000000004793.00000002
gibledhxinteger00.032258060.1767001020.00000000.000000000.000000001.00000000
hemacharacter0NA0.061726242NANA354.000000005381.00000002
hema1numeric031.865478598.36378613430.00000006.822275822.0000000066.18750000
hrt1integer0115.1789014841.244941234124.000000029.652000000.00000000250.00000000
immunhxinteger00.269049690.4435045140.00000000.000000000.000000001.00000000
incomecharacter0NA0.437489102NANA451.000000003226.00000004
liverhxinteger00.069921530.2550369680.00000000.000000000.000000001.00000000
lstctdteinteger011781.25789015524.09416822911868.0000000673.1004000010756.0000000012644.00000000
malighxinteger00.229468180.4205274890.00000000.000000000.000000001.00000000
meanbp1numeric078.5200523138.04658214163.000000026.686800000.00000000259.00000000
metacharacter0NA0.046207498NANA265.000000005470.00000002
neurocharacter0NA0.120836966NANA693.000000005042.00000002
ninsclascharacter0NA0.703923278NANA322.000000001698.00000006
orthocharacter0NA0.001220575NANA7.000000005728.00000002
paco21numeric038.7489749613.18344461837.00000008.895600001.00000000156.00000000
pafi1numeric0222.27370952114.953087434202.5000000122.3145000011.59961000937.50000000
ph1numeric07.388413490.1098119417.39999800.088901146.579102007.76953100
pot1numeric04.066693301.0283530603.79980500.741300001.0998540011.89843800
psychhxinteger00.067306020.2505730710.00000000.000000000.000000001.00000000

Du kan kombinera dplyr funktioner (t ex filter, select) med summarizeColumns() för att granska kolumnernas karaktäristika i en subgrupp i datamängden. Här nedan gör vi om tabellen ånyo men inkluderar endast patienter som inte hade cancer (ca="No"):

R
rhc |>
  filter(ca=="No") |>
  summarizeColumns()

Endast de första 4 variablerna visas nedan.

nametypenameandispmedianmadminmaxnlevs
adld3pinteger32581.168599461.8104692320.00000000.000000000.000000007.00000000
agenumeric060.8839898716.97117259063.492980017.6666912518.14600000101.84796000
alb1numeric03.114509560.7034683453.50000000.296809550.2999878011.00000000
amihxinteger00.036538020.1876460400.00000000.000000000.000000001.00000000
..............................

Med summarizeColumns() genereras ingen information om kategoriska variablers (factors) nivåer. För att erhålla detta används följande kommando:

R
summarizeLevels(rhc)
Resultat (första 50 rader)
$ca
Metastatic         No        Yes 
       384       4379        972 


$card
  No  Yes 
3804 1931 


$cat1
              ARF               CHF         Cirrhosis      Colon Cancer              Coma              COPD 
             2490               456               224                 7               436               457 
      Lung Cancer MOSF w/Malignancy     MOSF w/Sepsis 
               39               399              1227 


$cat2
        Cirrhosis      Colon Cancer              Coma       Lung Cancer MOSF w/Malignancy     MOSF w/Sepsis 
               38                 2                90                15               229               826 


$death
  No  Yes 
2013 3722 


$dnr1
  No  Yes 
5081  654 


$dth30
  No  Yes 
3817 1918 


$gastr
  No  Yes 
4793  942 


$hema
  No  Yes 
5381  354 


$income
    > $50k   $11-$25k   $25-$50k Under $11k 
       451       1165        893       3226 

Screening med Hmisc

I paketet Hmisc finns en rad användbara funktioner för exploration och analys. Funktionen describe() används för att beskriva alla kolumner i en data frame. Börja med att installera Hmisc och aktivera paketet:

R
install.packages("Hmisc")
library(Hmisc)

Nu skapar vi objektet rhc_described genom att tillämpa funktionen describe() på vår data frame. Därefter skriver vi ut resultatet med funktionen html().

R
rhc_described <- describe(rhc)
html(rhc_described, size = 80)
Endast de första 3 variablerna redovisas ovan. Som framgår av bilden ovan erhåller vi en rad deskriptiva parametrar för varje variabel, samt ett histogram med spridningen.

I nästa steg använder vi fler funktioner i Hmisc för att generera frekvensdiagram och histogram. Se kommentarer i koden för detaljer:

R
# Tillämpar funktionen plot() på vårt objekt rhc_described
rhc_described_plots <- plot(rhc_described)

# Inspekterar fördelningar i kategoriska data
rhc_described_plots$Categorical

# Inspekterar histogram för kontinuerliga data
rhc_described_plots$Categorical
Endast de första 3 numeriska variablerna redovisas här.

Generera kolumndata stratifierat på en kategorisk variabel

I Hmisc finns funktionen summaryM() som redovisar variablers karaktäristika stratifierat på en kategorisk variabel. Den kategoriska variabeln brukar vara ett utfallsmått (event, outcome) i studien. Funktionen summaryM() är speciell då den använder en formel för att specificera variabler som skall redovisas. Funktionen beräknar även olika typer av hypotestester för gruppskillnader. Huruvida sådana hypotestester (P värden) är användbara eller inte beror på kontexten. Det är oftast olämpligt att göra hypotestester slentrianmässigt i jakten på gruppskillnader eller för att identifiera vilka variabler som skall inkluderas i en statistisk modell.

Här nedan demonstreras funktionen. Observera att variabler vi vill granska placeras till vänster om tilde (~), separerade med +, och outcome placeras till höger om ~. Vi tillämpar funktionen html() på resultatet för att få estetiskt tilltalande resultat.

R
rhc_summary <- summaryM(age + alb1 + card + crea1 + hema1 + trauma + edu + dementhx ~ death,
              data = rhc,
              overall = TRUE,
              test = TRUE)

html(rhc_summary,
     caption='Prediktorer i relation till död',
     exclude1 = TRUE,
     npct = 'both',
     digits = 2,
     prmsd = TRUE,
     brmsd = TRUE)
Endast de första raderna visas här.