##Ejercicio 1: El package de R datasets (https://stat.ethz.ch/R-manual/R-devel/library/datasets/ html/00Index.html) pone a nuestra disposición una serie de conjuntos de datos con los que poder trabajar como, por ejemplo, iris, cars o Titanic. Escoged un conjunto de datos. Deberéis: • Buscar un resumen estadístico de las variables del dataset Iris y Orange. • Generar una tabla de frecuencias absolutas y una tabla de frecuencias relativas con el dataset Iris. ¿Todas las tablas generadas tienen sentido para vosotros? • Generar una tabla de frecuencias absolutas con cada una de las variables del conjunto de datos Orange. ¿Todas las tablas generadas tienen sentido para vosotros? • Generar una tabla de doble entrada entre las variables Tree y Age de Orange.

#a

library(datasets)
library(knitr)
data(iris)
head(iris)
summary(iris)
##   Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
##  3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
##  Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
##        Species  
##  setosa    :50  
##  versicolor:50  
##  virginica :50  
##                 
##                 
## 
library(datasets)
library(knitr)
data(Orange)
head(Orange)
summary(Orange)
##  Tree       age         circumference  
##  3:7   Min.   : 118.0   Min.   : 30.0  
##  1:7   1st Qu.: 484.0   1st Qu.: 65.5  
##  5:7   Median :1004.0   Median :115.0  
##  2:7   Mean   : 922.1   Mean   :115.9  
##  4:7   3rd Qu.:1372.0   3rd Qu.:161.5  
##        Max.   :1582.0   Max.   :214.0
table(iris$Sepal.Length)
## 
## 4.3 4.4 4.5 4.6 4.7 4.8 4.9   5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9   6 6.1 6.2 
##   1   3   1   4   2   5   6  10   9   4   1   6   7   6   8   7   3   6   6   4 
## 6.3 6.4 6.5 6.6 6.7 6.8 6.9   7 7.1 7.2 7.3 7.4 7.6 7.7 7.9 
##   9   7   5   2   8   3   4   1   1   3   1   1   1   4   1
table(iris$Sepal.Width)
## 
##   2 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9   3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9   4 
##   1   3   4   3   8   5   9  14  10  26  11  13   6  12   6   4   3   6   2   1 
## 4.1 4.2 4.4 
##   1   1   1
table(iris$Petal.Length)
## 
##   1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.9   3 3.3 3.5 3.6 3.7 3.8 3.9   4 4.1 4.2 4.3 
##   1   1   2   7  13  13   7   4   2   1   2   2   1   1   1   3   5   3   4   2 
## 4.4 4.5 4.6 4.7 4.8 4.9   5 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9   6 6.1 6.3 6.4 
##   4   8   3   5   4   5   4   8   2   2   2   3   6   3   3   2   2   3   1   1 
## 6.6 6.7 6.9 
##   1   2   1
table(iris$Petal.Width)
## 
## 0.1 0.2 0.3 0.4 0.5 0.6   1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9   2 2.1 2.2 2.3 
##   5  29   7   7   1   1   7   3   5  13   8  12   4   2  12   5   6   6   3   8 
## 2.4 2.5 
##   3   3
prop.table(iris$Sepal.Length)
##   [1] 0.005818597 0.005590416 0.005362236 0.005248146 0.005704507 0.006160867
##   [7] 0.005248146 0.005704507 0.005019966 0.005590416 0.006160867 0.005476326
##  [13] 0.005476326 0.004905876 0.006617228 0.006503137 0.006160867 0.005818597
##  [19] 0.006503137 0.005818597 0.006160867 0.005818597 0.005248146 0.005818597
##  [25] 0.005476326 0.005704507 0.005704507 0.005932687 0.005932687 0.005362236
##  [31] 0.005476326 0.006160867 0.005932687 0.006274957 0.005590416 0.005704507
##  [37] 0.006274957 0.005590416 0.005019966 0.005818597 0.005704507 0.005134056
##  [43] 0.005019966 0.005704507 0.005818597 0.005476326 0.005818597 0.005248146
##  [49] 0.006046777 0.005704507 0.007986309 0.007301768 0.007872219 0.006274957
##  [55] 0.007415859 0.006503137 0.007187678 0.005590416 0.007529949 0.005932687
##  [61] 0.005704507 0.006731318 0.006845408 0.006959498 0.006389047 0.007644039
##  [67] 0.006389047 0.006617228 0.007073588 0.006389047 0.006731318 0.006959498
##  [73] 0.007187678 0.006959498 0.007301768 0.007529949 0.007758129 0.007644039
##  [79] 0.006845408 0.006503137 0.006274957 0.006274957 0.006617228 0.006845408
##  [85] 0.006160867 0.006845408 0.007644039 0.007187678 0.006389047 0.006274957
##  [91] 0.006274957 0.006959498 0.006617228 0.005704507 0.006389047 0.006503137
##  [97] 0.006503137 0.007073588 0.005818597 0.006503137 0.007187678 0.006617228
## [103] 0.008100399 0.007187678 0.007415859 0.008670850 0.005590416 0.008328580
## [109] 0.007644039 0.008214489 0.007415859 0.007301768 0.007758129 0.006503137
## [115] 0.006617228 0.007301768 0.007415859 0.008784940 0.008784940 0.006845408
## [121] 0.007872219 0.006389047 0.008784940 0.007187678 0.007644039 0.008214489
## [127] 0.007073588 0.006959498 0.007301768 0.008214489 0.008442670 0.009013120
## [133] 0.007301768 0.007187678 0.006959498 0.008784940 0.007187678 0.007301768
## [139] 0.006845408 0.007872219 0.007644039 0.007872219 0.006617228 0.007758129
## [145] 0.007644039 0.007644039 0.007187678 0.007415859 0.007073588 0.006731318
prop.table(iris$Sepal.Width)
##   [1] 0.007631923 0.006541648 0.006977758 0.006759703 0.007849978 0.008504143
##   [7] 0.007413868 0.007413868 0.006323594 0.006759703 0.008068033 0.007413868
##  [13] 0.006541648 0.006541648 0.008722198 0.009594418 0.008504143 0.007631923
##  [19] 0.008286088 0.008286088 0.007413868 0.008068033 0.007849978 0.007195813
##  [25] 0.007413868 0.006541648 0.007413868 0.007631923 0.007413868 0.006977758
##  [31] 0.006759703 0.007413868 0.008940253 0.009158308 0.006759703 0.006977758
##  [37] 0.007631923 0.007849978 0.006541648 0.007413868 0.007631923 0.005015264
##  [43] 0.006977758 0.007631923 0.008286088 0.006541648 0.008286088 0.006977758
##  [49] 0.008068033 0.007195813 0.006977758 0.006977758 0.006759703 0.005015264
##  [55] 0.006105539 0.006105539 0.007195813 0.005233319 0.006323594 0.005887484
##  [61] 0.004361099 0.006541648 0.004797209 0.006323594 0.006323594 0.006759703
##  [67] 0.006541648 0.005887484 0.004797209 0.005451374 0.006977758 0.006105539
##  [73] 0.005451374 0.006105539 0.006323594 0.006541648 0.006105539 0.006541648
##  [79] 0.006323594 0.005669429 0.005233319 0.005233319 0.005887484 0.005887484
##  [85] 0.006541648 0.007413868 0.006759703 0.005015264 0.006541648 0.005451374
##  [91] 0.005669429 0.006541648 0.005669429 0.005015264 0.005887484 0.006541648
##  [97] 0.006323594 0.006323594 0.005451374 0.006105539 0.007195813 0.005887484
## [103] 0.006541648 0.006323594 0.006541648 0.006541648 0.005451374 0.006323594
## [109] 0.005451374 0.007849978 0.006977758 0.005887484 0.006541648 0.005451374
## [115] 0.006105539 0.006977758 0.006541648 0.008286088 0.005669429 0.004797209
## [121] 0.006977758 0.006105539 0.006105539 0.005887484 0.007195813 0.006977758
## [127] 0.006105539 0.006541648 0.006105539 0.006541648 0.006105539 0.008286088
## [133] 0.006105539 0.006105539 0.005669429 0.006541648 0.007413868 0.006759703
## [139] 0.006541648 0.006759703 0.006759703 0.006759703 0.005887484 0.006977758
## [145] 0.007195813 0.006541648 0.005451374 0.006541648 0.007413868 0.006541648
prop.table(iris$Petal.Length)
##   [1] 0.002483591 0.002483591 0.002306191 0.002660990 0.002483591 0.003015789
##   [7] 0.002483591 0.002660990 0.002483591 0.002660990 0.002660990 0.002838389
##  [13] 0.002483591 0.001951393 0.002128792 0.002660990 0.002306191 0.002483591
##  [19] 0.003015789 0.002660990 0.003015789 0.002660990 0.001773993 0.003015789
##  [25] 0.003370587 0.002838389 0.002838389 0.002660990 0.002483591 0.002838389
##  [31] 0.002838389 0.002660990 0.002660990 0.002483591 0.002660990 0.002128792
##  [37] 0.002306191 0.002483591 0.002306191 0.002660990 0.002306191 0.002306191
##  [43] 0.002306191 0.002838389 0.003370587 0.002483591 0.002838389 0.002483591
##  [49] 0.002660990 0.002483591 0.008337768 0.007982970 0.008692567 0.007095973
##  [55] 0.008160369 0.007982970 0.008337768 0.005854178 0.008160369 0.006918574
##  [61] 0.006208976 0.007450772 0.007095973 0.008337768 0.006386376 0.007805570
##  [67] 0.007982970 0.007273372 0.007982970 0.006918574 0.008515168 0.007095973
##  [73] 0.008692567 0.008337768 0.007628171 0.007805570 0.008515168 0.008869966
##  [79] 0.007982970 0.006208976 0.006741174 0.006563775 0.006918574 0.009047366
##  [85] 0.007982970 0.007982970 0.008337768 0.007805570 0.007273372 0.007095973
##  [91] 0.007805570 0.008160369 0.007095973 0.005854178 0.007450772 0.007450772
##  [97] 0.007450772 0.007628171 0.005321980 0.007273372 0.010643960 0.009047366
## [103] 0.010466560 0.009934362 0.010289161 0.011708356 0.007982970 0.011176158
## [109] 0.010289161 0.010821359 0.009047366 0.009402164 0.009756963 0.008869966
## [115] 0.009047366 0.009402164 0.009756963 0.011885755 0.012240553 0.008869966
## [121] 0.010111762 0.008692567 0.011885755 0.008692567 0.010111762 0.010643960
## [127] 0.008515168 0.008692567 0.009934362 0.010289161 0.010821359 0.011353557
## [133] 0.009934362 0.009047366 0.009934362 0.010821359 0.009934362 0.009756963
## [139] 0.008515168 0.009579564 0.009934362 0.009047366 0.009047366 0.010466560
## [145] 0.010111762 0.009224765 0.008869966 0.009224765 0.009579564 0.009047366
prop.table(iris$Petal.Width)
##   [1] 0.0011117287 0.0011117287 0.0011117287 0.0011117287 0.0011117287
##   [6] 0.0022234575 0.0016675931 0.0011117287 0.0011117287 0.0005558644
##  [11] 0.0011117287 0.0011117287 0.0005558644 0.0005558644 0.0011117287
##  [16] 0.0022234575 0.0022234575 0.0016675931 0.0016675931 0.0016675931
##  [21] 0.0011117287 0.0022234575 0.0011117287 0.0027793218 0.0011117287
##  [26] 0.0011117287 0.0022234575 0.0011117287 0.0011117287 0.0011117287
##  [31] 0.0011117287 0.0022234575 0.0005558644 0.0011117287 0.0011117287
##  [36] 0.0011117287 0.0011117287 0.0005558644 0.0011117287 0.0011117287
##  [41] 0.0016675931 0.0016675931 0.0011117287 0.0033351862 0.0022234575
##  [46] 0.0016675931 0.0011117287 0.0011117287 0.0011117287 0.0011117287
##  [51] 0.0077821012 0.0083379655 0.0083379655 0.0072262368 0.0083379655
##  [56] 0.0072262368 0.0088938299 0.0055586437 0.0072262368 0.0077821012
##  [61] 0.0055586437 0.0083379655 0.0055586437 0.0077821012 0.0072262368
##  [66] 0.0077821012 0.0083379655 0.0055586437 0.0083379655 0.0061145081
##  [71] 0.0100055586 0.0072262368 0.0083379655 0.0066703724 0.0072262368
##  [76] 0.0077821012 0.0077821012 0.0094496943 0.0083379655 0.0055586437
##  [81] 0.0061145081 0.0055586437 0.0066703724 0.0088938299 0.0083379655
##  [86] 0.0088938299 0.0083379655 0.0072262368 0.0072262368 0.0072262368
##  [91] 0.0066703724 0.0077821012 0.0066703724 0.0055586437 0.0072262368
##  [96] 0.0066703724 0.0072262368 0.0072262368 0.0061145081 0.0072262368
## [101] 0.0138966092 0.0105614230 0.0116731518 0.0100055586 0.0122290161
## [106] 0.0116731518 0.0094496943 0.0100055586 0.0100055586 0.0138966092
## [111] 0.0111172874 0.0105614230 0.0116731518 0.0111172874 0.0133407449
## [116] 0.0127848805 0.0100055586 0.0122290161 0.0127848805 0.0083379655
## [121] 0.0127848805 0.0111172874 0.0111172874 0.0100055586 0.0116731518
## [126] 0.0100055586 0.0100055586 0.0100055586 0.0116731518 0.0088938299
## [131] 0.0105614230 0.0111172874 0.0122290161 0.0083379655 0.0077821012
## [136] 0.0127848805 0.0133407449 0.0100055586 0.0100055586 0.0116731518
## [141] 0.0133407449 0.0127848805 0.0105614230 0.0127848805 0.0138966092
## [146] 0.0127848805 0.0105614230 0.0111172874 0.0127848805 0.0100055586

