-
Notifications
You must be signed in to change notification settings - Fork 3
/
01-intro.Rmd
286 lines (217 loc) · 9.1 KB
/
01-intro.Rmd
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
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
# El lenguaje R {#intro}
R [@R-base] es un lenguaje de programación orientado a objetos. Fue creado por
Ross Ihaka y Robert Gentleman en 1993 como un dialecto del software S, fue
publicado en 1996 [@ihaka1996r]. Es un software libre y de código abierto,
lo que significa que se puede usar, compartir y modificar el software libremente.
Junto con el instalador de R, se distribuyen ciertos paquetes (*packages*) los
cuales incluyen funciones para implementar algunos métodos estadísticos
clásicos y modernos. Pot esta razón, muchas personas utilizan R para realizar análisis
estadísticos. Muchos algoritmos y metodologías estadísticas están disponibles
para ser implementadas en R, pero muchas de ellas se encuentran en paquetes
específicos que no se encuentran en la instalación básica de R, por lo que para
poder utilizar estas funciones, se debe descargar el paquete.
## Generalidades del ambiente R {#SintaxisBasica}
R distingue mayúsculas y minúsculas, esto significa que `Producto` y `producto`
son dos palabras diferentes. Los comandos elementales consisten en expresiones
o asignaciones. Si se ejecuta una expresión el resultado se imprimirá en la
consola pero no se guardará dicho valor. Cuando se asigna un valor de una
expresión (mediante el comando `<-`), el resultado no se imprimirá en pantalla
pero el valor será asignado a un objeto que luego podrá reutilizarse.
Diferentes sentencias de código (comandos) pueden ser separados por `;` o por
una nueva línea dentro del script, la segunda opción es la más utilizada por los
usuarios. Un conjunto de comandos pueden estar encerrados entre llaves (`{`
y `}`). Los `#` indican comentarios en el código, todo lo que está a la
derecha de este símbolo no será ejecutado por R. Si se desean hacer comentarios
de más de una línea, cada una de ellas debe comenzar con `#`.
Si deseamos asignar en el objeto llamado `x` el valor del resultado de aplicar
la raíz cuadrada al número 10, debemos utilizar la función `<-`:
```{r, eval=TRUE}
x <- sqrt(10) #No se muestra el resultado
```
Para ver el valor de cualquier objeto, se puede especificar el nombre y ejecutar la línea, por ejemplo si deseamos ver el valor que está almacenado en `x` debemos escribir y ejecutar:
```{r}
x #Se muestra el resultado
```
```{r}
sqrt(10) #Se imprime en la consola el resultado
```
Las funciones son segmentos de código escrito para llevar a cabo una tarea
específica, en el ejemplo anterior se utilizó la función `sqrt` para calcular
la raíz cuadrada de 10. Las funciones pueden necesitar argumentos y devuelven
uno o más valores en el resultado, algunas funciones pueden no devolver ningún
resultado visible. Los argumentos de la función son los *inputs* para ejecutar
la tarea. Argumentos deben ir dentro de paréntesis luego del nombre de la función,
cada argumento se separa con `,` (`(arg1, arg2 )`). Nombres de los argumentos
pueden especificarse explícitamente o no, en el ejemplo anterior los argumentos no
se especificaron con nombre explícito. Si no se detalla el nombre del argumento,
R entenderá que están en el mismo orden que se especificaron cuando se creó la
función. En el caso de `sqrt` el primer y único argumento de la función es un
objeto numérico.
```{block, type='rmdnote'}
Notar que los nombre de la mayoría de las funciones de R derivan del inglés y
que R utiliza `.` como separador decimal.
```
## Funciones y comandos básicos
En R se puede ejecutar cualquier operación matemática. Comencemos viendo
algunas operaciones básicas:
Suma:
```{r, eval=TRUE}
5 + 2
```
Raíz cuadrada:
```{r, eval=TRUE}
sqrt(15)
```
### Tablas resumen de operadores y funciones {#tablas_resumen}
```{r funcbasic, tidy=TRUE, eval=TRUE, echo = FALSE,out.width = '80%'}
text_tab1 <- data.frame(
Operador = c(
"`x + y`",
"`x - y`",
"`x * y`",
"`x / y`",
"`x %/% y`",
"`x %% y`",
"`x ^ y`",
"`x < y`",
"`x <= y`",
"`x > y`",
"`x >= y`",
"`x == y`",
"`x != y`",
"`sqrt(x)`",
"`exp(x)`",
"`log(x)`",
"`log(x, k)`",
"`sum(x)`",
"`prod(x)`",
"`round(x, k)`"
),
Operacion = c(
"suma de x e y",
"diferencia de x e y",
"multiplicación de x e y",
"división de x por y",
"parte entera de la división de x por y",
"resto de la división de x por y",
"x elevado a y-ésima potencia",
"x menor que y",
"x menor o igual que y",
"x mayor que y",
"x mayor o igual que y",
"x igual a y",
"x no es igual a y",
"raíz cuadrada de x",
"exponencial de x",
"logaritmo natural de x",
"logaritmo base k de x",
"suma de los elementos de x",
"producto de los elementos de x",
"x redondeado a k dígitos"
)
)
knitr::kable(
text_tab1,
col.names = c("Sintaxis", "Operación"),
caption = 'Algunas funciones matemáticas en R',
longtable = TRUE,
booktabs = TRUE
)
```
### Ayuda
R incluye documentación de ayuda muy detallada. Para acceder a la ayuda de cada
función, objeto o datos de prueba se debe ejecutar el comando `help()` o `?`.
Por ejemplo `help(sqrt)`, o `?sqrt`. Otra forma de pedir la ayuda es
presionando la tecla F1 luego de seleccionar el nombre de la función en RStudio.
La sentencia `??` busca un patrón dentro de la documentación del sistema de ayuda,
es útil si no se conoce cuál función ejecuta cierto análisis. Otra herramienta
muy útil para buscar ayuda es Google o [Stack Overflow](https://stackoverflow.com/).
```{r, eval=FALSE}
help(sqrt)
??square
```
### Asignaciones
Como ya se especificó en la sección \@ref(SintaxisBasica), un comando de
asignación es `<-`, donde a la izquierda se especifica el nombre del objeto y a
la derecha el valor, ya sean resultados de un cálculo matemático o de un análisis
estadístico más complejo. Por ejemplo, si se desea asignar el valor de `5` al
objeto `radio` se debe ejecutar `radio <- 5`. Otras formas de hacer asignaciones
es mediante la utilización de `=` o `->`, este último no es muy utilizado entre
los usuarios de R.
Asignaremos al objeto `x` una secuencia numérica del 1 al 5 y luego imprimiremos
el contenido de `x` en la consola:
```{r, eval=TRUE, collapse=TRUE}
x <- c(1, 2, 3, 4, 5) #No se muestra el resultado
x #Se auto imprime el resultado
print(x) #Imprime el resultado de manera explícita
#mediante el comando print
```
Otras formas de asignar valores es utilizando `->` o `=`
```{r}
c(1, 2, 3) -> x
x
x = c(1, 2, 3, 4)
x
```
```{block, type='rmdnote'}
Al utilizar el comando de asignación con el mismo nombre de objeto (`x`),
cada vez que se utilizó ese comando, el valor que contenía previamente se
reasignó con el valor nuevo.
```
### R como herramienta estadística
En el paquete `stats` (uno de los paquetes instalados por defecto al momento de
instala R) permite entre otras cosas, obtener la densidad, función de
distribución (probabilidades), cuantiles y generar números aleatorios de las
distribuciones estadísticas más comunes. Por ejemplo, si se desea generar 40
números aleatorios de una distribución normal estándar se deberá ejecutar la
sentencia `rnorm(40)`.
Si se desea calcular medidas descriptivas básicas de un vector se puede
ejecutar `mean` para calcular la media, `sd` para calcular el desvío estándar
y `var` para la varianza. Otra función útil para obtener valores de posición
es la función `summary`.
```{r, eval=TRUE, echo=FALSE, include=FALSE}
set.seed(2022)
```
```{r, eval=TRUE}
x <- rnorm(40)
summary(x)
```
### R como herramienta gráfica
Con R se puede realizar gráficos y modificar numerosos parámetros de éste para
que pueda ser publicado. A modo de ejemplo se realizará un histograma y un
boxplot de la variable `x` generada anteriormente.
```{r, eval=TRUE}
hist(x)
boxplot(x)
```
Podría decirse que la función más importante para generar gráficos dentro de
los paquetes instalados por defecto es `plot`. Esta función permite permite
realizar diagramas de dispersión y editar algunos elementos del gráfico.
```{r, eval=TRUE}
x <-
c(-4, -3, -2, -1, 0, 1, 2, 3, 4) # Observar que se remplazó el objeto "x" que
# se generó previamente
y <- x ^ 2
plot(x, y)
plot(x, y, type = "b", col = "red")
```
---
```{block, type='rmdtip'}
### Ejercitación
```
```{block, type='boxeda'}
1. Funciones y comandos básicos
Calcule la raíz cuadrada de 10
Calcule el perimetro del círculo de radio 5 ($P = 2\pi \times r$)
Calcule 270 dividido la suma entre 12 y 78
Calcule el cuadrado de 8
Calcule el logaritmo de 10
2. Asignaciones y aritmética vectorial
Calcule el perímetro del círculo de radio 5 y guárdelo en el objeto `per`.
Crear el vector de coordenadas 6,7,8,9,10 y llamarlo `z`Suma de dos vectores
Calcular la suma de `z` y `x`
Calcular el doble de `x`
¿Qué se obtiene haciendo el producto entre los vectores `z` y `x`?
3. R como herramienta estadística
Generar un vector `y` con 20 realizaciones de una normal con media 5 y desvío estándar 2. Calcular la media y la varianza de `y`. Realizar un histograma.
```