Maureen Corrales
Gabriel Cordero
Felipe Jiménez
1.Programación de la siguiente función recursiva
\[ U_{n} = \begin{cases} 2U_{n-1} + 4U_{n-2} - U_{n-3} & \text{si} n \geq 3 \\ 2 & \text{si} n=0 \\ -1 & \text{si} n=1 \\ 4 & \text{si} n=2 \end{cases} \]
funcion.1 <- function(n) {
if (n == 0) {
return(2)
} else {
if (n == 1) {
return(-1)
} else {
if (n == 2) {
return(4)
} else {
if (n >= 3) {
return(2 * funcion.1(n - 1) + 4 * funcion.1(n - 2) - funcion.1(n -
3))
}
}
}
}
}
Si introducimos en la función el valor 3, se obtiene el resultado: 2.
2.Programación de la función Ackermann
\[ A(N,M) = \begin{cases} 0 & \text{si} M=0 \\ 2M & \text{si} N=0 \\ 2 & \text{si} M=1 \\ A(N-1,A(N,M-1)) & \text{en otro caso} \end{cases} \]
a) Escribir la función en R
acker <- function(N, M) {
if (M == 0) {
return(0)
} else {
if (N == 0) {
return(2 * M)
} else {
if (M == 1) {
return(2)
} else {
return(acker(N - 1, acker(N, M - 1)))
}
}
}
}
b) Evaluar A(1,10) = 1024.
Evaluar A(2,4) = 6.5536 × 104.
Evaluar A(3,3) = 6.5536 × 104.
c) ¿Qué es A(0,n), A(1,n) y A(2,n)? Pruébelo usando inducción.
Son propiedades de la función de Ackermann.
Propiedad 1: A[1, n] = n + 2.
El primer caso de la inducción, por la segunda línea de la definición A[1, 0] = A[0, 1] y ahora por la primera A[0, 1] = 1 + 1 = 2 = 0 + 2 que es lo que se quiere demostrar.
Ahora, se tiene [1, n ] = (por la tercera línea de la definición) = [0, 1, n - 1] = (por inducción) = [0, n - 1 +2] = [0, n + 1] = (por la primera línea de la definición) = n + 1 + 1 = n + 2, como se quiere demostrar.
Ahora, se puede demostrar por inducción la
Propiedad 2: A[2, n] = 2 n + 3.
El primer caso de la inducción. Se tiene [2, 0] = (por la segunda línea de la definición) = [1, 1] = (por el caso anterior) = 1 + 2 = 3 = 2*0 + 3, como se quiere.
Ahora por hipótesis de inducción: [2, n ] = (por la tercera línea de la definición) = [1, 2, n - 1] = (por inducción) = [1, 2(n - 1) +3] = [1, 2 n + 1] = (por caso anterior) = 2 n + 1 + 2 = 2 n + 3, como se quiere demostrar.
Ahora, se puede demostrar por inducción la
Propiedad 3: A[3, n] = 2n + 3 - 3.
El primer caso de la inducción. Se tiene [3, 0] = (por la segunda línea de la definición) = [2, 1] = (por el caso anterior) = 2*1 + 3 = 5 = 20 + 3 - 3, como se quiere.
Ahora por hipótesis de inducción: [3, n ] = (por la tercera línea de la definición) = [2, 3, n - 1] = (por inducción) = [2, 2n + 2 - 3] = (por caso anterior) = 2 (2n + 2 - 3) + 3 = 2n + 3 - 3, como se quiere demostrar.
Fuente: http://www.ugr.es/~eaznar/funcion_ackermann.htm
3.Función en R que recibe DataFrame y retorna cantidad de entradas que son divisibles entre 3.
# Seteo de directorio
setwd("C:/Users/Usuario/Desktop/Datos_Mineria")
# Valida si es entero
es.entero <- function(x, tol = .Machine$double.eps^0.5) abs(x - round(x)) <
tol
divisibles_3 <- function(DF) {
n <- dim(DF)[1]
m <- dim(DF)[2]
divisible <- 0
for (i in 1:n) {
for (j in 1:m) {
numero <- DF[i, j]/3
if (es.entero(numero) == "TRUE") {
divisible <- divisible + 1
}
}
}
return(divisible)
}
ejemplo <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), 3, 3)
La comprobación es la siguiente: 3
4.Función en R que recibe DataFrame y dos números de columnas y retorna el nombre de las dos columnas, la covariancia y la correlación entre esas dos variables.
lista <- function(DF, C1, C2) {
columna1 <- colnames(DF[C1])
columna2 <- colnames(DF[C2])
var1 <- DF[, C1]
var2 <- DF[, C2]
return(list(Nombre.1er.columna = columna1, Nombre.2da.columna = columna2,
Covariancia = cov(var1, var2), Correlación = cor(var1, var2)))
}
Para pobrar la función se van a utilizar los siguientes datos:
x <- c(161, 203, 235, 176, 201, 188, 228, 211, 191, 178)
y <- c(159, 206, 241, 163, 197, 193, 209, 189, 169, 201)
genero <- factor(c("Hombre", "Mujer", "Hombre", "Hombre", "Hombre", "Mujer",
"Mujer", "Mujer", "Hombre", "Hombre"))
Datos.Pruebas <- data.frame(Prueba.escrita = x, Prueba.oral = y, Genero = genero)
Entonces vamos a introducir el DataFrame Datos.Pruebas y pedir las columnas 1 y 2, para obtener como resultado la siguiente lista:
lista(Datos.Pruebas, 1, 2)
## $Nombre.1er.columna
## [1] "Prueba.escrita"
##
## $Nombre.2da.columna
## [1] "Prueba.oral"
##
## $Covariancia
## [1] 467.2
##
## $Correlación
## [1] 0.8159
5.Función en R que recibe dos vectores y va a contar y retornar la cantidad de números estrictamente positivos que aparecen como resultado de multiplicar, uno a uno, todos los elementos del primer vector por todos los elementos del segundo vector.
multi.vector <- function(v1, v2) {
conteo <- 0
vector <- v1 * v2
n <- length(vector)
for (i in 1:n) {
if (vector[i] > 0) {
conteo <- conteo + 1
}
}
return(list(Positivos = conteo))
}
Ejemplo 1:
d <- c(0, 2, 3)
e <- c(1, 2, 3)
multi.vector(d, e)
## $Positivos
## [1] 2
Ejemplo 2:
f <- c(1, 2, 3)
g <- c(1, 2, -3)
multi.vector(f, g)
## $Positivos
## [1] 2
6.Ejercicio con la función generate.
# Generando datos mediante función generate()
centers <- matrix(c(0, 3, 1, 3, 0, 4), 3, 2, byrow = T)
centers
## [,1] [,2]
## [1,] 0 3
## [2,] 1 3
## [3,] 0 4
generate <- function(n = 50, extradim = 0, sigma = 1, mu = 7) {
data1 <- matrix(rnorm(n * 2), n, 2) * sigma
data1[, 1] <- data1[, 1] + centers[1, 1] * mu
data1[, 2] <- data1[, 2] + centers[1, 2] * mu
data2 <- matrix(rnorm(n * 2), n, 2) * sigma
data2[, 1] <- data2[, 1] + centers[2, 1] * mu
data2[, 2] <- data2[, 2] + centers[2, 2] * mu
data3 = matrix(rnorm(n * 2), n, 2) * sigma
data3[, 1] <- data3[, 1] + centers[3, 1] * mu
data3[, 2] <- data3[, 2] + centers[3, 2] * mu
data <- rbind(data1, data2, data3)
if (extradim > 0) {
noise <- matrix(rnorm(3 * n * extradim) * sigma, 3 * n, extradim)
data <- cbind(data, noise)
}
return(data)
}
Datos <- as.data.frame(generate())
tail(Datos)
## V1 V2
## 145 -1.7341 27.26
## 146 0.6141 27.35
## 147 -2.5709 27.36
## 148 -0.0240 27.55
## 149 -0.9647 26.28
## 150 0.5646 25.09
# Observando la distribución de los datos generados
library(ggplot2)
qplot(V1, data = Datos, geom = "density", alpha = I(0.5), main = "Distribución de V1",
xlab = "V1", ylab = "Densidad")
qplot(V2, data = Datos, geom = "density", alpha = I(0.5), main = "Distribución de V2",
xlab = "V1", ylab = "Densidad")
Los datos generados tienen una distribución bimodal con dos curvas normales claramente definidas.
El parámetro extradim agrega variables adicionales al set de datos con una distribución normal estándar.Con estas variables, la clasificación empeora ya que incluye variables con distribución y valores diferentes.
Data3 = generate(extradim = 0)
plot(Data3)
for (i in 1:50) {
points(Data3[i, 1], Data3[i, 2], pch = 19, col = "blue")
}
for (i in 51:100) {
points(Data3[i, 1], Data3[i, 2], pch = 19, col = "red")
}
for (i in 101:150) {
points(Data3[i, 1], Data3[i, 2], pch = 19, col = "green")
}
El código genera un gráfico con los datos generados por la función generate() y separa mediante el color los grupos que fueron creados artificialmente para cada uno de los 3 sets de datos.
# install.packages('scatterplot3d')
library(scatterplot3d)
# Generando set de datos de generate() con extradim=1
tresd <- as.data.frame(generate(extradim = 1))
tail(tresd)
## V1 V2 V3
## 145 -0.43306 29.08 1.17495
## 146 -0.76151 28.16 0.26672
## 147 -2.42594 29.35 0.35376
## 148 0.44843 28.47 -1.92083
## 149 -0.08834 26.55 -0.23426
## 150 1.03985 26.73 0.04526
g3d <- scatterplot3d(tresd$V2, tresd$V3, tresd$V1, color = "blue", xlab = "V2",
ylab = "V3", zlab = "V1", grid = FALSE, col.grid = "honeydew3", pch = 19,
angle = 45, col.axis = "burlywood4", main = "Scatterplot 3D para datos de la función generate(Extradim=1)")
g3d$points3d(tresd$V2[101:150], tresd$V3[101:150], tresd$V1[101:150], col = "green",
pch = 19)
g3d$points3d(tresd$V2[51:100], tresd$V3[51:100], tresd$V1[51:100], col = "red",
pch = 19)
7.Para la tabla de datos del archivo DJTable.csv, el cual contiene valores de las acciones de las principales empresas de los Estados Unidos en el 2010, se usa el comando plot para graficar todas las series CSCO, IBM, INTC y MSFT.
setwd("C:/Users/Usuario/Desktop/Datos_Mineria")
Datos <- read.table("DJTable.csv", header = TRUE, sep = ";", dec = ".", row.names = 1)
head(Datos)
## AA AXP BA BAC CAT CSCO CVX DD DIS GE
## 31/12/2010 15.39 42.92 65.26 13.34 93.66 20.23 91.25 49.88 37.51 18.29
## 30/12/2010 15.21 42.51 65.01 13.28 93.87 20.23 91.60 49.69 37.48 18.19
## 29/12/2010 15.13 42.86 65.05 13.31 93.78 20.25 91.37 50.02 37.60 18.27
## 28/12/2010 15.25 42.79 64.86 13.34 93.69 20.35 91.19 49.82 37.36 18.32
## 27/12/2010 15.23 43.05 64.75 13.27 94.07 20.16 90.12 49.63 37.48 18.19
## 23/12/2010 15.34 42.77 65.06 13.06 94.45 19.69 90.68 49.77 37.70 18.04
## HD HPQ IBM INTC JNJ JPM KO MCD MMM MRK
## 31/12/2010 35.06 42.10 146.8 21.03 61.85 42.42 65.77 76.76 86.30 36.04
## 30/12/2010 34.86 42.26 146.7 21.02 61.94 42.23 65.50 76.76 86.54 36.01
## 29/12/2010 34.89 42.32 146.5 20.94 62.13 42.36 65.45 76.99 86.76 36.21
## 28/12/2010 35.09 42.25 145.7 20.88 62.05 42.61 65.36 76.43 86.74 36.20
## 27/12/2010 35.24 41.82 145.3 20.84 61.93 42.67 65.07 76.43 87.01 36.23
## 23/12/2010 35.09 41.74 145.9 20.84 62.25 42.08 65.58 76.96 86.47 36.29
## MSFT PFE PG T TRV UNH UTX VZ WMT XOM
## 31/12/2010 27.91 17.51 64.33 29.38 55.71 36.11 78.72 35.78 53.93 73.12
## 30/12/2010 27.85 17.49 64.28 29.33 55.54 35.94 78.85 35.56 54.07 73.36
## 29/12/2010 27.97 17.60 64.40 29.31 55.59 35.91 79.10 35.58 54.08 73.37
## 28/12/2010 28.01 17.59 64.76 29.23 55.66 35.72 79.29 35.62 53.74 73.42
## 27/12/2010 28.07 17.49 64.67 29.25 55.79 35.54 79.27 35.50 53.57 73.01
## 23/12/2010 28.30 17.61 65.24 29.20 55.48 35.77 79.50 35.44 53.60 73.20
plot(Datos$CSCO, type = "l", lwd = 1, xaxt = "n", ylim = c(0, 180), col = "black",
xlab = "Fecha", ylab = "Cantidad de acciones", main = "Cantidad de acciones de las principales empresas de Estados Unidos en el año 2010")
axis(1, at = 1:length(row.names(Datos)), labels = row.names(Datos))
lines(Datos$IBM, col = "red", type = "l", lwd = 1)
lines(Datos$INTC, col = "orange", type = "l", lwd = 1)
lines(Datos$MSFT, col = "purple", type = "l", lwd = 1)
legend(1, 180, legend = c("CSCO", "IBM", "INTC", "MSFT"), lty = 1, lwd = 2,
pch = 21, col = c("black", "red", "orange", "purple"), horiz = TRUE, bty = "n",
bg = "yellow", cex = 1, text.col = c("black", "red", "orange", "purple"))
8.Igual al anterior con funciones del paquete ggplot2.
setwd("C:/Users/Usuario/Desktop/Datos_Mineria")
Datos <- read.table("DJTable.csv", header = TRUE, sep = ";", dec = ".", row.names = 1)
head(Datos)
## AA AXP BA BAC CAT CSCO CVX DD DIS GE
## 31/12/2010 15.39 42.92 65.26 13.34 93.66 20.23 91.25 49.88 37.51 18.29
## 30/12/2010 15.21 42.51 65.01 13.28 93.87 20.23 91.60 49.69 37.48 18.19
## 29/12/2010 15.13 42.86 65.05 13.31 93.78 20.25 91.37 50.02 37.60 18.27
## 28/12/2010 15.25 42.79 64.86 13.34 93.69 20.35 91.19 49.82 37.36 18.32
## 27/12/2010 15.23 43.05 64.75 13.27 94.07 20.16 90.12 49.63 37.48 18.19
## 23/12/2010 15.34 42.77 65.06 13.06 94.45 19.69 90.68 49.77 37.70 18.04
## HD HPQ IBM INTC JNJ JPM KO MCD MMM MRK
## 31/12/2010 35.06 42.10 146.8 21.03 61.85 42.42 65.77 76.76 86.30 36.04
## 30/12/2010 34.86 42.26 146.7 21.02 61.94 42.23 65.50 76.76 86.54 36.01
## 29/12/2010 34.89 42.32 146.5 20.94 62.13 42.36 65.45 76.99 86.76 36.21
## 28/12/2010 35.09 42.25 145.7 20.88 62.05 42.61 65.36 76.43 86.74 36.20
## 27/12/2010 35.24 41.82 145.3 20.84 61.93 42.67 65.07 76.43 87.01 36.23
## 23/12/2010 35.09 41.74 145.9 20.84 62.25 42.08 65.58 76.96 86.47 36.29
## MSFT PFE PG T TRV UNH UTX VZ WMT XOM
## 31/12/2010 27.91 17.51 64.33 29.38 55.71 36.11 78.72 35.78 53.93 73.12
## 30/12/2010 27.85 17.49 64.28 29.33 55.54 35.94 78.85 35.56 54.07 73.36
## 29/12/2010 27.97 17.60 64.40 29.31 55.59 35.91 79.10 35.58 54.08 73.37
## 28/12/2010 28.01 17.59 64.76 29.23 55.66 35.72 79.29 35.62 53.74 73.42
## 27/12/2010 28.07 17.49 64.67 29.25 55.79 35.54 79.27 35.50 53.57 73.01
## 23/12/2010 28.30 17.61 65.24 29.20 55.48 35.77 79.50 35.44 53.60 73.20
library(ggplot2)
ggplot() + geom_line(data = Datos, aes(x = rownames(Datos), y = CSCO, group = 1,
colour = "CSCO")) + geom_line(data = Datos, aes(x = rownames(Datos), y = IBM,
group = 2, colour = "IBM")) + geom_line(data = Datos, aes(x = rownames(Datos),
y = INTC, group = 3, colour = "INTC")) + geom_line(data = Datos, aes(x = rownames(Datos),
y = MSFT, group = 4, colour = "MSFT"))
9.Para el archivo de datos SAheart.cvs se van a realizar 3 gráficos con ggplot2, explicar cómo se realizaron e interpretar los gráficos.
# Leyendo datos para el ejercicio
setwd("C:/Users/Usuario/Desktop/Datos_Mineria")
Heart <- read.table("SAheart.csv", header = TRUE, sep = ";", dec = ".")
tail(Heart)
## sbp tobacco ldl adiposity famhist typea obesity alcohol age chd
## 457 170 0.4 4.11 42.06 Present 56 33.10 2.06 57 No
## 458 214 0.4 5.98 31.72 Absent 64 28.45 0.00 58 No
## 459 182 4.2 4.41 32.10 Absent 52 28.61 18.72 52 Si
## 460 108 3.0 1.59 15.23 Absent 40 20.09 26.64 55 No
## 461 118 5.4 11.61 30.79 Absent 64 27.35 23.97 40 No
## 462 132 0.0 4.82 33.41 Present 62 14.70 0.00 46 Si
str(Heart)
## 'data.frame': 462 obs. of 10 variables:
## $ sbp : int 160 144 118 170 134 132 142 114 114 132 ...
## $ tobacco : num 12 0.01 0.08 7.5 13.6 6.2 4.05 4.08 0 0 ...
## $ ldl : num 5.73 4.41 3.48 6.41 3.5 6.47 3.38 4.59 3.83 5.8 ...
## $ adiposity: num 23.1 28.6 32.3 38 27.8 ...
## $ famhist : Factor w/ 2 levels "Absent","Present": 2 1 2 2 2 2 1 2 2 2 ...
## $ typea : int 49 55 52 51 60 62 59 62 49 69 ...
## $ obesity : num 25.3 28.9 29.1 32 26 ...
## $ alcohol : num 97.2 2.06 3.81 24.26 57.34 ...
## $ age : int 52 63 46 58 49 45 38 58 29 53 ...
## $ chd : Factor w/ 2 levels "No","Si": 2 2 1 2 2 1 1 2 1 2 ...
summary(Heart)
## sbp tobacco ldl adiposity
## Min. :101 Min. : 0.000 Min. : 0.98 Min. : 6.74
## 1st Qu.:124 1st Qu.: 0.052 1st Qu.: 3.28 1st Qu.:19.77
## Median :134 Median : 2.000 Median : 4.34 Median :26.11
## Mean :138 Mean : 3.636 Mean : 4.74 Mean :25.41
## 3rd Qu.:148 3rd Qu.: 5.500 3rd Qu.: 5.79 3rd Qu.:31.23
## Max. :218 Max. :31.200 Max. :15.33 Max. :42.49
## famhist typea obesity alcohol
## Absent :270 Min. :13.0 Min. :14.7 Min. : 0.00
## Present:192 1st Qu.:47.0 1st Qu.:23.0 1st Qu.: 0.51
## Median :53.0 Median :25.8 Median : 7.51
## Mean :53.1 Mean :26.0 Mean : 17.04
## 3rd Qu.:60.0 3rd Qu.:28.5 3rd Qu.: 23.89
## Max. :78.0 Max. :46.6 Max. :147.19
## age chd
## Min. :15.0 No:302
## 1st Qu.:31.0 Si:160
## Median :45.0
## Mean :42.8
## 3rd Qu.:55.0
## Max. :64.0
# Correlaciones de variables numéricas
heartnum <- cbind(Heart[, 1:4], Heart[, 6:9])
tail(heartnum)
## sbp tobacco ldl adiposity typea obesity alcohol age
## 457 170 0.4 4.11 42.06 56 33.10 2.06 57
## 458 214 0.4 5.98 31.72 64 28.45 0.00 58
## 459 182 4.2 4.41 32.10 52 28.61 18.72 52
## 460 108 3.0 1.59 15.23 40 20.09 26.64 55
## 461 118 5.4 11.61 30.79 64 27.35 23.97 40
## 462 132 0.0 4.82 33.41 62 14.70 0.00 46
cor(heartnum)
## sbp tobacco ldl adiposity typea obesity alcohol
## sbp 1.00000 0.21225 0.15830 0.35650 -0.05745 0.23807 0.14010
## tobacco 0.21225 1.00000 0.15891 0.28664 -0.01461 0.12453 0.20081
## ldl 0.15830 0.15891 1.00000 0.44043 0.04405 0.33051 -0.03340
## adiposity 0.35650 0.28664 0.44043 1.00000 -0.04314 0.71656 0.10033
## typea -0.05745 -0.01461 0.04405 -0.04314 1.00000 0.07401 0.03950
## obesity 0.23807 0.12453 0.33051 0.71656 0.07401 1.00000 0.05162
## alcohol 0.14010 0.20081 -0.03340 0.10033 0.03950 0.05162 1.00000
## age 0.38877 0.45033 0.31180 0.62595 -0.10261 0.29178 0.10112
## age
## sbp 0.3888
## tobacco 0.4503
## ldl 0.3118
## adiposity 0.6260
## typea -0.1026
## obesity 0.2918
## alcohol 0.1011
## age 1.0000
g1 <- ggplot(data = Heart, aes(x = obesity, fill = chd)) + # Se genera la base para gráfico con la variable Obesidad en el eje x y llenada por CHD.
geom_histogram(colour = "white", binwidth = 1)+ facet_grid(chd ~ .,scales = "fixed") + # Se incluye un histograma con ancho=1 y además una faceta por la variable CHD, para que separa la obesidad en cada categoría de CHD.
ggtitle("Distribución de la Obesidad según el CHD(Riesgo Enfermedad Coronaria)") + #Agrega el título del gráfico.
theme(text = element_text(size = 14, family="", face="italic"))+ # Agrega un tema al gráfico, con texto tamaño 14 y tipo de letra "italic".
labs(x = "Obesidad",y="Frecuencia")+ # Agrega las etiquetas de los ejes.
scale_colour_manual(values=c("chartreuse4", "firebrick")) # Agrega los colores de manera manual a cada categoría.
g1
Este gráfico muestra la distribución de frecuencia de la variable obesidad, separada para el subgrupo que tuvo evento de enfermedad coronaria del corazón y de las que no lo tuvieron. La muestra de los que si tuvieron el evento es menor según lo que se observa en el gráfico, sin embargo, se observa que la distribución se encuentra más a la derecha en comparación con el otro grupo, por lo tanto, esto sugiere que el grupo de los que tuvo el evento de CHD, tiene una mayor obesidad.
g2 <- ggplot(Heart, aes(obesity,adiposity, colour = chd)) + # Agrega un gráfico que incluye en el eje x la obesidad, en el y la adiposidad y coloreado por las categorías de chd.
geom_point(alpha = 0.7) + stat_smooth(method=loess) + # Agrega un gráfico de puntos y un método de suavizamiento para visualizar mejor la relación entre las variables.
ggtitle("Relación entre Obesidad y Adiposidad según CHD(Riesgo Cardiovascular)") + # Agrega el título del gráfico.
theme(text = element_text(size = 14, family="", face="italic"))+ #Agrega un tema al gráfico, con letra 14 y tipo de letra "italic".
labs(x = "Obesidad", y = "Adiposidad")+ # Agrega las etiquetas a los ejes.
scale_colour_manual(values=c("chartreuse4", "firebrick"))+ # Agrega color personalizado para cada categoría.
xlim(20, 38) # Genera lí?mites para la variable del eje x(Obesidad)
g2
## Warning: Removed 15 rows containing missing values (stat_smooth).
## Warning: Removed 9 rows containing missing values (stat_smooth).
## Warning: Removed 24 rows containing missing values (geom_point).
El gráfico anterior muestra la relación que existe entre obesidad y adiposidad, separada para cada uno de los grupos de CHD.Lo primero que sugiere el gráfico es la existencia de una relación lineal directa entre obesidad y adiposidad. Sumado a lo anterior,el grupo que sufrió de CHD tiene un nivel medio consistentemente mayor de adiposidad con respecto al grupo que no sufrió el evento de CHD, para cada nivel de obesidad.
#Genera los boxplot a comparar
g3a <- ggplot(Heart, aes(chd,tobacco,fill=chd)) + geom_boxplot(outlier.colour = "coral4")+ #Genera un gráfico que compara chd en el eje X, tabaco en el Y y llenado por chd.
labs(x = "Tabaco", y = "Frecuencia")+ #Agrega las etiquetas a los ejes.
scale_fill_brewer(palette="Oranges")
g3b <- ggplot(Heart, aes(chd,ldl,fill=chd)) + geom_boxplot(outlier.colour = "coral4")+ #Genera un gráfico que compara chd en el eje X, ldl en el Y y llenado por chd.
labs(x = "ldl", y = "Frecuencia")+ #Agrega las etiquetas a los ejes.
scale_fill_brewer(palette="Oranges") # Agrega un tema de color para el gráfico.
g3c <- ggplot(Heart, aes(chd,obesity,fill=chd)) + geom_boxplot(outlier.colour = "coral4")+ #Genera un gráfico que compara chd en el eje X, obesidad en el Y y llenado por chd.
labs(x = "Obesidad")+ #Agrega las etiquetas a los ejes.
scale_fill_brewer(palette="Oranges") # Agrega un tema de color para el gráfico.
g3d <- ggplot(Heart, aes(chd,adiposity,fill=chd)) + geom_boxplot(outlier.colour = "coral4")+ #Genera un gráfico que compara chd en el eje X, adiposidad en el Y y llenado por chd.
labs(x = "Adiposidad")+ #Agrega las etiquetas a los ejes.
scale_fill_brewer(palette="Oranges") # Agrega un tema de color para el gráfico.
#Agrupar gráficos
multiplot <- function(..., plotlist = NULL, file, cols = 1, layout = NULL) {
require(grid)
plots <- c(list(...), plotlist)
numPlots = length(plots)
if (is.null(layout)) {
layout <- matrix(seq(1, cols * ceiling(numPlots/cols)), ncol = cols,
nrow = ceiling(numPlots/cols))
}
if (numPlots == 1) {
print(plots[[1]])
} else {
grid.newpage()
pushViewport(viewport(layout = grid.layout(nrow(layout), ncol(layout))))
for (i in 1:numPlots) {
matchidx <- as.data.frame(which(layout == i, arr.ind = TRUE))
print(plots[[i]], vp = viewport(layout.pos.row = matchidx$row, layout.pos.col = matchidx$col))
}
}
}
#Distribución de Tabaco, LDL, Obesidad y Adiposidad según Riesgo de Enfermedad Cardiovascular
multiplot(g3a,g3b,g3c,g3d, cols = 2)
## Loading required package: grid
La figura mostrada arriba incluye la distribución de 4 variables que están relacionadas con la CHD: Tabaco, Obesidad,ldl y adiposidad.En todas existen mayores niveles para el grupo que sufrió el evento de CHD, sin embargo, este fenómeno es menos evidente para la variable obesidad, en donde la diferencias distribucionales son menores.
10.Representación gráfica de la función coseno en el intervalo [0,2 \( \pi \)].
x <- seq(0, 2 * pi, length = 100)
par(mfrow = c(1, 2))
plot(cos(x))
plot(x, cos(x), col = "red")
¿Cuál es la diferencia entre los comandos plot(cos(x)) (primer gráfico) y plot(x,cos(x),col=“red”) (segundo gráfico)?
La diferencia es que el primero grafica todos los puntos del valor cos(x) sin asociarlos a los x que lo generaron, mientras que el segundo asocia el cos(x) con su respectivo valor de x.
11.Utilizar los comandos plot y par para generar los gráficos solicitados.
par(mfrow = c(2, 2))
# Gráfico a
valor_0.2pi <- 0.003490659
v <- seq(0, 6, by = valor_0.2pi)
plot(v, sin(v), type = "l", col = "green", lty = 2, lwd = 2, xlab = "[0.2pi]",
ylab = "y1", main = "Seno y Coseno")
lines(v, cos(v), lty = 1, lwd = 2, col = "red")
# Gráfico b
plot(seq(1, 5, 1), rep(1, 5), type = "l", axes = FALSE, xlim = c(1, 5), ylim = c(1,
5), col = "green", lwd = 3, ylab = "", xlab = "")
box()
axis(1, 1:5, col.axis = "red")
axis(2, 1:5, col.axis = "red")
title(ylab = "eje y de color azul", col = "green", col.lab = "blue")
title(xlab = "eje x de color azul", col = "blue", col.lab = "blue")
title("Título en cursiva", font.main = 3)
lines(rep(5, 5), seq(1, 5, 1), col = "green", lwd = 3)
lines(seq(1, 5, 1), rep(5, 5), col = "green", lwd = 3)
lines(rep(1, 4), seq(2, 5, 1), col = "green", lwd = 3)
lines(seq(1, 4, 1), rep(2, 4), col = "green", lwd = 3)
lines(rep(4, 3), seq(2, 4, 1), col = "green", lwd = 3)
lines(seq(2, 4, 1), rep(4, 3), col = "green", lwd = 3)
lines(rep(2, 2), seq(3, 4, 1), col = "green", lwd = 3)
lines(seq(2, 3, 1), rep(3, 2), col = "green", lwd = 3)
# Gráfico c
v <- seq(1, 10, by = 0.1)
plot(v, log(v), type = "l", col = "green", lty = 1, lwd = 4, xlab = "Coordenada x",
ylab = "Coordenada y", main = "Función logaritmo")
legend(7, 0.5, lty = 1, lwd = 4, col = "green", legend = "f(x)=log(x)")
points(6, 1, pch = 17, cex = 1, col = "blue")
text(8, 1, "Punto(6,1)")
# Gráfico d
r3 <- 3
r2 <- 2
r1 <- 1
plot(c(seq(-r1, r1, 0.01), seq(r1, -r1, -0.01)), c(-sqrt(r1^2 - (seq(-r1, r1,
0.01))^2), sqrt(r1^2 - (seq(r1, -r1, -0.01))^2)), type = "l", ylab = "Eje y=[-4,4]",
main = "Circunferencias concéntricas", xlab = "Eje x=[-4,4]", xlim = c(-4,
4), ylim = c(-4, 4), lwd = 2, col = "darkturquoise")
lines(c(seq(-r2, r2, 0.01), seq(r2, -r2, -0.01)), c(-sqrt(r2^2 - (seq(-r2, r2,
0.01))^2), sqrt(r2^2 - (seq(r2, -r2, -0.01))^2)), lty = 2, lwd = 2, col = "yellow")
lines(c(seq(-r3, r3, 0.01), seq(r3, -r3, -0.01)), c(-sqrt(r3^2 - (seq(-r3, r3,
0.01))^2), sqrt(r3^2 - (seq(r3, -r3, -0.01))^2)), lty = 3, lwd = 2, col = "purple")
points(0, 0, pch = 19, cex = 1, col = "green")
legend(3, -3, lty = c(1:3), col = c("darkturquoise", "yellow", "purple"), legend = c("Radio 1",
"Radio 2", "Radio 3"), cex = 0.5)
12.Ejecutar y explicar el siguiente código:
# install.packages('reshape') # Instala el paquete reshape.
library(ggplot2) # Carga el paquete ggplot2.
library(reshape) # Carga el paquete reshape.
## Loading required package: plyr
##
## Attaching package: 'reshape'
##
## The following objects are masked from 'package:plyr':
##
## rename, round_any
head(tips) # Visualizar los primeros registros de 'Tip'.
## total_bill tip sex smoker day time size
## 1 16.99 1.01 Female No Sun Dinner 2
## 2 10.34 1.66 Male No Sun Dinner 3
## 3 21.01 3.50 Male No Sun Dinner 3
## 4 23.68 3.31 Male No Sun Dinner 2
## 5 24.59 3.61 Female No Sun Dinner 4
## 6 25.29 4.71 Male No Sun Dinner 4
dim(tips) # Indica la cantidad de filas y columnas de 'Tip'.
## [1] 244 7
qplot(tip, total_bill, geom = "point", data = tips) # Ejecuta un scatterplot entre las variables tip y total_bill.
qplot(tip, total_bill, geom = "point", data = tips, colour = smoker) # Al gráfico de la linea anterior le agrega color seúºn la categoía de smoker.
qplot(tip, total_bill, geom = "point", data = tips, colour = smoker, xlab = "Tip (in dollars)",
ylab = "Total Bill (in dollars)", main = "Scatterplot of Tip by Total Bill,\n Colored by Smoking Status") # Al gráfico anterior le agrega etiquetas de ejes y título.
tips$rate <- tips$tip/tips$total_bill # Cálcula la variable rate en el objeto tips que consiste en la razón de tips sobre total_bill.
qplot(rate, geom = "histogram", data = tips) # Genera un histograma de la variable rate.
## stat_bin: binwidth defaulted to range/30. Use 'binwidth = x' to adjust this.
qplot(rate, geom = "histogram", data = tips, binwidth = 0.05) # Al gráfico de la línea anterior le realiza un ajuste al ancho de las barras.
ggplot(tips, aes(x = rate)) + geom_histogram(binwidth = 0.05, colour = "black",
fill = "lightblue") # Genera histograma de la variable rate y rellena las barras de color 'lightblue'.
qplot(sex, rate, geom = "boxplot", data = tips, fill = sex) # Genera boxplot de la variable rate por cada categoría de sex.
qplot(sex, rate, geom = "boxplot", data = tips, xlab = "Gender", ylab = "Tipping Rate",
main = "Boxplots of tipping rate by gender", fill = sex) + geom_jitter() # Al gráfico anterior le agrega la dispersión de cada uno de los puntos, ademas de las etiquetas a los ejes y el título.