R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

summary(cars)
##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00

Including Plots

You can also embed plots, for example:

Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.

Laboratorio 2: Estadística descriptiva

2.1 Objetivos generales Calcular medidas de tendencia central mediante software Calcular medidas de variación utilizando software Haga algunas preguntas a un conjunto de datos utilizando estadísticas descriptivas

Es necesario instalar la base de datos gapminder antes de empezar, debido a que esta base de datos se utilizara mas adelante en el laboratorio.

2.2.1.1 Making numbers in R

Es necesario poner ciertos numeros en una variable para poder hacer estadistica descriptiva.

my_numbers <- c(1,2,3,4)

Ademas de esta forma, tambien existen otras maneras practicas de formar numeros, en este caso, voy a utilizar seq para crear una secuencia de numeros del 1 al 100.

one_to_one_hundred <- seq(1,100,1)

Para repetir cosas, se puede usar “rep”.

rep(10,5)
## [1] 10 10 10 10 10

lo use para repetir 5 veces 10

rep(1,25)
##  [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Use “rep” para repetir 25 veces 1

all_together_now <- c(rep(10,5),rep(1,25)) 

De esta forma pude crear un vector que junte las dos secuencias de datos

2.2.1.2 Suma

Usamos la funcion “sum()” para poder sumar la secuencia de 100 numeros.

one_to_one_hundred <- seq(1,100,1)
sum(one_to_one_hundred)
## [1] 5050

2.2.1.3 Longitud

Introduzco la secuencia de numeros en la variable “one_to_one_hundred” para usar la funcion “length()” para conocer la longitud.

length(one_to_one_hundred)
## [1] 100

2.2.2 Tendencia central

2.2.2.1 Media

Utilizo la funcion “sum()” mientras la divido por la funcion “length()” para conocer la media.

sum(one_to_one_hundred)/length(one_to_one_hundred)
## [1] 50.5

Tambien es posible utilizar la funcion “mean” para sacar la media

mean(one_to_one_hundred)
## [1] 50.5

2.2.2.2 Mediana

Use la funcion “median” para identificar el centro exacto de los numeros organizados de menor a mayor. Usando de ejemplo (1,2,3).

median(c(1,2,3))
## [1] 2

2.2.2.3 Moda

Utilice la funcion que permite implementar la moda estadistica en un vector. La moda es el dato que aparece con mas frecuencia en un conjunto de datos.

my_mode <- function(x) {
  ux <- unique(x)
  ux[which.max(tabulate(match(x, ux)))]
}

my_mode(c(1,1,1,1,1,1,1,2,3,4))
## [1] 1

2.2.3 Variación

Se tomaran 100 numeros de una distribucion normal con una media de 10 y una desviacion estandar de 5. Una variacion es cuando los numeros son diferentes.

sample_numbers <- rnorm(100,10,5)
hist(sample_numbers)

2.2.3.1 range

El rango es el dato minimo y maximo de un conjunto de datos, para hacerlo, utilizare la funcion “range”

range(sample_numbers)
## [1] -0.2884685 21.7274905

2.2.3.2 var = varianza

Se puede encontrar la varianza muestral usando la funcion “var”. Se divide entre (n-1)

var(sample_numbers)
## [1] 24.76449

2.2.3.3 sd = desviación estándar

Utilice la funcion “sd” para calcular la desviacion estandar de la muestra.

sd(sample_numbers)
## [1] 4.976393

La desviacion estandar es la raiz cuadrada de la varianza.

sqrt(var(sample_numbers))
## [1] 4.976393

2.2.3.4 Todos los descriptivos

Pondre todas las funciones descriptivas y otras en un solo lugar

sample_numbers <- rnorm(100,10,5)
sum(sample_numbers)
## [1] 997.6712
length(sample_numbers)
## [1] 100
mean(sample_numbers)
## [1] 9.976712
median(sample_numbers)
## [1] 10.43563
my_mode(sample_numbers)
## [1] 8.493925
range(sample_numbers)
## [1] -7.503666 22.109316
var(sample_numbers)
## [1] 29.12479
sd(sample_numbers)
## [1] 5.396738

