Primeros Pasos en R

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 13

Primeros pasos en R

Datos sueltos

Se quiere analizar la duración de llamadas que llegan a una central telefónica, para ello se toma una muestra
de 10 llamadas, cuyas duraciones (en minutos) son las siguientes:

6,33 3,52 3,29 2,11 6,52 1,6 2,17 2,88 2,05 1,91

Con c(. . . ) colocamos los datos en un vector. Guardamos los datos en el objeto datos_sueltos

datos_sueltos <- c(6.33, 3.52, 3.29, 2.11, 6.52, 1.6, 2.17, 2.88, 2.05, 1.91) #Cargamos los datos

Funciones básicas de estadística

promedio <- mean(datos_sueltos) #promedio o media aritmética

Guardamos el resultado en un objeto que denominamos “promedio”

Para visualizarlo utilizamos la función print o lo escribimos en consola directamente

print(promedio)

## [1] 3.238
promedio

## [1] 3.238

Continuamos con otras medidas descriptivas

minimo <- min(datos_sueltos)


maximo <- max(datos_sueltos)

varianza <- var(datos_sueltos)

desvio <- sd(datos_sueltos)

mediana <- median(datos_sueltos)

cuartil1 <- quantile(datos_sueltos, probs = 0.25)


cuartil3 <- quantile(datos_sueltos, probs = 0.75)

1
resumen <- summary(datos_sueltos) #con este comando obtemos algunas
#medidas descriptivas directamente

coeficiente_variacion <- desvio / promedio

percentil10 <- quantile(datos_sueltos, probs = 0.1)


percentil90 <- quantile(datos_sueltos, probs = 0.9)

Base estudiantes
Descagar la base de datos base_estudiantes.csv desde nuestro curso en el campus.

Primero configuramos el espacio de trabajo


Se utiliza para establecer la dirección en donde se encuentran los archivos con los que vamos a trabajar,
scripts de R, base de datos, etc. Como así también el lugar cualquier archivo que guardemos desde R. No es
obligatorio configurarlo pero es muy práctico para trabajar.

setwd("/media/diego/Windows/Users/Diego/Documents/UTN/2021/R/Practica Estadistica Descriptiva")

Nota: dentro de la función setwd se encuentra la ruta de mi carpeta, ustedes tienen que colocar la ruta en
donde colocaron la base de datos base_estudiantes y el archivo Primeros pasos en R (practica).R

Importamos la base de datos de la siguiente manera:

base_estudiantes <- read.csv("Base_estudiantes_2021.csv")

Otra manera es descargar base_estudiantes.xlsx (formato Excel) e importarla. Para ello tenemos que
instalar y cargar el paquete que contiene la función que vamos a utilizar:

install.packages(“readxl”)

library(readxl) #de esta manera cargamos el paquete en el espacio de trabajo para poder utilizarlo.

Una vez cargado el paquete importamos los datos

base_estudiantes <- read_excel("Base_estudiantes_2021.xlsx")

A las variables cualitativas de la base de datos es necesario pasarlas al tipo factor, lo hacemos de la siguiente
manera:

base_estudiantes$carrera <- as.factor(base_estudiantes$carrera)


base_estudiantes$zona <- as.factor(base_estudiantes$zona)
base_estudiantes$genero <- as.factor(base_estudiantes$genero)

2
Veamos los primeros 10 datos de la base

head(base_estudiantes, 10)

## respuesta carrera mat_aprob zona transporte genero edad


## 1 1 Ferroviaria 6 Zona Oeste 2 Masculino 24
## 2 2 Industrial 11 Zona Oeste 0 Masculino 31
## 3 3 Aeronautica 17 Capital Federal 2 Masculino 21
## 4 4 Ferroviaria 6 Zona Oeste 2 Masculino 20
## 5 5 Electronica 4 Zona Oeste 1 Masculino 24
## 6 6 Electronica 1 Zona Oeste 2 Masculino 21
## 7 7 Electronica 5 Zona Oeste 1 Masculino 20
## 8 8 Mecanica 21 Zona Oeste 1 Masculino 23
## 9 9 Electronica 6 Zona Oeste 1 Masculino 22
## 10 10 Mecanica 8 Zona Oeste 0 Masculino 28
## altura
## 1 1.76
## 2 1.86
## 3 1.85
## 4 1.73
## 5 1.75
## 6 1.75
## 7 1.76
## 8 1.65
## 9 1.63
## 10 1.76