Respuesta: la variable species es un variable categorica, entonces cuenta cuantas flores hay de cada especie (absoluta) y despues indica la proporción con el total (relativa)

#c.
table(Orange$Tree)
## 
## 3 1 5 2 4 
## 7 7 7 7 7
table(Orange$age)
## 
##  118  484  664 1004 1231 1372 1582 
##    5    5    5    5    5    5    5
table(Orange$circumference)
## 
##  30  32  33  49  51  58  62  69  75  81  87 108 111 112 115 120 125 139 140 142 
##   3   1   1   1   1   1   1   1   1   1   1   1   1   1   2   1   1   1   1   2 
## 145 156 167 172 174 177 179 203 209 214 
##   1   1   1   1   1   1   1   2   1   1

Resspuesta: Tree es una variable categorica discreta, en cuanto a age y circumferenca pueden ser continuas o tienen valores muy grandes entonces se puede realizar la tabla con intervalos.

#d
table(Orange$Tree, Orange$age)
##    
##     118 484 664 1004 1231 1372 1582
##   3   1   1   1    1    1    1    1
##   1   1   1   1    1    1    1    1
##   5   1   1   1    1    1    1    1
##   2   1   1   1    1    1    1    1
##   4   1   1   1    1    1    1    1

##Ejercicio 2: Copiad y ejecutad el código siguiente de los dos vectores: vect1 <- c(1,2,1,2,1,2,1,2,1,2,1,1,1,1,2,2,1,1,2,1) vect2 <- c(1,1,2,2,2,1,2,1,1,2,1,2,1,1,1,2,1,1,1,1) Responded a los apartados siguientes: a) Usando el vect1 creamos un nuevo vector llamado Bajo_peso que sea un factor con dos niveles. Las etiquetas corresponden a 1 = Bajo peso y 2 = Peso normal. b) Usando el vect2 creamos un nuevo vector llamado Fumador que sea un factor con dos niveles. Las etiquetas corresponden a 1 = Fuma y 2 = No fuma. c) Creamos una tabla de contingencia con las dos variables anteriores con el nombre Tabla. d) Miramos la relación de las variables anteriores con la prueba del ji cuadrado. e) Miramos también cómo resulta el test de Fisher.

