SP 1666 MINERÍA DE DATOS

TAREA NښMERO 2

INTEGRANTES

SOLUCIONES

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.

Punto 1

# 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")

plot of chunk unnamed-chunk-9


qplot(V2, data = Datos, geom = "density", alpha = I(0.5), main = "Distribución de V2", 
    xlab = "V1", ylab = "Densidad")

plot of chunk unnamed-chunk-9

Los datos generados tienen una distribución bimodal con dos curvas normales claramente definidas.

Punto 2

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.

Punto 3

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")
}

plot of chunk unnamed-chunk-10

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.

Punto 4

# 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)

plot of chunk unnamed-chunk-11

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"))

plot of chunk 2Se debe tener el archivo de datos a disposición

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"))

plot of chunk 3Se debe tener el archivo de datos a disposición

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

Gráfico 1

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

plot of chunk unnamed-chunk-12

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.

Gráfico 2

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).

plot of chunk unnamed-chunk-13

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.

Gráfico 3

#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

plot of chunk unnamed-chunk-14

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")

plot of chunk unnamed-chunk-15

¿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)

plot of chunk unnamed-chunk-16

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.

plot of chunk unnamed-chunk-17

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.

plot of chunk unnamed-chunk-17

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.

plot of chunk unnamed-chunk-17

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.

plot of chunk unnamed-chunk-17

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.

plot of chunk unnamed-chunk-17

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'.

plot of chunk unnamed-chunk-17

qplot(sex, rate, geom = "boxplot", data = tips, fill = sex)  # Genera boxplot de la variable rate por cada categoría de sex.

plot of chunk unnamed-chunk-17

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.

plot of chunk unnamed-chunk-17