Podemos ver los nombres de las columnas de la siguiente manera:

colnames(base_estudiantes)

## [1] "respuesta" "carrera" "mat_aprob" "zona" "transporte"


## [6] "genero" "edad" "altura"

Guardamos en el objeto altura los datos de la variable “altura” de la base. Para leer datos de una tabla
utilizamos corchetes, [,], en donde del lado derecho de la coma indicamos el o los números de filas, y del lado
izquierdo el número o nombre de la columna (se puede extraer más de una columna)

altura <- base_estudiantes[,"altura"] #en este caso indicamos el nombre

Otras maneras son las siguientes:

altura <- base_estudiantes[, 8] #en este caso indicamos el número de columna

Con el signo $ no es necesario utilizar los corchetes:

altura <- base_estudiantes$altura

Para ordenar los datos lo hacemos con la siguiente fución:

3
alturas_ordenadas <- sort(altura)
alturas_ordenadas

## [1] 1.40 1.55 1.55 1.55 1.56 1.57 1.58 1.59 1.60 1.60 1.63 1.64 1.64 1.64 1.65
## [16] 1.65 1.65 1.65 1.65 1.65 1.65 1.65 1.66 1.67 1.68 1.69 1.69 1.69 1.70 1.70
## [31] 1.70 1.70 1.70 1.70 1.70 1.70 1.70 1.70 1.70 1.70 1.71 1.71 1.71 1.71 1.71
## [46] 1.72 1.72 1.72 1.72 1.72 1.72 1.72 1.72 1.73 1.73 1.73 1.73 1.73 1.73 1.74
## [61] 1.75 1.75 1.75 1.75 1.75 1.75 1.75 1.75 1.75 1.75 1.75 1.75 1.75 1.75 1.76
## [76] 1.76 1.76 1.76 1.76 1.76 1.76 1.76 1.77 1.77 1.77 1.77 1.77 1.77 1.78 1.78
## [91] 1.78 1.78 1.79 1.79 1.79 1.79 1.80 1.80 1.80 1.80 1.80 1.80 1.80 1.80 1.80
## [106] 1.80 1.80 1.80 1.80 1.80 1.80 1.80 1.80 1.80 1.80 1.80 1.82 1.82 1.82 1.83
## [121] 1.83 1.83 1.83 1.85 1.85 1.85 1.85 1.86 1.86 1.86 1.90 1.90 1.90 1.90

Por lo general no se guarda la variable altura en un objeto, se utiliza directamente desde la base.

promedio_altura <- mean(base_estudiantes$altura) #guardamos el promedio de las alturas


promedio_transportes <- mean(base_estudiantes$transporte) #guardamos el promedio de la cant. de transp.

desvio_altura <- sd(base_estudiantes$altura)


desvio_transportes <- sd(base_estudiantes$transporte)

Tablas de frecuencias puntuales


Este tipo de tabla lo podemos utilizar para variable cualitativas o variables discretas que no tengan un amplio
dominio.

tabla_zona <- table(base_estudiantes$zona) #tabla de frecuencias.


tabla_transporte <- table(base_estudiantes$transporte)

Para visualizarlas mejor la pasamos al formato data.frame

tabla_zona <- as.data.frame(tabla_zona)


tabla_transporte <- as.data.frame(tabla_transporte)

tabla_transporte #Visualizamos la tabla transporte

## Var1 Freq
## 1 0 30
## 2 1 40
## 3 2 58
## 4 3 8

Le podemos agregar una columna que con las frecuencias acumuladas:

tabla_transporte$Freq_acum <- cumsum(tabla_transporte$Freq)

tabla_transporte #visualizamos la tabla