#a

vect1 <- c(1,2,1,2,1,2,1,2,1,2,1,1,1,1,2,2,1,1,2,1)
vect2 <- c(1,1,2,2,2,1,2,1,1,2,1,2,1,1,1,2,1,1,1,1)
Bajo_peso<- factor(vect1, levels=c(1,2), labels=c("Bajo Peso","Peso Normal"))
Bajo_peso
##  [1] Bajo Peso   Peso Normal Bajo Peso   Peso Normal Bajo Peso   Peso Normal
##  [7] Bajo Peso   Peso Normal Bajo Peso   Peso Normal Bajo Peso   Bajo Peso  
## [13] Bajo Peso   Bajo Peso   Peso Normal Peso Normal Bajo Peso   Bajo Peso  
## [19] Peso Normal Bajo Peso  
## Levels: Bajo Peso Peso Normal
#b
Fumador<- factor(vect2, levels=c(1,2), labels=c("Fuma","No Fuma"))
Fumador
##  [1] Fuma    Fuma    No Fuma No Fuma No Fuma Fuma    No Fuma Fuma    Fuma   
## [10] No Fuma Fuma    No Fuma Fuma    Fuma    Fuma    No Fuma Fuma    Fuma   
## [19] Fuma    Fuma   
## Levels: Fuma No Fuma
#c