2.2.4 Descriptivos por condiciones

Es comun, que existan ocasiones donde sea necesario encontrar estadistica descriptiva para cada conjunto de numeros dentro de una condicion.

para ilustrarlo, creare un marco de fecha con 10 numeros en cada condicion

scores <- rnorm(100,10,5)
conditions <- rep(c("A","B","C","D","E","F","G","H","I","J"), each =10)
my_df <- data.frame(conditions,scores)

con esto, se creo un data donde hay 10 filas para cada condicion de una etiqueta en la condicion columna y 10 puntuaciones para cada condicion scores columna.

Para encontrar la media, es necesario usar la funcion mean y es posible hacerlo en cada columna si se especifica el numero.

mean(my_df[my_df$conditions=="A",]$scores)
## [1] 10.05549
mean(my_df[my_df$conditions=="B",]$scores)
## [1] 11.08822
mean(my_df[my_df$conditions=="C",]$scores)
## [1] 9.705101

y asi sucesivamente con cada numero.

Pero ese metodo no es tan util y es bastante lento, gracias a que existe la capacidad de resumir.

2.2.4.1 agrupar_por y resumir

la forma mas sencilla de hacerlo es usando la función group_byy summarisedel dplyrpaquete.

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
my_df %>%
  group_by(conditions) %>%
  summarise(means = mean(scores))
## # A tibble: 10 × 2
##    conditions means
##    <chr>      <dbl>
##  1 A          10.1 
##  2 B          11.1 
##  3 C           9.71
##  4 D           8.58
##  5 E           9.80
##  6 F           8.06
##  7 G          11.7 
##  8 H           9.68
##  9 I          11.2 
## 10 J           9.41

Debido a que la impresion de esto falla esteticamente, pondre los resultados del codigo en una nueva variable y lo imprimire correctamente al usar knit

summary_df <- my_df %>%
               group_by(conditions) %>%
               summarise(means = mean(scores))

knitr::kable(summary_df)
conditions means
A 10.055492
B 11.088220
C 9.705101
D 8.580683
E 9.801974
F 8.059078
G 11.741787
H 9.679419
I 11.233472
J 9.414632

2.2.4.2 descriptivos múltiples

Lo mejor de dplyr es que se puede usar mas de una funcion y obtener mas de un resumen. Asi que agregare la desviacion estandar.

summary_df <- my_df %>%
               group_by(conditions) %>%
               summarise(means = mean(scores),
                         sds = sd(scores))

knitr::kable(summary_df)
conditions means sds
A 10.055492 3.423140
B 11.088220 5.942027
C 9.705101 3.897752
D 8.580683 5.002534
E 9.801974 3.702861
F 8.059078 4.896105
G 11.741787 8.370589
H 9.679419 6.158318
I 11.233472 5.802286
J 9.414632 5.690288

Agregamos el valor minimo y maximo tambien

summary_df <- my_df %>%
               group_by(conditions) %>%
               summarise(means = mean(scores),
                         sds = sd(scores),
                         min = min(scores),
                         max = max(scores))

knitr::kable(summary_df)
conditions means sds min max
A 10.055492 3.423140 3.706718 14.40202
B 11.088220 5.942027 1.643495 21.27364
C 9.705101 3.897752 1.000092 14.26613
D 8.580683 5.002534 -1.297064 18.31940
E 9.801974 3.702861 6.275805 19.17842
F 8.059078 4.896105 -1.640260 13.18752
G 11.741787 8.370589 -2.597625 24.97134
H 9.679419 6.158318 2.439902 20.79927
I 11.233472 5.802286 3.728670 19.67746
J 9.414632 5.690288 -2.790534 17.11030

2.2.5 Descripción de gapminder

Instalare el codigo de gapminder y utilizare la libreria que tiene en R

library(gapminder)
## Warning: package 'gapminder' was built under R version 4.4.3
gapminder_df <- gapminder

