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