Tabla<- table(Bajo_peso, Fumador)
Tabla
##              Fumador
## Bajo_peso     Fuma No Fuma
##   Bajo Peso      8       4
##   Peso Normal    5       3
#d
chisq.test(Tabla)
## Warning in chisq.test(Tabla): Chi-squared approximation may be incorrect
## 
##  Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  Tabla
## X-squared = 0, df = 1, p-value = 1
fisher.test(Tabla)
## 
##  Fisher's Exact Test for Count Data
## 
## data:  Tabla
## p-value = 1
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##   0.1200513 10.9278345
## sample estimates:
## odds ratio 
##   1.189031

##Ejercicio 3: a) Activad el paquete de datos airquality del paquete datasets y generad los siguientes gráficos: • Un gráfico de dispersión de la variable Ozone de color azul y con almohadillas (#) en vez de puntos. • Un gráfico de caja de color rojo con la variable Temp con el título Temperatura (en grados Farenheit). b) Activad el paquete de datos airmiles del paquete datasets y generad los siguientes gráficos: • Un gráfico de líneas de la serie de datos airmiles con el título Datos de pasajeros en vuelos comerciales (en miles) y de color azul (cadetblue2) y la etiqueta del eje x con Miles de pasajeros. • Un histograma de la serie de datos airmiles de color marrón (chocolate2). c) Representad los cuatro gráficos en una única imagen donde los veamos juntos.

#a
data("airquality") # activa el apquete
head(airquality)
plot(airquality$Ozone, col="blue",pch="#") 

boxplot(airquality$Temp, col="red", main="Temperatura (en grados Farenheit)")

