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
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.
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
La moda es el valor (o valores) mas frecuentes en un conjunto de datos.
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.
La mediana es el valor central/del medio de un conjunto de datos organizado de menor a mayor.
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.
Distancia entre el dato mas grande y el mas pequeño, por lo que mide la dispersion de los datos.
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.
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.
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.