Está en la página 1de 7

Día 3

Introducción a la Estadística Descriptiva


Importación, limpieza y exportación de datos
1) Importar el dataset “antropometria” de alturas, pesos, edades y sexos de una
muestra poblacional. ¿Qué tipo de datos contiene el dataframe? ¿Existen
elementos con NA?
library(readr)
head(antropometria)
dim(antropometria)
class(antropometria)
is.na(antropometria)
any(is.na(antropometria))
any(is.na(antropometria$height))
any(is.na(antropometria$weight))
any(is.na(antropometria$age))
any(is.na(antropometria$sex))
Este data.frame contiene datos de tipo numeric (altura, peso y edades) y
character (sexo).
Si existen elementos con NA, en la columna de las variables talla y peso.

Medidas de resumen
a) Cargar el dataset antropometría.
antropometria <-
read.csv("antropometria.csv")
b) Analizar la estructura del dataset. Ayuda ?class, ?str, ?colnames ?nrow, ?
ncol, ?head, ?tail.
?class
class(antropometria)
?str
str(antropometria)
?colnames
colnames(antropometria)
?nrow
nrow(antropometria)
?ncol
ncol(antropometria)
?head
head(antropometria)
?tail
tail(antropometria)
is.na(antropometria)
any(is.na(antropometria))
complete.cases(antropometria)
Día 3

antropometria_noNA <-
antropometria[complete.cases(antropometria),
]
nrow(antropometria_noNA)
any(is.na(antropometria_noNA))
c) ¿Cuántos hombres y cuántas mujeres tiene el dataset? Ayuda ?table.
?table
table(antropometria$sex)
table(antropometria_noNA$sex)
datos_corregidos <- antropometria$sex=="M" |
antropometria$sex=="F"
antropometria_sexcorr <-
antropometria[datos_corregidos, ]
table(antropometria_sexcorr$sex)
En la base de datos hay 288 mujeres y 258 hombres.
d) Calcular máximo, mínimo, media, mediana, varianza y desviación estándar de
las alturas separadas por sexo. ¿Cuál tiene mayor media?¿Y mayor varianza?
Ayuda ?max, ?min, ?mean, ?median, ?var,?sd, ?summary.
any(is.na(antropometria_sexcorr))
antropometria_sexcorr_noNA <-
antropometria_sexcorr[complete.cases(antropo
metria_sexcorr), ]
any(is.na(antropometria_sexcorr_noNA))
head(antropometria_sexcorr_noNA)
height_men <-
antropometria_sexcorr_noNA$height[antropomet
ria_sexcorr_noNA$sex=="M"]
height_women <-
antropometria_sexcorr_noNA$height[antropomet
ria_sexcorr_noNA$sex=="F"]
summary(height_men)
summary(height_women)
var(height_men)
var(height_women)
Los hombres presentan una altura media más grande que las mujeres en nuestro
set de datos, no obstante, la varianza en el primer grupo es mayor.
e) Cargar el dataset cases-covid-19-by-country.csv de una forma apropiada.
casoscovid <- read.csv("cases-covid-19-by-
country.csv", stringsAsFactors = FALSE)
head(casoscovid)
f) ¿Cuántos datos u observaciones contiene el dataset?¿Cuántos atributos tiene
cada dato?
nrow(casoscovid)
ncol(casoscovid)
Día 3

g) ¿De qué tipo son los atributos?¿Cómo se llaman?