#b
data("airmiles")
head(airmiles)
## [1]  412  480  683 1052 1385 1418
plot(airmiles,col = "cadetblue2", main = "Datos de pasajeros en vuelos comerciales (miles)",
xlab = "Miles de pasajeros" )

hist(airmiles, col="chocolate2", main="Histrograma de vuelos comerciales")

par(mfrow=c(2,2)) # matriz de 2*2
plot(airquality$Ozone, col="blue",pch="#") 
boxplot(airquality$Temp, col="red", main="Temperatura (en grados Farenheit)")
plot(airmiles,col = "cadetblue2", main = "Datos de pasajeros en vuelos comerciales (miles)",
xlab = "Miles de pasajeros" )
hist(airmiles, col="chocolate2", main="Histrograma de vuelos comerciales")

##Ejercicio 4: Intentad reproducir el ejemplo 7 de este LAB con unos datos simulados por vosotros. No hace falta que sean parecidos, pero es necesario que podáis hacer diferentes gráficos estadísticos con el comando plot().

set.seed(999)

x2<- rnorm(800, mean = 2, sd = 1.5)          # variable x2 con media 2 y sd 1.5
y2<- -0.8 + 0.7*x2 + rnorm(800, sd = 1.0)    # variable y2 con pendiente 0.7 y ruido
par(mfrow = c(1, 2), mar = c(4, 4, 2, 1))

plot(x2, y2,
     main = "Dispersión (x2 vs y2)",
     xlab = "x2", ylab = "y2",
     pch = "+", col = rgb(0, 0, 0, 0.35))
abline(lm(y2 ~ x2), col = "darkolivegreen3", lwd = 2)
legend("topleft", bty = "800", lwd = 2, col = "darkolivegreen3",
       legend = sprintf("y = %.2f + %.2f·x", coef(lm(y2 ~ x2))[1], coef(lm(y2 ~ x2))[2]))

# 2) Densidades superpuestas
dx2 <- density(x2)
dy2 <- density(y2)
plot(dx2,
     main = "Densidad de x2 y y2",
     xlab = "Valor", ylab = "Densidad",
     col = "steelblue3", lwd = 2)
lines(dy2, col = "tomato3", lwd = 2)
legend("topright", bty = "n",
       legend = c("x2", "y2"),
       col = c("steelblue3", "tomato3"),
       lwd = 2)

##Ejercicio 5: Para poder practicar la creación de gráficos con ggplot2, vamos a crear seis gráficos con diferentes características y con diferentes conjuntos de datos de paquetes trabajados anteriormente. a) Con los datos airquality del paquete datasets cread un gráfico de dispersión simple, pero con la recta de regresión ajustada en color rojo (darkred). b) Con los datos airquality del paquete datasets cread un gráfico de dispersión con las variables Solar.R y Temp con sus respectivas etiquetas de eje. Los colores y la forma de los puntos deben ser en función de la variable Month convertida a factor. c) Con los datos de Birthwt del paquete MASS mostrad la distribución de la variable age que tenga el borde de color negro y azul en el interior de las barras. d) Con los datos de Birthwt del paquete MASS mostrad la distribución de la variable age, pero separada en dos gráficos (fumador/no fumador) por la variable smoke.

#a 
library(ggplot2)
ggplot(airquality, aes(Solar.R, Temp)) +
geom_point(size=2) +
geom_smooth(method="lm", col="darkred")
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 7 rows containing non-finite outside the scale range
## (`stat_smooth()`).
## Warning: Removed 7 rows containing missing values or values outside the scale range
## (`geom_point()`).

#b

ggplot (airquality, aes(x=Solar.R, y=Temp, col=factor(Month),
shape=factor(Month))) +
geom_point()
## Warning: Removed 7 rows containing missing values or values outside the scale range
## (`geom_point()`).

#c

library (MASS)
ggplot(birthwt,aes(age)) +
geom_histogram(binwidth=7, fill="blue",col="black")

#d
library(MASS)
ggplot(birthwt,aes(age)) +
geom_histogram(binwidth=12, fill="lightgreen",col="black")+
facet_grid(~smoke)

##Ejercicio 6: Cread un gráfico con unos datos extraídos del paquete Datasets de R y guardadlo como imagen (.jpg) con el nombre migrafic1 y, también, como documento en PDF con el nombre migrafic2. Haced una captura de pantalla del fichero generado.

jpeg("migrafic1") #abre el dispositivo gráfico en jpg
data(iris)
boxplot(iris$Petal.Length, col="lightblue")
dev.off()#cierra el dispositivo gráfico
## png 
##   2
pdf("migrafic2") #abre el dispositivo gráfico en jpg
data(iris)
boxplot(iris$Petal.Length, col="lightblue")
dev.off()#cierra el dispositivo gráfico
## png 
##   2

