Luis Maron Illachura
22 de marzo de 2018
En cualquier analisis estadistico siempre debemos realizar un descriptivo de la muestra con un doble objetivo:
-Comprobar la calidad de los datos.
-Conocer detalladamente los datos. Esto nos ayudara a decidir la estrategia de analisis mas adecuada.
Existen varias funciones de lectura de datos en R segun el formato del archivo. Cuando tenemos un fichero en excel, es aconsejable guardarlo previamente en formato csv y posteriormente lo leemos desde R con la funcion read.csv:
datos <- read.csv("ejemplo-1-RStudio.csv", sep=";")
head(datos)
## Peso Altura Edad Sexo Nombres Estudios
## 1 77 1.63 23 1 Pepe 1
## 2 58 1.63 23 2 Ana 2
## 3 89 1.85 26 1 Manolo 0
## 4 55 1.62 23 1 Rafa 1
## 5 47 1.60 26 2 María 3
## 6 60 1.63 26 2 Auxi 2
# View(datos)
datos
## Peso Altura Edad Sexo Nombres Estudios
## 1 77 1.63 23 1 Pepe 1
## 2 58 1.63 23 2 Ana 2
## 3 89 1.85 26 1 Manolo 0
## 4 55 1.62 23 1 Rafa 1
## 5 47 1.60 26 2 María 3
## 6 60 1.63 26 2 Auxi 2
## 7 54 1.70 22 1 Germán 3
## 8 58 1.65 23 2 Celia 1
## 9 75 1.78 26 2 Carmen 2
## 10 65 1.70 24 2 Juan 3
## 11 82 1.77 28 1 Dani 0
## 12 85 1.83 42 1 Antonio 1
## 13 75 1.74 25 2 Belinda 1
## 14 65 1.65 26 2 Sara 3
class(datos) #Muestra el tipo de objeto.
## [1] "data.frame"
dim(datos) #Muestra las dimensiones del objeto.
## [1] 14 6
ncol(datos);nrow(datos) #Muestra el número de columnas/filas del objeto.
## [1] 6
## [1] 14
str(datos)
## 'data.frame': 14 obs. of 6 variables:
## $ Peso : int 77 58 89 55 47 60 54 58 75 65 ...
## $ Altura : num 1.63 1.63 1.85 1.62 1.6 1.63 1.7 1.65 1.78 1.7 ...
## $ Edad : int 23 23 26 23 26 26 22 23 26 24 ...
## $ Sexo : int 1 2 1 1 2 2 1 2 2 2 ...
## $ Nombres : Factor w/ 14 levels "Ana","Antonio",..: 12 1 10 13 11 3 8 6 5 9 ...
## $ Estudios: int 1 2 0 1 3 2 3 1 2 3 ...
# datos <- edit(datos)
names(datos)# Muestra los nombres de las columnas.
## [1] "Peso" "Altura" "Edad" "Sexo" "Nombres" "Estudios"
ls() #Visualiza las variables cargadas en memoria.
## [1] "datos"
rm() #Elimina las variables indicadas.
library(sjPlot)
## Install package "strengejacke" from GitHub (`devtools::install_github("strengejacke/strengejacke")`) to load all sj-packages at once!
sjmisc::descr(datos[,1:3])
##
## ## Basic descriptive statistics
##
## variable type label n NA.prc mean sd se md trimmed min
## Peso integer Peso 14 0 67.50 12.98 3.47 65.00 67.42 47.0
## Altura numeric Altura 14 0 1.70 0.08 0.02 1.67 1.69 1.6
## Edad integer Edad 14 0 25.93 4.94 1.32 25.50 24.92 22.0
## max range skew kurtosis
## 89.00 42.00 0.16 -1.44
## 1.85 0.25 0.52 -1.29
## 42.00 20.00 2.37 5.09
tab_df(datos)
Peso | Altura | Edad | Sexo | Nombres | Estudios |
---|---|---|---|---|---|
77 | 1.63 | 23 | 1 | Pepe | 1 |
58 | 1.63 | 23 | 2 | Ana | 2 |
89 | 1.85 | 26 | 1 | Manolo | 0 |
55 | 1.62 | 23 | 1 | Rafa | 1 |
47 | 1.6 | 26 | 2 | María | 3 |
60 | 1.63 | 26 | 2 | Auxi | 2 |
54 | 1.7 | 22 | 1 | Germán | 3 |
58 | 1.65 | 23 | 2 | Celia | 1 |
75 | 1.78 | 26 | 2 | Carmen | 2 |
65 | 1.7 | 24 | 2 | Juan | 3 |
82 | 1.77 | 28 | 1 | Dani | 0 |
85 | 1.83 | 42 | 1 | Antonio | 1 |
75 | 1.74 | 25 | 2 | Belinda | 1 |
65 | 1.65 | 26 | 2 | Sara | 3 |
sjt.frq(datos)
## `sjt.frq()` will become deprecated in the future. Please use `sjmisc::frq(out = "v")` instead.
value | N | raw % | valid % | cumulative % |
---|---|---|---|---|
47 | 1 | 7.14 | 7.14 | 7.14 |
54 | 1 | 7.14 | 7.14 | 14.29 |
55 | 1 | 7.14 | 7.14 | 21.43 |
58 | 2 | 14.29 | 14.29 | 35.71 |
60 | 1 | 7.14 | 7.14 | 42.86 |
65 | 2 | 14.29 | 14.29 | 57.14 |
75 | 2 | 14.29 | 14.29 | 71.43 |
77 | 1 | 7.14 | 7.14 | 78.57 |
82 | 1 | 7.14 | 7.14 | 85.71 |
85 | 1 | 7.14 | 7.14 | 92.86 |
89 | 1 | 7.14 | 7.14 | 100.00 |
missings | 0 | 0.00 | ||
total N=14 · valid N=14 · x̄=67.50 · σ=12.98 |
value | N | raw % | valid % | cumulative % |
---|---|---|---|---|
1.6 | 1 | 7.14 | 7.14 | 7.14 |
1.62 | 1 | 7.14 | 7.14 | 14.29 |
1.63 | 3 | 21.43 | 21.43 | 35.71 |
1.65 | 2 | 14.29 | 14.29 | 50.00 |
1.7 | 2 | 14.29 | 14.29 | 64.29 |
1.74 | 1 | 7.14 | 7.14 | 71.43 |
1.77 | 1 | 7.14 | 7.14 | 78.57 |
1.78 | 1 | 7.14 | 7.14 | 85.71 |
1.83 | 1 | 7.14 | 7.14 | 92.86 |
1.85 | 1 | 7.14 | 7.14 | 100.00 |
missings | 0 | 0.00 | ||
total N=14 · valid N=14 · x̄=1.70 · σ=0.08 |
value | N | raw % | valid % | cumulative % |
---|---|---|---|---|
22 | 1 | 7.14 | 7.14 | 7.14 |
23 | 4 | 28.57 | 28.57 | 35.71 |
24 | 1 | 7.14 | 7.14 | 42.86 |
25 | 1 | 7.14 | 7.14 | 50.00 |
26 | 5 | 35.71 | 35.71 | 85.71 |
28 | 1 | 7.14 | 7.14 | 92.86 |
42 | 1 | 7.14 | 7.14 | 100.00 |
missings | 0 | 0.00 | ||
total N=14 · valid N=14 · x̄=25.93 · σ=4.94 |
value | N | raw % | valid % | cumulative % |
---|---|---|---|---|
1 | 6 | 42.86 | 42.86 | 42.86 |
2 | 8 | 57.14 | 57.14 | 100.00 |
missings | 0 | 0.00 | ||
total N=14 · valid N=14 · x̄=1.57 · σ=0.51 |
value | N | raw % | valid % | cumulative % |
---|---|---|---|---|
Ana | 1 | 7.14 | 7.14 | 7.14 |
Antonio | 1 | 7.14 | 7.14 | 14.29 |
Auxi | 1 | 7.14 | 7.14 | 21.43 |
Belinda | 1 | 7.14 | 7.14 | 28.57 |
Carmen | 1 | 7.14 | 7.14 | 35.71 |
Celia | 1 | 7.14 | 7.14 | 42.86 |
Dani | 1 | 7.14 | 7.14 | 50.00 |
Germán | 1 | 7.14 | 7.14 | 57.14 |
Juan | 1 | 7.14 | 7.14 | 64.29 |
Manolo | 1 | 7.14 | 7.14 | 71.43 |
María | 1 | 7.14 | 7.14 | 78.57 |
Pepe | 1 | 7.14 | 7.14 | 85.71 |
Rafa | 1 | 7.14 | 7.14 | 92.86 |
Sara | 1 | 7.14 | 7.14 | 100.00 |
missings | 0 | 0.00 | ||
total N=14 · valid N=14 · x̄=7.50 · σ=4.18 |
value | N | raw % | valid % | cumulative % |
---|---|---|---|---|
0 | 2 | 14.29 | 14.29 | 14.29 |
1 | 5 | 35.71 | 35.71 | 50.00 |
2 | 3 | 21.43 | 21.43 | 71.43 |
3 | 4 | 28.57 | 28.57 | 100.00 |
missings | 0 | 0.00 | ||
total N=14 · valid N=14 · x̄=1.64 · σ=1.08 |
attach(datos) #Acceder a las varibles en la base de datos solo dando sus nombres
sjt.xtab(Sexo,Estudios)
Sexo | Estudios | Total | |||
---|---|---|---|---|---|
0 | 1 | 2 | 3 | ||
1 | 2 | 3 | 0 | 1 | 6 |
2 | 0 | 2 | 3 | 3 | 8 |
Total | 2 | 5 | 3 | 4 | 14 | χ2=6.038 · df=3 · Cramer’s V=0.657 · Fisher’s p=0.179 |
summary(datos) #Resumen Estadistico datos
## Peso Altura Edad Sexo
## Min. :47.0 Min. :1.600 Min. :22.00 Min. :1.000
## 1st Qu.:58.0 1st Qu.:1.630 1st Qu.:23.00 1st Qu.:1.000
## Median :65.0 Median :1.675 Median :25.50 Median :2.000
## Mean :67.5 Mean :1.699 Mean :25.93 Mean :1.571
## 3rd Qu.:76.5 3rd Qu.:1.762 3rd Qu.:26.00 3rd Qu.:2.000
## Max. :89.0 Max. :1.850 Max. :42.00 Max. :2.000
##
## Nombres Estudios
## Ana :1 Min. :0.000
## Antonio:1 1st Qu.:1.000
## Auxi :1 Median :1.500
## Belinda:1 Mean :1.643
## Carmen :1 3rd Qu.:2.750
## Celia :1 Max. :3.000
## (Other):8
summary(datos$Altura)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.600 1.630 1.675 1.699 1.762 1.850
summary(datos$Sexo)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.000 1.000 2.000 1.571 2.000 2.000
min(Peso)
## [1] 47
max(Peso)
## [1] 89
range(Peso)
## [1] 47 89
mean(Altura) #media Aritmetica
## [1] 1.698571
median(Altura)
## [1] 1.675
length(Altura)
## [1] 14
sd(Altura)
## [1] 0.08244879
var(Altura)
## [1] 0.006797802
cov(Peso,Altura)
## [1] 0.8915385
quantile(Peso, 0.25) #Cuantil Q1
## 25%
## 58
quantile(Peso, 0.75) #Cuantil Q3
## 75%
## 76.5
quantile(Peso, c(0.35, 0.60, 0.98)) #Muestra los percentiles al 35, 60 y 96% de la variable Peso
## 35% 60% 98%
## 59.10 73.00 87.96
sort(Peso)
## [1] 47 54 55 58 58 60 65 65 75 75 77 82 85 89
table(Sexo) # Tabla de frecuencias absolutas
## Sexo
## 1 2
## 6 8
table(Edad,Sexo)
## Sexo
## Edad 1 2
## 22 1 0
## 23 2 2
## 24 0 1
## 25 0 1
## 26 1 4
## 28 1 0
## 42 1 0
tablaA <- as.data.frame(table(Altura = factor(cut(Altura, breaks = 5)))) # Agrupa los valores de la variable Altura en 5 y calcula su frecuencia absoluta
tablaA
## Altura Freq
## 1 (1.6,1.65] 7
## 2 (1.65,1.7] 2
## 3 (1.7,1.75] 1
## 4 (1.75,1.8] 2
## 5 (1.8,1.85] 2
transform(tablaA, #Muestra y reagrupa la tabla de frecuencias completas
FreqAc = cumsum(Freq),
Rel = round(prop.table(Freq), 3),
RelAc = round(cumsum(prop.table(Freq)), 3))
## Altura Freq FreqAc Rel RelAc
## 1 (1.6,1.65] 7 7 0.500 0.500
## 2 (1.65,1.7] 2 9 0.143 0.643
## 3 (1.7,1.75] 1 10 0.071 0.714
## 4 (1.75,1.8] 2 12 0.143 0.857
## 5 (1.8,1.85] 2 14 0.143 1.000
detach(datos)
library(sjPlot)
datos$Sexo<-factor(datos$Sexo, levels=c(1,2), labels=c("Hombre","Mujer"))
datos$Estudios<-factor(datos$Estudios, levels=c(0,1,2,3), labels=c("Sin estudios","Estudios Primarios",
"Estudios Secundarios","Estudios Superiores"))
tab_df(datos)
Peso | Altura | Edad | Sexo | Nombres | Estudios |
---|---|---|---|---|---|
77 | 1.63 | 23 | Hombre | Pepe | Estudios Primarios |
58 | 1.63 | 23 | Mujer | Ana | Estudios Secundarios |
89 | 1.85 | 26 | Hombre | Manolo | Sin estudios |
55 | 1.62 | 23 | Hombre | Rafa | Estudios Primarios |
47 | 1.6 | 26 | Mujer | María | Estudios Superiores |
60 | 1.63 | 26 | Mujer | Auxi | Estudios Secundarios |
54 | 1.7 | 22 | Hombre | Germán | Estudios Superiores |
58 | 1.65 | 23 | Mujer | Celia | Estudios Primarios |
75 | 1.78 | 26 | Mujer | Carmen | Estudios Secundarios |
65 | 1.7 | 24 | Mujer | Juan | Estudios Superiores |
82 | 1.77 | 28 | Hombre | Dani | Sin estudios |
85 | 1.83 | 42 | Hombre | Antonio | Estudios Primarios |
75 | 1.74 | 25 | Mujer | Belinda | Estudios Primarios |
65 | 1.65 | 26 | Mujer | Sara | Estudios Superiores |
library(ggplot2)
library(plotly)
attach(datos)
a<-barplot(table(Sexo),main="Distribucion de Frecuencias de la Variable Sexo\n",col=c("cyan4","pink3"), xlab = "Sexo", horiz = T)
text(a,table(datos$Sexo)+0.5 ,labels=table(Sexo), xpd = TRUE)
a <- ggplot(datos, aes(Estudios))
a + geom_bar()
pie(table(Estudios), main = "Distribucion de Porcentaje de la Variable Niv. Estudio")
hist(Peso,main="Peso",col="blue3", breaks = "Sturges", labels = T)
grid(NULL,NULL,"blue3")
k <- round(1 + 3.322*log10(length(Peso)))#para saber el bins optimo xD
k
## [1] 5
ggplot(datos, aes(x = Peso)) + geom_histogram(bins = 5 , color="cyan3",fill="cyan4") + theme_bw() + labs(title="Histograma de Peso",y="Frecuencia")
plot_ly(x = Peso) %>% add_histogram()
boxplot(Edad); grid(0,NULL,"grey")#datoa atipicos