class(casoscovid$ADM0_NAME)
class(casoscovid$cum_conf)
class(casoscovid$cum_death)
colnames(casoscovid)
str(casoscovid)
Los atributos son de tipo character (nombre del país) y numeric (integer), en
el caso de los acumulados de muertes y casos confirmados.
h) Mostrar los primeros 5 datos y los últimos 5 datos.
head(casoscovid, n= 5)
tail(casoscovid, n= 5)
i) Realizar una descripción general del dataset a partir de este análisis con tus
palabras.
Este dataset se compone de 213 observaciones de 3 variables, correspondientes a
la cantidad acumulada de muertes y casos confirmados de COVID en 213 países
del mundo.
j) Calcular la media, la mediana y la moda para las variables numéricas ¿Son
similares o muy diferentes?
install.packages("modeest")
library(modeest)
median(casoscovid$cum_conf)
mean(casoscovid$cum_conf)
mfv(casoscovid$cum_conf)
median(casoscovid$cum_death)
mean(casoscovid$cum_death)
mfv(casoscovid$cum_death)
k) Calcular el rango, el desvío estándar y el IQR. A partir de esto indicar si los
valores están muy concentrados o si, por el contrario, están muy dispersos.
max(casoscovid$cum_conf)-
min(casoscovid$cum_conf)
max(casoscovid$cum_death)-
min(casoscovid$cum_death)
IQR(casoscovid$cum_conf)
IQR(casoscovid$cum_death)
sd(casoscovid$cum_conf)
sd(casoscovid$cum_death)
l) En base a lo visto anteriormente, ¿qué medidas usarías para resumir los
valores?
Dada la dispersión de los datos, convendría utilizar la mediana y el desvío
estándar como medidas de resumen para el set.
Visualización
a) Cargar el dataset antropometría.
Día 3

antropometria <-
read.csv("antropometria.csv")
b) .Existe relación entre la altura y la edad? Graficar en un scatter plot altura vs.
edad y decidir ¿Hubiera cambiado la conclusión de haber realizado el mismo
grafico separado por sexo? Ayuda?plot
plot(antropometria_sexcorr$age,
antropometria_sexcorr$height, xlab="Edad",
ylab="Altura")
c) Agregar una recta vertical en rojo en donde comienza el plateau. Ayuda: ?
abline.
?abline
abline(v=20, col= "Red", lty= 3)
d) Para remover el efecto de la edad, utilizar el grafico del punto anterior para
decidir a qué edad la misma deja de tener efecto en la altura y subsetear el
dataset original en un vector nuevo llamado “adultos”.
adultos <-
antropometria_sexcorr[antropometria$age>20,
]
any(is.na(antropometria_sexcorr))
adultos <-
adultos[complete.cases(adultos), ]
e) Realizar un boxplot de altura para adultos separados por hombre y por mujer
¿Varia la altura entre sexos? ¿Y para el peso? Agregar una leyenda al gráfico.
Ayuda ?boxplot ?legend.
?boxplot
boxplot(height~sex, data=adultos)
boxplot(weight~sex, data=adultos)
?legend
f) ¿Existe correlación entre la altura y el peso? Graficar en un scatter plot altura
vs. peso para hombre y mujer por separado. Para cuantificar este efecto,
calcular la correlación. Ayuda ?cor.
plot(adultos$height[adultos$sex=="F"],
adultos$weight[adultos$sex=="F"],
xlab="Altura", ylab="Peso")
plot(adultos$height[adultos$sex=="M"],
adultos$weight[adultos$sex=="M"],
xlab="Altura", ylab="Peso")
?cor
cor(adultos$height[adultos$sex=="F"],
adultos$weight[adultos$sex=="F"])
g) Realizar un histograma de la altura para varones adultos y para mujeres
adultas en el mismo gráfico ¿.Qué pinta tienen?¿Qué pasa si se cambia la
Día 3

cantidad de bines de los mismos? Agregar una leyenda al gráfico. Ayuda  ?