2.2.5.1 ¿Cuáles son algunos indicadores de esperanza de vida por continente?

Copiare el codigo de la ultima parte de los descriptivos dplyr y le cambiare los nombres.

summary_df <- gapminder_df %>%
               group_by(continent) %>%
               summarise(means = mean(lifeExp),
                         sds = sd(lifeExp),
                         min = min(lifeExp),
                         max = max(lifeExp))

knitr::kable(summary_df)
continent means sds min max
Africa 48.86533 9.150210 23.599 76.442
Americas 64.65874 9.345088 37.579 80.653
Asia 60.06490 11.864532 28.801 82.603
Europe 71.90369 5.433178 43.585 81.757
Oceania 74.32621 3.795611 69.120 81.235

2.2.6 Ejercicio de generalización

Utilice una funcion que me permita determinar la media, la desviacion estandar, la esperanza de vida minima y maxima del conjunto de datop de gapminder, para eso, utilice summarise,

gapminder %>% 
  summarise(
    media = mean(lifeExp),
    desviacion = sd(lifeExp),
    minimo = min(lifeExp),
    maximo = max(lifeExp)
  )
## # A tibble: 1 × 4
##   media desviacion minimo maximo
##   <dbl>      <dbl>  <dbl>  <dbl>
## 1  59.5       12.9   23.6   82.6

Saque la media, la desviacion estandar, la esperanza de vida minima y maxima de todos los continentes en el año 2007. Para esto use “filter”, “group_by” y “summarise”. ademas de cada funcion correspondiente a la operacion

gapminder %>% 
  filter(year == 2007) %>% 
  group_by(continent) %>% 
  summarise(
    media = mean(lifeExp),
    desviacion = sd(lifeExp),
    minimo = min(lifeExp),
    maximo = max(lifeExp)
  )
## # A tibble: 5 × 5
##   continent media desviacion minimo maximo
##   <fct>     <dbl>      <dbl>  <dbl>  <dbl>
## 1 Africa     54.8      9.63    39.6   76.4
## 2 Americas   73.6      4.44    60.9   80.7
## 3 Asia       70.7      7.96    43.8   82.6
## 4 Europe     77.6      2.98    71.8   81.8
## 5 Oceania    80.7      0.729   80.2   81.2

2.2.7 Tarea de escritura

  1. La moda es el valor (o valores) mas frecuentes en un conjunto de datos.

  2. Para que un conjunto de datos contenga dos modas, es necesario que dos valores diferentes dentro del conjunto de datos deben repetirse con la misma mayor frecuencia, ademas que ningun otro dato debe ser mayor que esos dos datos.

  3. La mediana es el valor central/del medio de un conjunto de datos organizado de menor a mayor.

  4. La media es el valor promedio de un conjunto de datos, se calcula sumando todos los valores de un conjunto y dividiendo el resultado entre la cantidas de datos.

  5. Distancia entre el dato mas grande y el mas pequeño, por lo que mide la dispersion de los datos.

  6. Los puntajes de diferencia representan la distancia o desviacion se cada dato respecto a la media, es decir, cuanto se alejan de la media. Si la media de puntuacion del dato es positiva, eso indica que el dato esta por encima de la media, mientras que si es negativo, esta por debajo de la media y si su valor coincide con la media, es cero.

  7. Se elevan al cuadrado para evitar la cancelacion de signos al momento de sunae los datos, que se da gracias a que unos valores estan por encima de la media y otros por debajo, siendo positivos o negativos. Con esto, tambien se busca convertir todos los valores en positivo y medir la distancia real respecto a la media sin importar la direccion y ademas, darle un mayor peso a las desviaciones grandes, para que se note cuanto pueden afectar a una muestra los valores extremos.

  8. El que mayor varianza tiene es el conjunto de datos con desviacion estandar de 10, debido a que la varianza es la desviacion estandar al cuadrado y demuestra que tiene mas dispersion en los datos, por lo que un mayor numero de valores estan alejados de la media.