Laboratorio en casa 1.2

Lab 1 Lab Manual Exercise

Aquí van todos los ejercicios del laboratorio es necesario poner “`” y la “{ r }” en los codigos para que sean facilmente reconocidos como tal

1.2.1 Descargar las plantillas

Se hace el proceso de descarga, copia y uso de esta plantilla dada por el autor

1.2.2 Get some data

Código para hacer un histograma,se toma una muestra de 100 números, con media de 50 y desviación estándar de 25, y se ponen en el histograma con esta pieza de código

hist(rnorm(100, mean=50, sd=25))

Con este código se carga la data encontrada en el archivo .zip dado por el autor,

En caso de que no funcione se puede reemplazar por:

library(data.table)
nyc_films <- fread("https://raw.githubusercontent.com/CrumpLab/statisticsLab/master/data/Film_Permits.csv")

1.2.3 look at the data

library(summarytools)
view(dfSummary(nyc_films))

1.2.4 Make Plots to answer questions

1.2.4.1

Se corre la libreria dplyr, y se hace un conteo de cada una de las 5 observaciones

library(dplyr)

counts <- nyc_films %>%
          group_by(Borough) %>%
          summarize(count_of_permits = length(Borough))

carga de libreria ggplot2 para hacer el grafíco

library(ggplot2)

ggplot(counts, aes(x = Borough, y = count_of_permits )) +
  geom_bar(stat="identity")

1.2.4.2

la columna categoria da detalles de información en el conteo de la data

counts <- nyc_films %>%
          group_by(Category) %>%
          summarize(count_of_permits = length(Category))

ggplot(counts, aes(x = Category, y = count_of_permits )) +
  geom_bar(stat="identity")+ 
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

counts <- nyc_films %>%
          group_by(Category) %>%
          summarize(count_of_permits = length(Category))

ggplot(counts, aes(x = Category, y = count_of_permits )) +
  geom_bar(stat="identity")+ 
  theme(axis.text.x = element_text(angle = 90, hjust = 1))

1.2.5 ggplot2 basics


### 1.2.5.1

cambia el nombre de la etiqueta en el eje y


``` r
ggplot(counts, aes(x = Category, y = count_of_permits )) +
  geom_bar(stat="identity") + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  ylab("Number of Film Permits")

1.2.5.2

cambia la etiqueta en el eje x

ggplot(counts, aes(x = Category, y = count_of_permits )) +
  geom_bar(stat="identity") + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  ylab("Number of Film Permits") + 
  xlab("Category of film")

1.2.5.3

añade un titulo a el grafico

ggplot(counts, aes(x = Category, y = count_of_permits )) +
  geom_bar(stat="identity") + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  ylab("Number of Film Permits") + 
  xlab("Category of film") +
  ggtitle("Number of Film permits in NYC by Category")

1.2.5.4

cambia el color en las barras

ggplot(counts, aes(x = Category, y = count_of_permits, color=Category )) +
  geom_bar(stat="identity") + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  ylab("Number of Film Permits") + 
  xlab("Category of film") +
  ggtitle("Number of Film permits in NYC by Category")

1.2.5.5

se añade ahora color dentro de las barras

ggplot(counts, aes(x = Category, y = count_of_permits, 
                   color=Category, 
                   fill= Category )) +
  geom_bar(stat="identity") + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  ylab("Number of Film Permits") + 
  xlab("Category of film") +
  ggtitle("Number of Film permits in NYC by Category")

1.2.5.6

elimina la leyenda que esta en el lateral

ggplot(counts, aes(x = Category, y = count_of_permits, 
                   color=Category, 
                   fill= Category )) +
  geom_bar(stat="identity") + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  ylab("Number of Film Permits") + 
  xlab("Category of film") +
  ggtitle("Number of Film permits in NYC by Category") +
  theme(legend.position="none")

1.2.5.7

Cambia el tema del grafico de arriba por una apariencia limpia y practica

ggplot(counts, aes(x = Category, y = count_of_permits, 
                   color=Category, 
                   fill= Category )) +
  geom_bar(stat="identity") + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  ylab("Number of Film Permits") + 
  xlab("Category of film") +
  ggtitle("Number of Film permits in NYC by Category") +
  theme(legend.position="none") +
  theme_classic()

