Manual de R (Estadística)/Descriptiva d'una sola variable

Introducció

modifica

Per obtenir una descriptiva (mitjanes i freqüències) d'una taula de dades:

data(Aids2, package="MASS")
library(Hmisc)
describe(Aids2)

Variables qualitatives

modifica

Existeixen moltes funcions per fer la descriptiva d'una variable qualitativa, però la que he trobat més útil és l'ordre tab1 del paquet epicalc:

NOTA: El paquet epicalc ja no es pot instal·lar (Package ‘epicalc’ was removed from the CRAN repository).

> library(epicalc)                                               # Es carrega el paquet '''epicalc'''
> data(Aids2, package="MASS")                                    # Es carregen les dades Aids2 del paquet '''MASS'''
> head(Aids2)                                                    # Es mostren els 6 primer registres de les dades
  state sex  diag death status T.categ age
1   NSW   M 10905 11081      D      hs  35
2   NSW   M 11029 11096      D      hs  53
3   NSW   M  9551  9983      D      hs  42
4   NSW   M  9577  9654      D    haem  44
5   NSW   M 10015 10290      D      hs  39
6   NSW   M  9971 10344      D      hs  36

> tab1(Aids2$status, graf=T, main="Variable estat (viu o mort)", missing= FALSE, bar.values="percent")
Aids2$status : 
        Frequency Percent Cum. percent
A            1082    38.1         38.1
D            1761    61.9        100.0
  Total      2843   100.0        100.0

A més de la taula, com s'ha activat l'opció graf = T, també fa un diagrama de barres sense incloure els casos amb valors desconeguts (missing= FALSE) i mostrant els percentatges (bar.values = "percent").

Una avantatge d'aquesta funció, és que la taula es pot exportar directament en format html utilitzant el paquet R2HTML. El codi seria:

HTMLStart(outdir=".", filename="Exemple_tab1", HTMLframe=FALSE)            # Crea fitxer al directori de treball actual (".")
HTML.title("Exemple de descriptiva amb la funció tab1 (epicalc)", HR=3)    # Títol en el fitxer html

tab1(Aids2$status,                                                         # Fa taula i diagrama de barres
     decimal=2,
     graf=T, 
     main="Variable estat (viu o mort)",
     missing= FALSE,
     bar.values="percent")
HTMLplot()                                                                 # Inclou el diagrama al fitxer html
HTMLhr()                                                                   # Tanca el títol
HTMLStop()                                                                 # Desa el fitxer Exemple_tab1.html

Es crea el fitxer Exemple_tab1.html en el directori de treball (es pot determinar quin es amb la ordre getwd()). Si es volgués col·locar-lo en en altre directori, es definiria al paràmetre outdir (p. ex., outdir = sys/viquillibres/).

Altres funcions, com la CrossTable (gmodels) no permet aquesta exportació senzilla i directa.

Si només es volgués la descriptiva de l'estat pels homes, es podrien seleccionar els casos amb [Aids2$sex == "M"]:

> tab1(Aids2$status[Aids2$sex == "M"], decimal=2)
Aids2$status[Aids2$sex == "M"] : 
        Frequency Percent Cum. percent
A            1046   37.98        37.98
D            1708   62.02       100.00
  Total      2754  100.00       100.00

Variables quantitatives

modifica

El R te diverses funcions per resumir les dades quantitatives. Recordar que si les dades tenen valors desconeguts (NA) sovint s'haurà d'especificar na.rm = TRUE. P. ex., si es vol estimar la mitjana de l'edat d'un grup de persones (amb una edat desconeguda), amb l'odre means():

> DADES = data.frame(SEXE=c("Dona", "Home", "Home", "Dona", "Dona", "Dona", "Home", "Home"),
+                    EDAT=c(20,NA,30,24,25,21,32,35))
> mean(DADES$EDAT)                                  # Funció "means" sense especificar "na.rm = TRUE"
[1] NA

el resultat (NA) no és el desitjat. Per obtenir la mitjana, cal especificar na.rm = TRUE si es vol que el R no les tingui en compte el valor desconegut:

> DADES = data.frame(SEXE=c("Dona", "Home", "Home", "Dona", "Dona", "Dona", "Home", "Home"),
+                    EDAT=c(20,NA,30,24,25,21,32,35))
> mean(DADES$EDAT, na.rm = TRUE)                    # Funció "means" especificant "na.rm = TRUE"
[1] 26.71429

Algunes de les funcions en les que cal especificar na.rm = TRUE són: [1]

  • mean(), median(), sum(), var(), min(), max(), range() totes han de ser raonablement clars
  • cor(), cov() calcula les covariancies i correlacions
  • mad() calcula la desviació mitjana absoluta
  • quantile() calcula diversos quantils
  • summary() calcula el mínim, màxim, 1r i 3r quantils, mediana i mitjana.

Es pot obtenir una taula amb els estadístics desitjats amb l'ordre describe (del paquet prettyR):

> library(prettyR)
> data(Aids2, package="MASS")                       # Es carregen les dades Aids2 del paquet MASS
> describe(Aids2$age , num.desc=c("mean","median","max", "min"), xname="Edat de la taula de dades Aids2")
Description of Edat de la taula de dades Aids2 

Numeric
              mean    median       max       min
x            37.41        37        82         0

Amb l'ordre describe els resultats es poden exportar amb el R2HTML, quedant els resultats en un format decent.

Referències

modifica
  1. Basic stats (summary stats, etc.)