##Ejercicio 7: Para practicar la regresión lineal simple usaremos el conjunto de datos Orange que se encuentra en la librería tidyverse y que tiene información sobre tres variables (árbol, edad en días desde que se sembró el árbol y circunferencia del tronco en centímetros) de 35 naranjos. • Queremos saber qué valor de circunferencia tendrá un árbol seiscientos días después de plantarlo. Cread para ello un modelo lineal y practicad la regresión lineal paso a paso con los pasos que habéis visto en este laboratorio.

#5 resumene
summary(Orange) 
##  Tree       age         circumference  
##  3:7   Min.   : 118.0   Min.   : 30.0  
##  1:7   1st Qu.: 484.0   1st Qu.: 65.5  
##  5:7   Median :1004.0   Median :115.0  
##  2:7   Mean   : 922.1   Mean   :115.9  
##  4:7   3rd Qu.:1372.0   3rd Qu.:161.5  
##        Max.   :1582.0   Max.   :214.0
# graficos
pairs(Orange)  

## correlacón
cor.test(Orange$age, Orange$circumference)   
## 
##  Pearson's product-moment correlation
## 
## data:  Orange$age and Orange$circumference
## t = 12.9, df = 33, p-value = 1.931e-14
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.8342364 0.9557955
## sample estimates:
##       cor 
## 0.9135189
# modelo de regresión
mreg<-lm(circumference ~ age, data = Orange)
summary(mreg)
## 
## Call:
## lm(formula = circumference ~ age, data = Orange)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -46.310 -14.946  -0.076  19.697  45.111 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 17.399650   8.622660   2.018   0.0518 .  
## age          0.106770   0.008277  12.900 1.93e-14 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 23.74 on 33 degrees of freedom
## Multiple R-squared:  0.8345, Adjusted R-squared:  0.8295 
## F-statistic: 166.4 on 1 and 33 DF,  p-value: 1.931e-14
#llinea
plot(Orange$age,Orange$circumference)
abline(mreg)

cicunfer<- 0.1068 * 600 + 17.3997
cicunfer
## [1] 81.4797

##Ejercicio 8: Repetid los gráficos (aquellos que podáis) de la regresión lineal simple del ejercicio anterior pero ahora con ggplot2. Nota: en caso de haber elaborado el ejercicio 7 con gráficos de este tipo, creadlos con gráficos base.

library(ggplot2)
data(Orange)

datos<- as.data.frame(Orange)
ggplot(datos, aes(x = age,
y = circumference)) +
geom_point()

ggplot(datos,aes(x = age,
y = circumference)) +
geom_point() +
geom_abline(intercept = 17.3997,
slope = 0.1068,
col = 'green') +
geom_vline(xintercept = 800,
col = 'blue')

##Ejercicio 9: Activad el conjunto de datos PlantGrowth del paquete datasets de R. Este archivo tiene los recultados de un experimento para comparar los rendimientos medios por el peso seco de las plantas (weight) obtenidos bajo un control y dos condiciones de tratamiento diferentes (group factor). • ¿Creéis que hay diferencias entre tratamientos? • Se cumplen las condiciones para poder aplicar una ANOVA. ¿Qué pruebas os planteáis?

data("PlantGrowth")
anova(lm(weight ~ group, data = PlantGrowth))

P menor de 0.05, hay diferencia significativa, debe cumplir los supuestos: hay normalidad en los residuos y homogenidad de varianzas. Si no se cumplen,se puede usar una prueba no paramétrica. si se cumplen los supuestos se utiliza la ANOVA de un factor.

##Ejercicio 10: Buscad información del paquete Plotly para la creación de gráficos interactivos y generad un histograma o un gráfico de barras interactivo. Explicad qué se puede hacer con este gráfico.

# Cargar librería
library(plotly)
## 
## Adjuntando el paquete: 'plotly'
## The following object is masked from 'package:MASS':
## 
##     select
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
# Cargar librería
library(plotly)

# Fijar semilla
set.seed(999)

# Generar datos aleatorios 
datos <- rnorm(500, mean = 0, sd = 1)

# Crear histograma interactivo
fig1<- plot_ly(
  x = ~datos,
  type = "histogram",
  nbinsx = 30,
  marker = list(color = "skyblue", line = list(color = "black", width = 1))
) %>%
  layout(
    title = "Histograma de valores normales (semilla = 999)",
    xaxis = list(title = "Valor"),
    yaxis = list(title = "Frecuencia")
  )

fig1

si se muestra en un entorno que lo soporte puede ser interactiva, es decir, se puede hacer zoom en alguna zona, mover graficos, ver cuadros emergentes, exportar gráficos, etc. el histograma permite ver la distribucion de una variable.