1.2.5.8

reordenar el tema de las capas

ggplot(counts, aes(x = Category, y = count_of_permits, 
                   color=Category, 
                   fill= Category )) +
  geom_bar(stat="identity") + 
  theme_classic() +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  ylab("Number of Film Permits") + 
  xlab("Category of film") +
  ggtitle("Number of Film permits in NYC by Category") +
  theme(legend.position="none") 

1.2.5.9

cambia el tamaño de la fuente

ggplot(counts, aes(x = Category, y = count_of_permits, 
                   color=Category, 
                   fill= Category )) +
  geom_bar(stat="identity") + 
  theme_classic(base_size = 15) +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  ylab("Number of Film Permits") + 
  xlab("Category of film") +
  ggtitle("Number of Film permits in NYC by Category") +
  theme(legend.position="none") 

ggplot(counts, aes(x = Category, y = count_of_permits, 
                   color=Category, 
                   fill= Category )) +
  geom_bar(stat="identity") + 
  theme_classic(base_size = 10) +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  ylab("Number of Film Permits") + 
  xlab("Category of film") +
  ggtitle("Number of Film permits in NYC by Category") +
  theme(legend.position="none") 

1.2.6 More questions about NYC films

Agrega una columna para subcategorias

# get the counts (this is a comment it's just here for you to read)

counts <- nyc_films %>%
          group_by(SubCategoryName) %>%
          summarize(count_of_permits = length(SubCategoryName))

# make the plot

ggplot(counts, aes(x = SubCategoryName, y = count_of_permits, 
                   color=SubCategoryName, 
                   fill= SubCategoryName )) +
  geom_bar(stat="identity") + 
  theme_classic(base_size = 10) +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  ylab("Number of Film Permits") + 
  xlab("Sub-category of film") +
  ggtitle("Number of Film permits in NYC by Sub-category") +
  theme(legend.position="none") 

1.2.6.2

vamos a utilizar otra de las funciones de ggplot la cual se llama facet_wrap, lo utilizamos para organizar distritos donde se solicitan los permisos de las peliculas, con esto añadimos “borough” y “category” ajustando las facetas por categoria en lugar de municipio

# get the counts (this is a comment it's just here for you to read)

counts <- nyc_films %>%
          group_by(Borough,Category) %>%
          summarize(count_of_permits = length(Category))

# make the plot

ggplot(counts, aes(x = Category, y = count_of_permits, 
                   color=Category, 
                   fill= Category )) +
  geom_bar(stat="identity") + 
  theme_classic(base_size = 10) +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  ylab("Number of Film Permits") + 
  xlab("Category of film") +
  ggtitle("Number of Film permits in NYC by Category and Borough") +
  theme(legend.position="none") +
  facet_wrap(~Borough, ncol=3)

hicimos el mismo procedimiento pero se cambio category con borough cambiando y ajustando las facetas por categoria en lugar de municipio

ggplot(counts, aes(x = Borough, y = count_of_permits, 
                   color=Borough, 
                   fill= Borough )) +
  geom_bar(stat="identity") + 
  theme_classic(base_size = 10) +
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +
  ylab("Number of Film Permits") + 
  xlab("Borough") +
  ggtitle("Number of Film permits in NYC by Category and Borough") +
  theme(legend.position="none") +
  facet_wrap(~Category, ncol=5)

1.2.7 Gapminder

gapminder es una organizacion que recopila datos mundiales interesantes y del que existe un paquete en r que se puede instalar

Aqui instalamos el paquete

Aqui se cargan las libreria gapminder

library(gapminder)
gapminder_df<-gapminder

1.2.7.1

utiliza summary tools para ver un resumen de los datos que contiene gapminder_df, se le añadio al codigo dado por el autor la linea library con summarytools, ya que solo la linea de view no era reconocida

library(summarytools)

View(dfSummary(gapminder_df))

1.2.8 hacer preguntas con los datos de gap minder

1.2.8.1

representa mediante un histograma cuanto vive la gente en todo el mundo según este conjunto de datos, utilizando lifeexp

ggplot(gapminder_df, aes(x=lifeExp))+
  geom_histogram(color="white")