## Var1 Freq Freq_acum


## 1 0 30 30
## 2 1 40 70

4
## 3 2 58 128
## 4 3 8 136

Le agregamos otra columna con las frecuencias porcentuales:

tabla_transporte$Freq_porcentual <- round(tabla_transporte$Freq / sum(tabla_transporte$Freq), 2)

tabla_transporte #visualizamos la tabla

## Var1 Freq Freq_acum Freq_porcentual


## 1 0 30 30 0.22
## 2 1 40 70 0.29
## 3 2 58 128 0.43
## 4 3 8 136 0.06

Y por último agregamos una columna con las frecuencias porcentuales acumuladas

tabla_transporte$Freq_acum_porcen <- round(tabla_transporte$Freq_acum / sum(tabla_transporte$Freq), 2)

tabla_transporte #visualizamos la tabla

## Var1 Freq Freq_acum Freq_porcentual Freq_acum_porcen


## 1 0 30 30 0.22 0.22
## 2 1 40 70 0.29 0.51
## 3 2 58 128 0.43 0.94
## 4 3 8 136 0.06 1.00

Si deseamos podemos renombrar las columnas de la siguiente manera:


colnames(tabla_transporte) <- c("cant.transp", "f", "F", "f%", "F%")
tabla_transporte #visualizamos la tabla

## cant.transp f F f% F%
## 1 0 30 30 0.22 0.22
## 2 1 40 70 0.29 0.51
## 3 2 58 128 0.43 0.94
## 4 3 8 136 0.06 1.00

Tablas de frecuencias por intervalos


Para construir este tipo de tablas necesitamos utilizar la función fdt que se encuentra en el paquete fdth.
Por lo tanto debemos instalar el paquete y cargarlo.

install.packages(“fdth”) #instalamos el paquete


library(fdth) #cargamos el paquete en el espacio de trabajo

##
## Attaching package: 'fdth'
## The following objects are masked from 'package:stats':
##
## sd, var
tabla_frec_edad <- fdt(base_estudiantes$altura, start = 1.4, end = 2, h = 0.05)

5
Visualizamos la tabla:

tabla_frec_edad

## Class limits f rf rf(%) cf cf(%)


## [1.4,1.45) 1 0.01 0.75 1 0.75
## [1.45,1.5) 0 0.00 0.00 1 0.75
## [1.5,1.55) 0 0.00 0.00 1 0.75
## [1.55,1.6) 7 0.05 5.22 8 5.97
## [1.6,1.65) 6 0.04 4.48 14 10.45
## [1.65,1.7) 14 0.10 10.45 28 20.90
## [1.7,1.75) 32 0.24 23.88 60 44.78
## [1.75,1.8) 36 0.27 26.87 96 71.64
## [1.8,1.85) 27 0.20 20.15 123 91.79
## [1.85,1.9) 7 0.05 5.22 130 97.01
## [1.9,1.95) 4 0.03 2.99 134 100.00
## [1.95,2) 0 0.00 0.00 134 100.00

Gráficos

Construimos gráficos de barras para la variables carrera y zona

plot(base_estudiantes$carrera)
40
30
20
10
0

Aeronautica Electronica Ferroviaria Industrial Mecanica

6
plot(base_estudiantes$zona)

100
80
60
40
20
0

Capital Federal Zona Norte Zona Oeste Zona Sur

Con las función stem podemos hacer un gráfico de tallo y hoja.

stem(base_estudiantes$altura) #en este caso graficamos la variable altura

##
## The decimal point is 1 digit(s) to the left of the |
##
## 14 | 0
## 14 |
## 15 |
## 15 | 5556789
## 16 | 003444
## 16 | 55555555678999
## 17 | 00000000000011111222222223333334
## 17 | 555555555555556666666677777788889999
## 18 | 000000000000000000002223333
## 18 | 5555666
## 19 | 0000

El gráfico que corresponde para visualizar la distribución de un conjunto de datos que provienen de una
variable cuantitativa continua es el histograma, y lo hacemos de la siguiente manera:

7
hist(base_estudiantes$edad)

