forked from RLadiesCuerna/meetup_mayo_2022
-
Notifications
You must be signed in to change notification settings - Fork 0
/
3_Datos_cuantitativos_medidas_de_resumen.R
235 lines (114 loc) · 4.84 KB
/
3_Datos_cuantitativos_medidas_de_resumen.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
### CARGUEMOS LOS PAQUETES QUE USAREMOS
library(psych)
library(pastecs)
library(summarytools)
### A. EL CONJUNTO DE DATOS IRIS
## El data frame iris (un dataset de R) lista varias medidas
## para muestras de flores de tres especies de Iris:
# Sepal.Length: Largo del sepalo
# Sepal.Width: Ancho del sepalo
# Petal.Length: Largo del petalo
# Petal.Width: Ancho del petalo
# Species: setosa, versicolor o virginica
# _
# _-=-_ :: _-=-_
# Petal (__/ ¨"\ V /"¨ \__)
# Width | .:II:>-\|/-<:II:.
# ----- _/|\_ |
# Petal | ´'` | | Sepal
# Length `._.´ | Length
# |
# ------ Sepal
# | Width
#
## ¿Como se ven los datos de Iris y que dimensiones tienen?
# Explora los datos con tus opciones favoritas
# A.1 Solo las dimensiones
dim(iris)
# A.2 Solo las clases de variables (funcion class una vez por columna)
sapply(iris,class)
# A.3 Dimensiones y tipos de variables
str(iris)
# A.4 O veamos directamente la tabla
View(iris)
### B. FUNCIONES BASICAS PARA MEDIDAS DE RESUMEN
# B.1 Promedio o media aritmetica
#La suma de todos los valores dividida entre el total de los valores.
# ¿Qué tan largos son los Sepalos en promedio?
mean(iris$Sepal.Length)
# B.2 Rango
# Minimo y maximo de los valores
# ¿Cuales son los valores minimo y maximo para el largo de los Sepalos?
min(iris$Sepal.Length)
max(iris$Sepal.Length)
range(iris$Sepal.Length)
# B.3 Primer, segundo y tercer cuartiles
# Valores por debajo de los cuales se encuentran el 25%, 50% o 75% de los datos
# B.3.a ¿Cuales son el primer y tercer cuartiles para Sepal.Length?
quantile(iris$Sepal.Length)
quantile(iris$Sepal.Length, 0.25)
# B.3.b ¿Cual es el valor del segundo cuartil (la mediana)?
quantile(iris$Sepal.Length, 0.5)
median(iris$Sepal.Length)
# B.3.c Rango intercuartil
## Mide la distancia entre el primer y tercer cuartil
IQR(iris$Sepal.Length)
## B.4 Desviacion estandar
# Cuantifica la variacion o dispersion que tienen los datos con respecto al promedio
sd(iris$Sepal.Length)
## B.5 Coeficiente de variacion
# Mide que tan grande es la desviacion estandar con respecto al promedio
# Usar con precaucion
sd(iris$Sepal.Length)/mean(iris$Sepal.Length)
# B.6 Podemos aplicar estas estadisticas a todas las columnas a la vez
sapply(iris[1:4],mean) # Solo para las columnas 1 a 4
# B.7 Podemos calcular estas estadisticas especie por especie
tapply(iris$Sepal.Length, iris$Species, mean)
tapply(iris$Sepal.Length, iris$Species, quantile)
### C. FUNCIONES PARA OBTENER VARIAS MEDIDAS DE RESUMEN A LA VEZ
# C.1 Cuartiles, promedio y rango con `summary`
summary(iris)
# C.2 Medidas de tendencia central y medidas de dispersion con `stat.desc`
# del paquete `pastecs`
stat.desc(iris)
# C.3 Medidas de tendencia central y de dispersion + representacion
# grafica con `summarytools`
view(dfSummary(iris))
# C.4 Medidas de tendencia central y de dispersion con
# `describe` y `describeBy` de psych
#Para todo el data frame
describe(iris)
#Especie por especie
describeBy(iris,group=iris$Species)
######### EJERCICIOS Y TRUCOS ADICIONALES ###################################
#___Medir un cuantil a la vez para cada sub-grupo del data frame___#
# (ej. solo el primer cuartil):
tapply(iris$Sepal.Length, iris$Species, quantile, c(0.25))
#___`aggregate` y `by` para obtener estadisticas por sub-grupo___#
# Ademas de tapply podemos utilizar a aggregate y a by para obtener
# Estadisticas por sub-grupos del data frame.
aggregate( Sepal.Length ~ Species, iris, mean)
by(iris$Sepal.Length, iris$Species, mean)
#___Calculo de la moda___#
# En R no hay una funcion incluida para calular la moda (valor mas frecuente
# en el conjunto de datos) pero podemos hacerlo asi:
# Moda para Sepal.Length
# Obtenemos una tabla de cuantas veces aparece cada medida de Sepal.Length
x<-table(iris$Sepal.Length)
# Ordenamos la tabla del valor mas frecuente al valor menos frecuente
sorted_x<-sort(x,decreasing=TRUE)
# Aqui esta la primera columna de la tabla ya ordenada
sorted_x[1]
# La moda es 5 y aparecio 10 veces. La moda aparece como nombre de la primera columna.
# Para obtener el nombre de la primera columna como valor numerico
as.numeric(names(sorted_x)[1])
# Podemos hacer una funcion moda que reciba un vector y haga todos estos pasos
moda <- function(v){ #La funcion moda recibe un vector v (ej.Sepal.Length)
x<-table(v) #Obtiene las frecuencia de aparicion de cada valor de Sepal.Length como tabla
sorted_x<-sort(x,decreasing=TRUE) #Ordena la tabla del valor mas frecuente al menos frecuente
moda<-as.numeric(names(sorted_x)[1]) #Obtiene el nombre del valor mas frecuente y lo hace numerico
return(moda) #Regresa el valor calculado
}
#Y ahora podemos usar la funcion
moda(iris$Sepal.Length)
sapply(iris[1:4],moda)