se utiliza un bloque de codigo para agregar mas capas y configuraciones para modificar partes del grafico

ggplot(gapminder_df, aes(x = lifeExp)) +
  geom_histogram(color="white")+ 
  theme_classic(base_size = 15) +
  ylab("Frequency count") + 
  xlab("Life Expectancy") +
  ggtitle("Histogram of Life Expectancy from Gapminder")

se cambia el tamaño del intervalo que controla el ancho o la estrechez del histograma, o el numero de barras. A lo que dividimos el rango de 50 contenedores pequeños del mismo tamaño en lugar de 30

ggplot(gapminder_df, aes(x = lifeExp)) +
  geom_histogram(color="white", bins=50)+ 
  theme_classic(base_size = 15) +
  ylab("Frequency count") + 
  xlab("Life Expectancy") +
  ggtitle("Histogram of Life Expectancy from Gapminder")

1.2.8.2

utilizamos un diagrama de dispersion donde se establece el eje x como año, y el eje y como esperanza de vida, se uso el geom_point para mostrar varios puntos y observarlos

ggplot(gapminder_df, aes(y= lifeExp, x= year))+
  geom_point()

1.2.8.3

En este caso buscamos encontrar el aumento de la esperanza de vida de los canadienses y para eso dividimos el conjunto de datos completo en otro conjunto mas pequeño que solo contenga datos de canada

# filter rows to contain Canada

smaller_df <- gapminder_df %>% 
                 filter(country == "Canada")

# plot the new data contained in smaller_df

ggplot(smaller_df, aes(y= lifeExp, x= year))+
  geom_point()

1.2.8.4

cambiamos la forma de filtrar los datos para que se permita más de un país y luego se grafico los datos añadiendo opciones de color atractivas

# filter rows to contain countries of choice

smaller_df <- gapminder_df %>% 
                 filter(country %in% c("Canada","France","Brazil") == TRUE)

# plot the new data contained in smaller_df

ggplot(smaller_df, aes(y= lifeExp, x= year, group= country))+
  geom_point()

añadimos una leyenda que nos permita ver a que paises representa

ggplot(smaller_df,aes(y= lifeExp, x= year, 
                      group= country, color = country)) +
  geom_point()+ 
  theme_classic(base_size = 15) +
  ylab("Life Expectancy") + 
  xlab("Year") +
  ggtitle("Life expectancy by year for three countries")

1.2.8.5

conectamos los puntos con una linea para que sea más facil ver la conexión, añadiendo una nueva geom_line capa

ggplot(smaller_df,aes(y= lifeExp, x= year, 
                      group= country, color = country)) +
  geom_point()+ 
  geom_line()+
  theme_classic(base_size = 15) +
  ylab("Life Expectancy") + 
  xlab("Year") +
  ggtitle("Life expectancy by year for three countries")

Lab 1 Generalization exercises

1.2.9

punto 1, Crea una gráfica que represente la esperanza de vida anual para los cinco continentes, utilizando el “continent” factor. Asegúrate de cambiar el título para que se lea correctamente.

# Cargar librerías necesarias 
library(ggplot2)
library(gapminder)

#Eje y es esperanza de vida, Eje x el año, se reemplaza grupo y color por el continente y se edita el nombre para que se entienda que es por continentes

ggplot(gapminder_df, aes(y= lifeExp, x= year, group= continent, color=continent))+ geom_point()+ theme_classic(base_size = 15) + ylab("Life Expectancy") + xlab("Year") + ggtitle("Life expectancy by year for continents")

punto 2, Crea una gráfica que represente el PIB per cápita anual de EE. UU., Canadá y México. Usa la gdpPercap columna para los datos del PIB per cápita.

#se cargan todas las librerias necesarias en caso de necesidad
library(dplyr)
library(gapminder)
library(ggplot2)
gapminder_df<-gapminder

#Se usa código del punto 1.2.8, se asegura de la carga de las librerias y se nombran los países, se reemplaza grupo y color con gdpPercap, y se edita el titulo del grafico

smaller_df <- gapminder_df %>%
    filter(country %in% c("United States","Canada","Mexico"))

