ESTADISTICA: Ciencia numérica que se encarga de:
DATOS para inferir y/o predecir cosas de la población a partir de la muestra. Necesita datos y variables
La estadística se divide en:
Puedes pedir ayuda para observar para que sirve cada comando, por ejemplo:
help("plot")
?getwd
Puedes realizar operaciones aritméticas sencillas:
2+4
## [1] 6
5*89
## [1] 445
8/2
## [1] 4
sqrt(64)
## [1] 8
Hay varios tipos de objetos en R:
Veamos como se forma cada uno:
matriz<-matrix(2,2)
matriz
## [,1]
## [1,] 2
## [2,] 2
gatos<-data.frame(capa = c("calico", "negro", "tabby"),
peso = c(2.1, 5.0, 3.2))
gatos
## capa peso
## 1 calico 2.1
## 2 negro 5.0
## 3 tabby 3.2
vector<-c(2010,2011,2012,2013)
vector
## [1] 2010 2011 2012 2013
lista<-list(1:19)
lista
## [[1]]
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
c( ) sirve para concatenar varios datos dentro de los objetos como en lista.
Puedes ver de que clase es cada objeto, por ejemplo:
class(matriz)
## [1] "matrix"
class(gatos)
## [1] "data.frame"
class(vector)
## [1] "numeric"
class(lista)
## [1] "list"
Podemos convertir cierto objeto en otro con el comando as:
datos<-c(1,2,2018)
class(datos)
## [1] "numeric"
datos<-c(1,2,2018,"mujer")
class(datos)
## [1] "character"
as.data.frame(datos)->datos2
datos2
## datos
## 1 1
## 2 2
## 3 2018
## 4 mujer
class(datos2)
## [1] "data.frame"
Para llamar el archivo y guardarlo en R usamos: datos<-read.csv(file.choose())
Abrimos la base de datos_alumnos para ejemplos
datos<-read.csv("~/Desktop/datos_alumnos.csv")
datos
## promedio estatura peso edad sexo estado_civil hermanos procedencia
## 1 8.2 1.70 67 20 h s 3 oriente
## 2 8.1 1.60 55 20 m s 3 oriente
## 3 9.5 1.76 72 19 m s 2 oriente
## 4 8.8 1.85 78 19 h s 1 sur
## 5 8.5 1.73 62 19 m n 2 norte
## 6 9.0 1.67 56 19 m n 3 sur
## 7 7.6 1.58 49 20 m n 2 oriente
## 8 9.0 1.74 57 19 h s 2 norte
## 9 9.2 1.54 50 19 m s 2 norte
## 10 8.0 1.74 75 19 h s 4 norte
## 11 9.6 1.72 72 20 h s 3 sur
## 12 8.0 1.59 49 19 m s 2 sur
## 13 9.3 1.61 52 19 m s 2 norte
## 14 8.5 1.57 57 20 m s 1 oriente
## 15 8.1 1.58 57 20 m n 1 oriente
## 16 9.0 1.55 48 19 m s 3 sur
## 17 7.4 1.74 65 28 h n 3 sur
## 18 8.0 1.56 58 20 m S 2 norte
## 19 9.1 1.65 67 19 m S 2 sur
## 20 9.6 1.65 60 19 m S 1 norte
## becado sueno biologo dioptrias sangre
## 1 no 8 lab 2.0 O-
## 2 no 6 lab 1.0 A+
## 3 si 5 lab 4.0 A+
## 4 no 6 campo 3.0 A+
## 5 si 5 lab 0.7 O+
## 6 no 5 campo 0.7 O-
## 7 si 7 campo 0.5 O+
## 8 si 6 campo 2.0 O+
## 9 si 7 lab 2.0 B+
## 10 si 8 campo 1.6 AB+
## 11 no 5 campo 4.2 O+
## 12 no 6 lab 4.0 O+
## 13 no 9 lab 3.0 O+
## 14 no 5 campo 2.0 O+
## 15 no 7 lab 0.5 O-
## 16 si 5 lab 2.0 AB-
## 17 no 7 lab 0.0 O+
## 18 no 6 campo 0.0 O+
## 19 no 6 campo 0.0 A+
## 20 no 7 lab 0.0 O+
Para seleccionar partes de la base de datos [filas, columnas] (poner - para eliminarlas)
datos[,1]
## [1] 8.2 8.1 9.5 8.8 8.5 9.0 7.6 9.0 9.2 8.0 9.6 8.0 9.3 8.5 8.1 9.0 7.4
## [18] 8.0 9.1 9.6
datos[1,]
## promedio estatura peso edad sexo estado_civil hermanos procedencia
## 1 8.2 1.7 67 20 h s 3 oriente
## becado sueno biologo dioptrias sangre
## 1 no 8 lab 2 O-
Para ver las clases de cada columna del data frame (en factor asigna un valor a cada posibilidad)
str(datos)
## 'data.frame': 20 obs. of 13 variables:
## $ promedio : num 8.2 8.1 9.5 8.8 8.5 9 7.6 9 9.2 8 ...
## $ estatura : num 1.7 1.6 1.76 1.85 1.73 1.67 1.58 1.74 1.54 1.74 ...
## $ peso : int 67 55 72 78 62 56 49 57 50 75 ...
## $ edad : int 20 20 19 19 19 19 20 19 19 19 ...
## $ sexo : Factor w/ 2 levels "h","m": 1 2 2 1 2 2 2 1 2 1 ...
## $ estado_civil: Factor w/ 3 levels "n","s","S": 2 2 2 2 1 1 1 2 2 2 ...
## $ hermanos : int 3 3 2 1 2 3 2 2 2 4 ...
## $ procedencia : Factor w/ 3 levels "norte","oriente",..: 2 2 2 3 1 3 2 1 1 1 ...
## $ becado : Factor w/ 2 levels "no","si": 1 1 2 1 2 1 2 2 2 2 ...
## $ sueno : int 8 6 5 6 5 5 7 6 7 8 ...
## $ biologo : Factor w/ 2 levels "campo","lab": 2 2 2 1 2 1 1 1 2 1 ...
## $ dioptrias : num 2 1 4 3 0.7 0.7 0.5 2 2 1.6 ...
## $ sangre : Factor w/ 6 levels "A+","AB-","AB+",..: 5 1 1 1 6 5 6 6 4 3 ...
Para corregir uno de los datos: Primero, observamos en donde esta el dato a cambiar y luego lo cambias:
datos[c(18:20),6]<-"s"
Otra forma es corregirlo manualmente (no tan recomendable): fix(datos)
Para ver los datos de forma resumida
summary(datos$promedio)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 7.400 8.075 8.650 8.625 9.125 9.600
Para mostrar la información de los datos de varias columnas usamos apply [apply(base de datos, fila o columna,función)]
apply(datos, 2, summary)
## promedio estatura peso edad sexo
## Length "20" "20" "20" "20" "20"
## Class "character" "character" "character" "character" "character"
## Mode "character" "character" "character" "character" "character"
## estado_civil hermanos procedencia becado sueno
## Length "20" "20" "20" "20" "20"
## Class "character" "character" "character" "character" "character"
## Mode "character" "character" "character" "character" "character"
## biologo dioptrias sangre
## Length "20" "20" "20"
## Class "character" "character" "character"
## Mode "character" "character" "character"
Para filtrar columnas numericas, con varias funciones
apply(datos[,c(1,2,4,7,10,12)],2, summary)
## promedio estatura edad hermanos sueno dioptrias
## Min. 7.400 1.5400 19.0 1.0 5.0 0.00
## 1st Qu. 8.075 1.5800 19.0 2.0 5.0 0.50
## Median 8.650 1.6500 19.0 2.0 6.0 1.80
## Mean 8.625 1.6565 19.8 2.2 6.3 1.66
## 3rd Qu. 9.125 1.7325 20.0 3.0 7.0 2.25
## Max. 9.600 1.8500 28.0 4.0 9.0 4.20
apply(datos[,c(1,2,4,7,10,12)],2, var)
## promedio estatura edad hermanos sueno dioptrias
## 0.453552632 0.007571316 3.957894737 0.694736842 1.378947368 1.977263158
apply(datos[,c(1,2,4,7,10,12)],2, median)
## promedio estatura edad hermanos sueno dioptrias
## 8.65 1.65 19.00 2.00 6.00 1.80
Para filtrar los datos de varias filas con una característica específica
Datos3<-datos[datos$promedio==9.6,]
Datos3
## promedio estatura peso edad sexo estado_civil hermanos procedencia
## 11 9.6 1.72 72 20 h s 3 sur
## 20 9.6 1.65 60 19 m s 1 norte
## becado sueno biologo dioptrias sangre
## 11 no 5 campo 4.2 O+
## 20 no 7 lab 0.0 O+
VARIABLE: No es constante, necesita cambiar. Se dividen en tres tipos esenciales:
La estadística prefiere variables numéricas contínuas para evitar la pérdida de información. (Cualquier variable puede “transformarse” a las otras)
ESCALA DE LOS DATOS:
PRECISIÓN: Cercanía entre un valor repetido
EXACTITUD: Cercanía con el valor real
En la estadístia se busca precisión
POBLACIÓN:Todas las posibles observaciones de la muestra (la población biológica comparte tiempo y espacio)
MUESTRA: Parte representativa de una población (Unidades que tomo)
UNIDAD MUESTRAL: Donde se va a medir la variable, existe(subconjunto mínimo de la muestra)
VARIABLE: Lo que se va a medir
Existen diversas mediadas en estadística:
MEDIDAS DE TENDENCIA CENTRAL: Te dice por donde anda la mayoría de los datos
El promedio o media te dice donde está la mayoría de los datos. También hay media geométrica, harmónica y ponderada. Para obtener la media de la columna promedio
mean(datos$promedio)
## [1] 8.625
La media tiene el problema de que valores muy grandes lo distorsionan, entre más datos hayn se reduce ese problema.
La mediana te dice el punto intermedio de los datos ordenados. Para obtener mediana de la columna promedio
median(datos$promedio)
## [1] 8.65
La moda es el valor más frecuente. No hay función para la moda, pero usaremos la opción table para ver la frecuencia de cada dato. Puede haber mas de una moda.
table(datos$promedio)
##
## 7.4 7.6 8 8.1 8.2 8.5 8.8 9 9.1 9.2 9.3 9.5 9.6
## 1 1 3 2 1 2 1 3 1 1 1 1 2
MEDIDAS DE DISPERSIÓN Te dice cuanto varían los datos
La varianza (S^2) es el promedio de las diferencias de cada dato a la media. LA varianza puede ser muy grande por estar al cuadrado. Para obtener la varianza de la columna promedio.
var(datos$promedio)
## [1] 0.4535526
(sum(datos$promedio-mean(datos$promedio))^2)/(length(datos)-1)
## [1] 2.629536e-31
Para remover las celdas con N/A, anadir al argumento funcion(argumento, na.rm=TRUE)
La desviación estándar (S) es la raíz cuadrada de la varianza. Para obtener la desviación estándar de la columna promedio
sd(datos$promedio)
## [1] 0.6734632
El coeficiente de variación sirve para comparar bases de datos ya que no tiene unidades. Para obtener el coeficiente de variación de la columna promedio
sd(datos$promedio)/mean(datos$promedio)*100
## [1] 7.808269
(sd(datos$promedio)/mean(datos$promedio))*100
## [1] 7.808269
Los cuantiles dividen los datos ordenados en partes iguales (cuartos, sextos, etc). Para calcular los cuantiles, hay que indicar el número de partes en las que se va a dividir, por default te da cuartiles
#cuartiles
quantile(datos$promedio, 1/4)
## 25%
## 8.075
#deciles
quantile(datos$promedio, 0.1)
## 10%
## 7.96
El rango de valores te da la distancia entre el valor máximo y el mínimo. Para obtener el rango de valores de la columna promedio
range(datos$promedio)
## [1] 7.4 9.6
max(datos$promedio)-min(datos$promedio)
## [1] 2.2
Para agregar una nueva columna a la base de datos, primero, creamos el vector cuenta
cuenta<-c(314325608,314229427,315124796,315162880,315196461,315256129,314299112,315055599,315056194,315172591,418002186,NA,3156495725,315046940,314313979,NA,306305962,NA,315126673,315098901)
Añadimos una columna extra al dataframe usando cbind (rbind es para agregar filas; el número de filas y columnas debe ser igual al de los datos que vamos a agregar para evitar errores)
cbind(datos, cuenta)->datos2
Imprimimos el data frame para observar que si se indexo la columna
datos2
## promedio estatura peso edad sexo estado_civil hermanos procedencia
## 1 8.2 1.70 67 20 h s 3 oriente
## 2 8.1 1.60 55 20 m s 3 oriente
## 3 9.5 1.76 72 19 m s 2 oriente
## 4 8.8 1.85 78 19 h s 1 sur
## 5 8.5 1.73 62 19 m n 2 norte
## 6 9.0 1.67 56 19 m n 3 sur
## 7 7.6 1.58 49 20 m n 2 oriente
## 8 9.0 1.74 57 19 h s 2 norte
## 9 9.2 1.54 50 19 m s 2 norte
## 10 8.0 1.74 75 19 h s 4 norte
## 11 9.6 1.72 72 20 h s 3 sur
## 12 8.0 1.59 49 19 m s 2 sur
## 13 9.3 1.61 52 19 m s 2 norte
## 14 8.5 1.57 57 20 m s 1 oriente
## 15 8.1 1.58 57 20 m n 1 oriente
## 16 9.0 1.55 48 19 m s 3 sur
## 17 7.4 1.74 65 28 h n 3 sur
## 18 8.0 1.56 58 20 m s 2 norte
## 19 9.1 1.65 67 19 m s 2 sur
## 20 9.6 1.65 60 19 m s 1 norte
## becado sueno biologo dioptrias sangre cuenta
## 1 no 8 lab 2.0 O- 314325608
## 2 no 6 lab 1.0 A+ 314229427
## 3 si 5 lab 4.0 A+ 315124796
## 4 no 6 campo 3.0 A+ 315162880
## 5 si 5 lab 0.7 O+ 315196461
## 6 no 5 campo 0.7 O- 315256129
## 7 si 7 campo 0.5 O+ 314299112
## 8 si 6 campo 2.0 O+ 315055599
## 9 si 7 lab 2.0 B+ 315056194
## 10 si 8 campo 1.6 AB+ 315172591
## 11 no 5 campo 4.2 O+ 418002186
## 12 no 6 lab 4.0 O+ NA
## 13 no 9 lab 3.0 O+ 3156495725
## 14 no 5 campo 2.0 O+ 315046940
## 15 no 7 lab 0.5 O- 314313979
## 16 si 5 lab 2.0 AB- NA
## 17 no 7 lab 0.0 O+ 306305962
## 18 no 6 campo 0.0 O+ NA
## 19 no 6 campo 0.0 A+ 315126673
## 20 no 7 lab 0.0 O+ 315098901
Estadística descriptiva: Describe información de la muestra de manera visual y con medidas de tendencia central y de dispersión.
Figura:Ilustración que nos permite observar datos, relacionando variables y presentando patrones y tendencias de una o más variables.
Ejemplo de un histograma:
datos<-read.csv("~/Desktop/datos_alumnos.csv")
hist(datos$peso, main="Peso estudiantes de biología", xlab="clases", ylab="frecuencia", col=c("purple", "violetred1", "blue", "coral","cyan", "yellow", "magenta")) #frecuencia absoluta
hist(datos$peso, freq=FALSE, main="Peso estudiantes de biología", xlab="clases", ylab="frecuencia", col=c("purple", "violetred1", "blue", "coral","cyan", "yellow", "magenta")) #frecuencia relativa
datos<-read.csv("~/Desktop/datos_alumnos.csv")
barplot(table(datos$hermanos), main="Número de hermanos por familia", xlab="hermanos", ylab="frecuencia", col=c("blue", "coral", "yellow", "magenta"))
datos<-read.csv("~/Desktop/datos_alumnos.csv")
boxplot(datos$promedio~datos$sexo, main="Promedio de estudiantes de biología por sexo", xlab="sexo", ylab="promedio", col=c("coral","yellow"))
datos<-read.csv("~/Desktop/datos_alumnos.csv")
plot(datos$dioptrias, t="p", main="Dioptrías en estudiantes con miopía", xlab="alumnos", ylab="dioptrias",col=c("blue"))
datos<-read.csv("~/Desktop/datos_alumnos.csv")
plot(datos$estatura, t="l", main="Estatura de estudiantes de biología", xlab="alumnos", ylab="estatura", col=c("magenta"))
datos<-read.csv("~/Desktop/datos_alumnos.csv")
pie(table(datos$sexo), main="Sexo de estudiantes de la clase de Bioestadística", col=c("violetred1", "blue"))
TIPOS DE ESTUDIO
Estudios descriptivos: Usan estadística descriptiva
Estudios experimentales: Usan experimentos que explican causalidad \[ y - x \] donde y es lo que mido (variable dependiente) y x es lo que voy a modificar (variable independiente).
MUESTREO
UNIDAD DE MUESTREO:Unidad mínima de observación de la que se obtendrá información de las variables útiles.
UNIVERSO:Lista exaustiva de cada individuo que compone a la población
MARCO DE MUESTREO:Información que ubica y dimensiona al universo \[ UNIVERSO = POBLACIÓN \] Se busca que el error entre el muestreo, el marco de muestreo y la población sea mínimo.
TAMAÑO DE LA MUESTRA Población muy grande con mucha variación —> muestra grande Entre más grande sea la muestra, el error es menor