Histogram of base_estudiantes$edad
50
40
Frequency

30
20
10
0

20 30 40 50 60 70

base_estudiantes$edad

Podemos mostrarlo con otro color y además le agregamos un título.

hist(base_estudiantes$altura, breaks = 10, col = "red",


main ="Histograma alturas", xlab = "altura")

8
Histograma alturas
40
30
Frequency

20
10
0

1.4 1.5 1.6 1.7 1.8 1.9

altura

Otro gráfico importante para visualizar el comportamiento de los datos es el boxplot

boxplot(base_estudiantes$edad, main = "Boxplot edad")

9
Boxplot edad
70
60
50
40
30
20

boxplot(base_estudiantes$altura, main = "Boxplot altura")

10
Boxplot altura
1.9
1.8
1.7
1.6
1.5
1.4

Segmentar la base de datos

Ejemplo 1:

Dentro del grupo mujeres, se busca determinar que porcentaje utiliza dos transportes públicos para llegar
hasta la universidad.

Lo primero que tenemos que hacer es separar la base y quedarnos solamente con el grupo de mujeres, esto lo
podemos hacer utilizando la función subset de la siguiente manera:

mujeres <- subset(base_estudiantes, subset = genero == "Femenino")

Dentro de la fución, en el parámetro subset escribimos la condición para segmentar la base de datos.

Visualizamos los primeros diez valores de la base resultante utilizando la función head

head(mujeres)

## respuesta carrera mat_aprob zona transporte genero edad altura


## 19 19 Industrial 14 Zona Oeste 1 Femenino 28 1.70
## 24 24 Industrial 7 Zona Oeste 2 Femenino 31 1.65
## 29 29 Industrial 7 Zona Norte 2 Femenino 24 1.55
## 41 41 Aeronautica 8 Zona Oeste 2 Femenino 30 1.73
## 51 51 Electronica 3 Zona Norte 2 Femenino 19 1.65

11
## 54 54 Electronica 6 Zona Oeste 1 Femenino 21 1.59

Una vez que obtuvimos la base correspondiente hacemos una tabla de frecuencia porcentuales con la función
prop.table, pero para ello primero es necesario realizar una tabla de frecuencias.

mujeres_transp <- table(mujeres$transporte)


mujeres_propTransp <- prop.table(mujeres_transp)
mujeres_propTransp

##
## 0 1 2 3
## 0.07142857 0.35714286 0.42857143 0.14285714

Como resultado obtuvimos que el 42,85% utiliza dos transportes públicos.

Ejemplo 2:

En este caso nos interesa estudiar que cantidad de estudiantes menores de 25 años tiene por lo menos 16
materias aprobadas.

Primero segmentamos la base de datos

sub25 <- subset(base_estudiantes, subset = edad < 25)

Luego realizamos la tabla y la pasamos al formato data.frame para tener una mejor visualización.

tabla_mat_aprob <- table(sub25$mat_aprob)


tabla_mat_aprob <- as.data.frame(tabla_mat_aprob)
tabla_mat_aprob$acum <- cumsum(tabla_mat_aprob$Freq) #agregamos la columna de frecuencias acumuladas
colnames(tabla_mat_aprob) <- c("var", "f", "F") #cambiamos los nombres de las columnas
tabla_mat_aprob

## var f F
## 1 1 2 2
## 2 2 1 3
## 3 3 3 6
## 4 4 4 10
## 5 5 9 19
## 6 6 16 35
## 7 7 10 45
## 8 8 2 47
## 9 9 7 54
## 10 10 7 61
## 11 11 5 66
## 12 12 3 69
## 13 13 2 71
## 14 14 2 73
## 15 15 3 76
## 16 16 1 77
## 17 17 2 79
## 18 18 1 80
## 19 20 1 81
## 20 21 2 83
## 21 22 1 84

12
## 22 23 1 85
## 23 39 1 86

• Hay un total de 86 estudiantes menores a 25 años.


• De este total 61 estudiantes tiene a la sumo 10 materias aprobadas.

13

También podría gustarte