ggplot(gapminder_df, aes(y= lifeExp, x= year, group= gdpPercap, color=gdpPercap ))+
  geom_point() +
  ylab("Life Expectancy") + 
  xlab("Year") +
  ggtitle("PIB Perccapita por año para EE.UU CANADÁ MÉXICO")

punto 3, Crea un nuevo gráfico que represente cualquier elemento que te interese usando el conjunto de datos Gapminder. Solo necesita ser un gráfico del que no se haya proporcionado un ejemplo

#Se usa código tambien del punto 1.2.8, se cargan las librerias en caso de necesidad, en continent se nombra "Americas" se reemplaza grupo por continent y color con gdpPercap, y se edita el titulo del grafico para que sea correcto con la información

smaller_df2 <- gapminder_df %>% 
                 filter(continent %in% c("Americas") == TRUE)

ggplot(gapminder_df, aes(y= lifeExp, x= year, group= continent, color=gdpPercap))+
  geom_point() +
  ylab("Life Expectancy") + 
  xlab("Year") +
  ggtitle("Life Expectancy of Americas")

Lab 1 Written answer question

1.2.10

A) ¿Qué representan las barras de un histograma: las barras de un histograma representan la frecuencia de los datos dentro de un intervalo o clase. Cada una de las barras del histograma muestra un rango de valores y cuantos datos se encuentran en ese rango. En este, el ancho de la barra indica el intervalo que es considerado, mientras la altura refleja cuantos valores cayeron dentro de ese intervalo.

B) ¿Cuántas barras puede tener un histograma?: El número de barras depende completamente de como se dividan los datos en intervalos, por lo que no existe un limite establecido en la mayoria de los casos, sin embargo, es innegable que en un sentido estetico, es importante mantener un equilibrio donde no se usen demasiadas o pocos, de modo que no se complejicen o simplifiquen demasiado y de una representacion clara de los datos. Por lo que usualmente es recomendable entre 5 a 20 datos, dependiendo del tamaño y variedad de los datos.

C) ¿Qué te dicen las alturas de las barras?: La altura de cada barra indica la frecuencia absoluta u observaciones que se encuentran dentro del intervalo, es decir los numeros de datos. Entre mas alta sea la barra, mayor es la cantidas de datos que estan en ese rango, mientras que entre mas baja, significa que hay un menor numero de valores en ese rango.

D) ¿Qué hay en el eje x y en el eje y de un histograma?: En un histograma, el eje x contiene los intervalos o clases en los que se agrupan los datos. Mientras que el eje y muestra la frecuencia, cuantos datos tiene cada intervalo, ya sean de frecuencia absoluta o relativa, el eje y indica la mantitud de la cantidad de datos que se encuentra en cada barra.

E) ¿Qué te dice la barra más alta de un histograma?: la barra mas alta del histograma muestra el intervalo donde hay una mayor concentración de datos. En otras palabras, el rango que es mas comun o frecuente dentro del conjunto. En caso de que el histograma solo tenga un barra mas alta, esta permite identificar la zona de valores mas representativa.

F) ¿Qué te dice la barra más corta de un histograma?: La barra mas baja representa el intervalo con la menor frecuencia se datos. Es decir, aquel rango en el que hay muy pocos valores o casi ninguno. Por esto, una barra muy baja o inexistente puede indicar la presencia de intervalos poco comunes o incluso rangos en los que se podria encontrar datos atipicos.

G) ¿Cuáles son algunos usos de los histogramas? ¿Por qué querrías ver un histograma de algunos números que recopilaste? los histogramas sirven para ver información de manera más simple en graficos, permite visualizar la distribución de un conjunto de datos numericos, por lo que muestra concentración, valores frecuentes, sesgos, ayuda a entender patrones en los datos por lo que puede ayudar mucho.

H) Imagina que tienes dos histogramas: uno muy ancho y disperso, y el otro muy estrecho con un pico muy alto. ¿Cuál de ellos esperarías que contuviera números más consistentes (números cercanos entre sí)? Explica por qué. Creemos que el histograma estrecho con un pico alto tendria los datos más consistentes, pues al ser estrecho muestra que los datos se agrupan en un rango más reducido, entre más disperso el grafico significaria que hay una mayor distancia y diferencia entre los datos.