hist y parametro add = TRUE de hist.
?hist
hist(adultos$height[adultos$sex=="M"],
col="Green",breaks=20 ,xlab= "Altura", ylab=
"Frecuencia", main= "Histograma de Adultos
Varones")
hist(adultos$height[adultos$sex=="F"],
col="Purple",breaks=20 ,xlab= "Altura",
ylab= "Frecuencia", main= "Histograma de
Adultas Mujeres")
h) Cargar el dataset cases-covid-19-by-country.csv de una forma apropiada.
casoscovid <- read.csv("cases-covid-19-by-
country.csv", stringsAsFactors = FALSE)
i) Realizar un histograma para cada variable y decidir si es más conveniente
separar los datos en dos grupos para su análisis. En ese caso, ¿qué criterio
podríamos usar?
summary(casoscovid$cum_conf)
summary(casoscovid$cum_conf)[5]
tercercuartil <-
summary(casoscovid$cum_conf)[5]
tercercuartil
IQR(casoscovid$cum_conf)
IIC <-IQR(casoscovid$cum_conf)
ids_casos <- which(casoscovid$cum_conf <
tercercuartil + 1.5*IIC)
cum_conf <- casoscovid$cum_conf[ids_casos]
summary(cum_conf)
hist(cum_conf, main = "Histograma de casos
confirmados COVID", xlab = "Casos
confirmados")
j) Graficar en un mismo gráfico un histograma y un boxplot para cada variable
¿Siguen apareciendo valores extremos en los boxplot? ¿Por qué?
layout(matrix(1:2, ncol=1, nrow=2))
hist(cum_conf, main = "Casos confirmados
COVID", xlab = "Casos confirmados")
boxplot(cum_conf, horizontal = T)
k) Realizar un gráfico de scatter plot entre las variables numéricas ¿Es necesario
separar los casos más extremos para su análisis?¿Existe relación entre la
cantidad de infectados y la cantidad de fallecidos? Si existe, ¿es en todas las
escalas?¿de qué tipo?
layout(matrix(1:1, ncol=1, nrow=1))
Día 3

plot(casoscovid$cum_conf,
casoscovid$cum_death, xlab="Casos
Confirmados", ylab="Muertes", main="Muertes
por Caso Confirmado")
cor(casoscovid$cum_conf,
casoscovid$cum_death)
tercer_cuartil_conf <-
summary(casoscovid$cum_conf)[5]
iqr_conf <-
IQR(casoscovid$cum_conf)
tercer_cuartil_death <-
summary(casoscovid$cum_death)[5]
iqr_death <-
IQR(casoscovid$cum_death)
ids_casos <- which(casoscovid$cum_conf <
tercer_cuartil_conf + 1.5*iqr_conf &
casoscovid$cum_death <
tercer_cuartil_death + 1.5*iqr_death)
casos_de_interes <- casoscovid[ids_casos, ]
plot(casos_de_interes$cum_conf,
casos_de_interes$cum_death, xlab = "Casos
Confirmados", ylab = "Muertes", main =
"Casos de COVID-19")
cor(casos_de_interes$cum_conf,
casos_de_interes$cum_death)
PCA
El set de datos USArrests del paquete básico de R contiene el porcentaje de asaltos
(Assault), asesinatos (Murder) y violaciones (Rape) por cada 100,000 habitantes
para cada uno de los 50 estados de USA (1973). Además, incluye el porcentaje de
la población de cada estado que vive en zonas rurales (UrbanPoP).
a) Cargue el dataset con data(“USArrests”). Explore el dataset ¿Cuál es la
media, sd y mediana de cada variable? Ayuda ?summary.
str(ArrestosUSA)
head(ArrestosUSA)
tail(ArrestosUSA, n=5)
summary(ArrestosUSA)
boxplot(ArrestosUSA$Murder)
boxplot(ArrestosUSA$Assault)
boxplot(ArrestosUSA$Rape)
boxplot(ArrestosUSA$UrbanPop)
ArrestosUSA$Rape
violaciones <- ArrestosUSA$Rape
sort(violaciones)
b) Aplique PCA ¿Cuántas componentes calcula por defecto? Ayuda  ?
prcomp.
prcomp(ArrestosUSA, scale= TRUE)
PCA <- prcomp(ArrestosUSA, scale= TRUE)
Día 3

c) Graficar ¿Qué estados son más similares entre sí? Ayuda  ?text (sirve
para agregarle las etiquetas).
plot(PC1 ~ PC2,data=PCA$x)
text(PC1 ~PC2,
labels=rownames(PCA$x),data=PCA$x, cex=0.9,
font=2)

También podría gustarte