##Caso práctico A partir de unos datos bioclínicos o biosanitarios que escojáis y que importéis a R, explicad sus variables (mínimo de ocho variables) y también: • Realizad un resumen estadístico completo del dataset y explicad los resultados. • Realizad cinco gráficos básicos con las variables, explicad su significado y guardadlos como imágenes (jpeg o bmp). • Realizad dos gráficos con el comando ggplot(), explicad su significado y guardadlos como imágenes (jpeg o bmp). • Generad una regresión lineal entre dos de sus variables paso a paso y comentad los resultados obtenidos.

library(readr)
heart <- read.csv("C:/Users/silma/Downloads/heart.csv")
View(heart)
head(heart)
str(heart)
## 'data.frame':    918 obs. of  12 variables:
##  $ Age           : int  40 49 37 48 54 39 45 54 37 48 ...
##  $ Sex           : chr  "M" "F" "M" "F" ...
##  $ ChestPainType : chr  "ATA" "NAP" "ATA" "ASY" ...
##  $ RestingBP     : int  140 160 130 138 150 120 130 110 140 120 ...
##  $ Cholesterol   : int  289 180 283 214 195 339 237 208 207 284 ...
##  $ FastingBS     : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ RestingECG    : chr  "Normal" "Normal" "ST" "Normal" ...
##  $ MaxHR         : int  172 156 98 108 122 170 170 142 130 120 ...
##  $ ExerciseAngina: chr  "N" "N" "N" "Y" ...
##  $ Oldpeak       : num  0 1 0 1.5 0 0 0 0 1.5 0 ...
##  $ ST_Slope      : chr  "Up" "Flat" "Up" "Flat" ...
##  $ HeartDisease  : int  0 1 0 1 0 0 0 0 1 0 ...
summary(heart)
##       Age            Sex            ChestPainType        RestingBP    
##  Min.   :28.00   Length:918         Length:918         Min.   :  0.0  
##  1st Qu.:47.00   Class :character   Class :character   1st Qu.:120.0  
##  Median :54.00   Mode  :character   Mode  :character   Median :130.0  
##  Mean   :53.51                                         Mean   :132.4  
##  3rd Qu.:60.00                                         3rd Qu.:140.0  
##  Max.   :77.00                                         Max.   :200.0  
##   Cholesterol      FastingBS       RestingECG            MaxHR      
##  Min.   :  0.0   Min.   :0.0000   Length:918         Min.   : 60.0  
##  1st Qu.:173.2   1st Qu.:0.0000   Class :character   1st Qu.:120.0  
##  Median :223.0   Median :0.0000   Mode  :character   Median :138.0  
##  Mean   :198.8   Mean   :0.2331                      Mean   :136.8  
##  3rd Qu.:267.0   3rd Qu.:0.0000                      3rd Qu.:156.0  
##  Max.   :603.0   Max.   :1.0000                      Max.   :202.0  
##  ExerciseAngina        Oldpeak          ST_Slope          HeartDisease   
##  Length:918         Min.   :-2.6000   Length:918         Min.   :0.0000  
##  Class :character   1st Qu.: 0.0000   Class :character   1st Qu.:0.0000  
##  Mode  :character   Median : 0.6000   Mode  :character   Median :1.0000  
##                     Mean   : 0.8874                      Mean   :0.5534  
##                     3rd Qu.: 1.5000                      3rd Qu.:1.0000  
##                     Max.   : 6.2000                      Max.   :1.0000

tenemos 12 variables, 198 observaciones:hay variables nuemerica como la edad, colesterol,presion en reposo etc, a las cuales se les puede sacar los 5 valores resumen. Hay Variables categóricas binarias: anemia, diabetes, presion alta, genero ( representa cuantos pacientes tienen o no la caracteristica) hay variables con cadena de texto (chr) solo mide el numero de observaciones(918)

La mayoría de los pacientes están entre 45 y 65 años. La Presión y colesterol presentan valores extremos valores extremos (0) que podrian estar errados Frecuencia cardíaca máxima Varía bastante, con algunos valores muy bajos o muy altos. Oldpeak: Hay valores negativos. en la enfermedad cardiaca el balance entre pacientes con y sin enfermedad permite hacer mayores análisis comparativos

#b
# 1. Histograma de Edad
jpeg("histograma_edad.jpeg")
hist(heart$Age,
     main="Distribución de Edad",
     xlab="Edad",
     col="skyblue",
     border="black")
dev.off()
## png 
##   2

Grupo más numeroso: Los pacientes entre 50 y 54 años son los más frecuentes, con más de 140 casos. Esto sugiere que esta edad es común entre quienes se someten a estudios cardíacos. La distribución tiene forma de campana, lo que indica que la mayoría de los pacientes están en edades medias (entre 45 y 60 años). Hay menos pacientes en los extremos, especialmente menores de 35 o mayores de 65.

# 2. Gráfico de barras de Sexo
jpeg("barras_sexo.jpeg")
barplot(table(heart$Sex),
        main="Distribución por Sexo",
        names.arg=c("Femenino","Masculino"),
        col=c("pink","lightblue"))
