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 clarscor(),cov()calcula les covariancies i correlacionsmad()calcula la desviació mitjana absolutaquantile()calcula diversos quantilssummary()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.