dev.off()
## png 
##   2

mayor prevalencia de estudios cardíacos en hombres, o una mayor incidencia de síntomas que motivan exámenes médicos, la moyoria

# 3. Histograma de Colesterol
  jpeg("histograma_colesterol.jpeg")
hist(heart$Cholesterol,
     main="Distribución de colesterol",
     xlab="Niveles de colesterol",
     col="orange",
     border="black")
dev.off()
## png 
##   2
# 4. Gráfico de barras enfermedad cardiaca
jpeg("barras_enfermedadcar.jpeg")
barplot(table(heart$HeartDisease),
        main="Pacientes con Diabetes",
        names.arg=c("No","Sí"),
        col=c("lightgray","red"))
dev.off()
## png 
##   2

Hay un grupo pequeño de pacientes con colesterol por debajo de 100, lo cual puede indicar valores faltantes o condiciones atípicas. La mayoría de los pacientes tienen colesterol entre 150 y 250 mg/dL A medida que el colesterol aumenta por encima de 300, la cantidad de pacientes disminuye progresivamente. hay algunos pacientes con colesterol por encima de 500 mg/dL, aunque son muy pocos.

#5. # 
jpeg("boxplot.jpeg")

boxplot(heart$RestingBP ~ heart$MaxHR,
        data = heart,
        main = "PA en reposo vrs FC maxima ",
        xlab = "FC",
        ylab = "Presion arterial",
        col = c("lightgreen", "salmon"),
        border = "darkblue",
        notch = TRUE)  # notch indica mediana con intervalo de confianza
## Warning in (function (z, notch = FALSE, width = NULL, varwidth = FALSE, : some
## notches went outside hinges ('box'): maybe set notch=FALSE
dev.off()
## png 
##   2
jpeg("boxplot_FCM.jpeg")
 ggplot(heart, aes(x = heart$Sex, y = heart$MaxHR, fill = heart$Sex)) +
  geom_boxplot(alpha = 0.7) +
  labs(title = "Distribución de la Frecuencia Cardíaca Máxima por Sexo",
       x = "Sexo",
       y = "Frecuencia Cardíaca Máxima (lpm)") +
  theme_minimal() +
  scale_fill_manual(values = c("lightblue", "pink"))
## Warning: Use of `heart$Sex` is discouraged.
## ℹ Use `Sex` instead.
## Warning: Use of `heart$MaxHR` is discouraged.
## ℹ Use `MaxHR` instead.
## Warning: Use of `heart$Sex` is discouraged.
## ℹ Use `Sex` instead.
 dev.off()
## png 
##   2

Las mujeres tienden a tener una frecuencia cardíaca máxima más alta que los hombres en este conjunto de datos. La variabilidad en los hombres es mayor, lo que sugiere que hay más casos extremos

jpeg("dist_ST.jpeg")

ggplot(heart, aes(x = ST_Slope, fill = ST_Slope)) +
  geom_bar(alpha = 0.8) +
  labs(title = "Distribución de los tipos de ST_Slope",
       x = "Tipo de ST_Slope",
       y = "Número de pacientes") +
  scale_fill_manual(values = c("steelblue", "orange", "tomato")) 
dev.off()
## png 
##   2

el aplanamiento y elevacion del ST son las categorías más frecuentes.

data(heart)
## Warning in data(heart): data set 'heart' not found
as.data.frame(heart)
summary(heart$Age,heart$MaxHR)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   28.00   47.00   54.00   53.51   60.00   77.00
cor.test(heart$Age, heart$MaxHR) 
## 
##  Pearson's product-moment correlation
## 
## data:  heart$Age and heart$MaxHR
## t = -12.512, df = 916, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.4359714 -0.3253842
## sample estimates:
##        cor 
## -0.3820447
mreg3<-lm(MaxHR ~ Age, data = heart)
summary(mreg3)
## 
## Call:
## lm(formula = MaxHR ~ Age, data = heart)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -79.399 -15.922   0.726  18.196  58.695 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 191.99020    4.47820   42.87   <2e-16 ***
## Age          -1.03121    0.08242  -12.51   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 23.54 on 916 degrees of freedom
## Multiple R-squared:  0.146,  Adjusted R-squared:  0.145 
## F-statistic: 156.5 on 1 and 916 DF,  p-value: < 2.2e-16
ggplot(heart, aes(x = Age, y = MaxHR)) +
geom_point()

ggplot(heart, aes(x = Age, y = MaxHR)) +
  geom_point(color = "darkred") +                      # puntos
  geom_smooth(method = "lm", color = "blue", se = TRUE) +  # línea de regresión
  labs(title = "Relación entre Edad y Frecuencia Cardíaca Máxima",
       x = "Edad (años)",
       y = "Frecuencia Cardíaca Máxima (lpm)") 
## `geom_smooth()` using formula = 'y ~ x'