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.
library(datasets)
library(knitr)
data(iris) #Datos IRIS
head(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
data(Orange) #Datos ORANGE
head(Orange)
## Tree age circumference
## 1 1 118 30
## 2 1 484 58
## 3 1 664 87
## 4 1 1004 115
## 5 1 1231 120
## 6 1 1372 142
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
• Generar una tabla de frecuencias absolutas y una tabla de frecuencias relativas con el dataset Iris. ¿Todas las tablas generadas tienen sentido para vosotros?
library(knitr)
#Tablas frecuencia absoluta IRIS
kable(table(iris$Sepal.Length))
| Var1 | Freq |
|---|---|
| 4.3 | 1 |
| 4.4 | 3 |
| 4.5 | 1 |
| 4.6 | 4 |
| 4.7 | 2 |
| 4.8 | 5 |
| 4.9 | 6 |
| 5 | 10 |
| 5.1 | 9 |
| 5.2 | 4 |
| 5.3 | 1 |
| 5.4 | 6 |
| 5.5 | 7 |
| 5.6 | 6 |
| 5.7 | 8 |
| 5.8 | 7 |
| 5.9 | 3 |
| 6 | 6 |
| 6.1 | 6 |
| 6.2 | 4 |
| 6.3 | 9 |
| 6.4 | 7 |
| 6.5 | 5 |
| 6.6 | 2 |
| 6.7 | 8 |
| 6.8 | 3 |
| 6.9 | 4 |
| 7 | 1 |
| 7.1 | 1 |
| 7.2 | 3 |
| 7.3 | 1 |
| 7.4 | 1 |
| 7.6 | 1 |
| 7.7 | 4 |
| 7.9 | 1 |
kable(table(iris$Sepal.Width))
| Var1 | Freq |
|---|---|
| 2 | 1 |
| 2.2 | 3 |
| 2.3 | 4 |
| 2.4 | 3 |
| 2.5 | 8 |
| 2.6 | 5 |
| 2.7 | 9 |
| 2.8 | 14 |
| 2.9 | 10 |
| 3 | 26 |
| 3.1 | 11 |
| 3.2 | 13 |
| 3.3 | 6 |
| 3.4 | 12 |
| 3.5 | 6 |
| 3.6 | 4 |
| 3.7 | 3 |
| 3.8 | 6 |
| 3.9 | 2 |
| 4 | 1 |
| 4.1 | 1 |
| 4.2 | 1 |
| 4.4 | 1 |
kable(table(iris$Petal.Length))
| Var1 | Freq |
|---|---|
| 1 | 1 |
| 1.1 | 1 |
| 1.2 | 2 |
| 1.3 | 7 |
| 1.4 | 13 |
| 1.5 | 13 |
| 1.6 | 7 |
| 1.7 | 4 |
| 1.9 | 2 |
| 3 | 1 |
| 3.3 | 2 |
| 3.5 | 2 |
| 3.6 | 1 |
| 3.7 | 1 |
| 3.8 | 1 |
| 3.9 | 3 |
| 4 | 5 |
| 4.1 | 3 |
| 4.2 | 4 |
| 4.3 | 2 |
| 4.4 | 4 |
| 4.5 | 8 |
| 4.6 | 3 |
| 4.7 | 5 |
| 4.8 | 4 |
| 4.9 | 5 |
| 5 | 4 |
| 5.1 | 8 |
| 5.2 | 2 |
| 5.3 | 2 |
| 5.4 | 2 |
| 5.5 | 3 |
| 5.6 | 6 |
| 5.7 | 3 |
| 5.8 | 3 |
| 5.9 | 2 |
| 6 | 2 |
| 6.1 | 3 |
| 6.3 | 1 |
| 6.4 | 1 |
| 6.6 | 1 |
| 6.7 | 2 |
| 6.9 | 1 |
kable(table(iris$Petal.Width))
| Var1 | Freq |
|---|---|
| 0.1 | 5 |
| 0.2 | 29 |
| 0.3 | 7 |
| 0.4 | 7 |
| 0.5 | 1 |
| 0.6 | 1 |
| 1 | 7 |
| 1.1 | 3 |
| 1.2 | 5 |
| 1.3 | 13 |
| 1.4 | 8 |
| 1.5 | 12 |
| 1.6 | 4 |
| 1.7 | 2 |
| 1.8 | 12 |
| 1.9 | 5 |
| 2 | 6 |
| 2.1 | 6 |
| 2.2 | 3 |
| 2.3 | 8 |
| 2.4 | 3 |
| 2.5 | 3 |
kable(table(iris$Species))
| Var1 | Freq |
|---|---|
| setosa | 50 |
| versicolor | 50 |
| virginica | 50 |
#Tablas frecuencia relativa IRIS
kable(prop.table(iris$Sepal.Length))
| x |
|---|
| 0.0058186 |
| 0.0055904 |
| 0.0053622 |
| 0.0052481 |
| 0.0057045 |
| 0.0061609 |
| 0.0052481 |
| 0.0057045 |
| 0.0050200 |
| 0.0055904 |
| 0.0061609 |
| 0.0054763 |
| 0.0054763 |
| 0.0049059 |
| 0.0066172 |
| 0.0065031 |
| 0.0061609 |
| 0.0058186 |
| 0.0065031 |
| 0.0058186 |
| 0.0061609 |
| 0.0058186 |
| 0.0052481 |
| 0.0058186 |
| 0.0054763 |
| 0.0057045 |
| 0.0057045 |
| 0.0059327 |
| 0.0059327 |
| 0.0053622 |
| 0.0054763 |
| 0.0061609 |
| 0.0059327 |
| 0.0062750 |
| 0.0055904 |
| 0.0057045 |
| 0.0062750 |
| 0.0055904 |
| 0.0050200 |
| 0.0058186 |
| 0.0057045 |
| 0.0051341 |
| 0.0050200 |
| 0.0057045 |
| 0.0058186 |
| 0.0054763 |
| 0.0058186 |
| 0.0052481 |
| 0.0060468 |
| 0.0057045 |
| 0.0079863 |
| 0.0073018 |
| 0.0078722 |
| 0.0062750 |
| 0.0074159 |
| 0.0065031 |
| 0.0071877 |
| 0.0055904 |
| 0.0075299 |
| 0.0059327 |
| 0.0057045 |
| 0.0067313 |
| 0.0068454 |
| 0.0069595 |
| 0.0063890 |
| 0.0076440 |
| 0.0063890 |
| 0.0066172 |
| 0.0070736 |
| 0.0063890 |
| 0.0067313 |
| 0.0069595 |
| 0.0071877 |
| 0.0069595 |
| 0.0073018 |
| 0.0075299 |
| 0.0077581 |
| 0.0076440 |
| 0.0068454 |
| 0.0065031 |
| 0.0062750 |
| 0.0062750 |
| 0.0066172 |
| 0.0068454 |
| 0.0061609 |
| 0.0068454 |
| 0.0076440 |
| 0.0071877 |
| 0.0063890 |
| 0.0062750 |
| 0.0062750 |
| 0.0069595 |
| 0.0066172 |
| 0.0057045 |
| 0.0063890 |
| 0.0065031 |
| 0.0065031 |
| 0.0070736 |
| 0.0058186 |
| 0.0065031 |
| 0.0071877 |
| 0.0066172 |
| 0.0081004 |
| 0.0071877 |
| 0.0074159 |
| 0.0086708 |
| 0.0055904 |
| 0.0083286 |
| 0.0076440 |
| 0.0082145 |
| 0.0074159 |
| 0.0073018 |
| 0.0077581 |
| 0.0065031 |
| 0.0066172 |
| 0.0073018 |
| 0.0074159 |
| 0.0087849 |
| 0.0087849 |
| 0.0068454 |
| 0.0078722 |
| 0.0063890 |
| 0.0087849 |
| 0.0071877 |
| 0.0076440 |
| 0.0082145 |
| 0.0070736 |
| 0.0069595 |
| 0.0073018 |
| 0.0082145 |
| 0.0084427 |
| 0.0090131 |
| 0.0073018 |
| 0.0071877 |
| 0.0069595 |
| 0.0087849 |
| 0.0071877 |
| 0.0073018 |
| 0.0068454 |
| 0.0078722 |
| 0.0076440 |
| 0.0078722 |
| 0.0066172 |
| 0.0077581 |
| 0.0076440 |
| 0.0076440 |
| 0.0071877 |
| 0.0074159 |
| 0.0070736 |
| 0.0067313 |
kable(prop.table(iris$Sepal.Width))
| x |
|---|
| 0.0076319 |
| 0.0065416 |
| 0.0069778 |
| 0.0067597 |
| 0.0078500 |
| 0.0085041 |
| 0.0074139 |
| 0.0074139 |
| 0.0063236 |
| 0.0067597 |
| 0.0080680 |
| 0.0074139 |
| 0.0065416 |
| 0.0065416 |
| 0.0087222 |
| 0.0095944 |
| 0.0085041 |
| 0.0076319 |
| 0.0082861 |
| 0.0082861 |
| 0.0074139 |
| 0.0080680 |
| 0.0078500 |
| 0.0071958 |
| 0.0074139 |
| 0.0065416 |
| 0.0074139 |
| 0.0076319 |
| 0.0074139 |
| 0.0069778 |
| 0.0067597 |
| 0.0074139 |
| 0.0089403 |
| 0.0091583 |
| 0.0067597 |
| 0.0069778 |
| 0.0076319 |
| 0.0078500 |
| 0.0065416 |
| 0.0074139 |
| 0.0076319 |
| 0.0050153 |
| 0.0069778 |
| 0.0076319 |
| 0.0082861 |
| 0.0065416 |
| 0.0082861 |
| 0.0069778 |
| 0.0080680 |
| 0.0071958 |
| 0.0069778 |
| 0.0069778 |
| 0.0067597 |
| 0.0050153 |
| 0.0061055 |
| 0.0061055 |
| 0.0071958 |
| 0.0052333 |
| 0.0063236 |
| 0.0058875 |
| 0.0043611 |
| 0.0065416 |
| 0.0047972 |
| 0.0063236 |
| 0.0063236 |
| 0.0067597 |
| 0.0065416 |
| 0.0058875 |
| 0.0047972 |
| 0.0054514 |
| 0.0069778 |
| 0.0061055 |
| 0.0054514 |
| 0.0061055 |
| 0.0063236 |
| 0.0065416 |
| 0.0061055 |
| 0.0065416 |
| 0.0063236 |
| 0.0056694 |
| 0.0052333 |
| 0.0052333 |
| 0.0058875 |
| 0.0058875 |
| 0.0065416 |
| 0.0074139 |
| 0.0067597 |
| 0.0050153 |
| 0.0065416 |
| 0.0054514 |
| 0.0056694 |
| 0.0065416 |
| 0.0056694 |
| 0.0050153 |
| 0.0058875 |
| 0.0065416 |
| 0.0063236 |
| 0.0063236 |
| 0.0054514 |
| 0.0061055 |
| 0.0071958 |
| 0.0058875 |
| 0.0065416 |
| 0.0063236 |
| 0.0065416 |
| 0.0065416 |
| 0.0054514 |
| 0.0063236 |
| 0.0054514 |
| 0.0078500 |
| 0.0069778 |
| 0.0058875 |
| 0.0065416 |
| 0.0054514 |
| 0.0061055 |
| 0.0069778 |
| 0.0065416 |
| 0.0082861 |
| 0.0056694 |
| 0.0047972 |
| 0.0069778 |
| 0.0061055 |
| 0.0061055 |
| 0.0058875 |
| 0.0071958 |
| 0.0069778 |
| 0.0061055 |
| 0.0065416 |
| 0.0061055 |
| 0.0065416 |
| 0.0061055 |
| 0.0082861 |
| 0.0061055 |
| 0.0061055 |
| 0.0056694 |
| 0.0065416 |
| 0.0074139 |
| 0.0067597 |
| 0.0065416 |
| 0.0067597 |
| 0.0067597 |
| 0.0067597 |
| 0.0058875 |
| 0.0069778 |
| 0.0071958 |
| 0.0065416 |
| 0.0054514 |
| 0.0065416 |
| 0.0074139 |
| 0.0065416 |
kable(prop.table(iris$Petal.Length))
| x |
|---|
| 0.0024836 |
| 0.0024836 |
| 0.0023062 |
| 0.0026610 |
| 0.0024836 |
| 0.0030158 |
| 0.0024836 |
| 0.0026610 |
| 0.0024836 |
| 0.0026610 |
| 0.0026610 |
| 0.0028384 |
| 0.0024836 |
| 0.0019514 |
| 0.0021288 |
| 0.0026610 |
| 0.0023062 |
| 0.0024836 |
| 0.0030158 |
| 0.0026610 |
| 0.0030158 |
| 0.0026610 |
| 0.0017740 |
| 0.0030158 |
| 0.0033706 |
| 0.0028384 |
| 0.0028384 |
| 0.0026610 |
| 0.0024836 |
| 0.0028384 |
| 0.0028384 |
| 0.0026610 |
| 0.0026610 |
| 0.0024836 |
| 0.0026610 |
| 0.0021288 |
| 0.0023062 |
| 0.0024836 |
| 0.0023062 |
| 0.0026610 |
| 0.0023062 |
| 0.0023062 |
| 0.0023062 |
| 0.0028384 |
| 0.0033706 |
| 0.0024836 |
| 0.0028384 |
| 0.0024836 |
| 0.0026610 |
| 0.0024836 |
| 0.0083378 |
| 0.0079830 |
| 0.0086926 |
| 0.0070960 |
| 0.0081604 |
| 0.0079830 |
| 0.0083378 |
| 0.0058542 |
| 0.0081604 |
| 0.0069186 |
| 0.0062090 |
| 0.0074508 |
| 0.0070960 |
| 0.0083378 |
| 0.0063864 |
| 0.0078056 |
| 0.0079830 |
| 0.0072734 |
| 0.0079830 |
| 0.0069186 |
| 0.0085152 |
| 0.0070960 |
| 0.0086926 |
| 0.0083378 |
| 0.0076282 |
| 0.0078056 |
| 0.0085152 |
| 0.0088700 |
| 0.0079830 |
| 0.0062090 |
| 0.0067412 |
| 0.0065638 |
| 0.0069186 |
| 0.0090474 |
| 0.0079830 |
| 0.0079830 |
| 0.0083378 |
| 0.0078056 |
| 0.0072734 |
| 0.0070960 |
| 0.0078056 |
| 0.0081604 |
| 0.0070960 |
| 0.0058542 |
| 0.0074508 |
| 0.0074508 |
| 0.0074508 |
| 0.0076282 |
| 0.0053220 |
| 0.0072734 |
| 0.0106440 |
| 0.0090474 |
| 0.0104666 |
| 0.0099344 |
| 0.0102892 |
| 0.0117084 |
| 0.0079830 |
| 0.0111762 |
| 0.0102892 |
| 0.0108214 |
| 0.0090474 |
| 0.0094022 |
| 0.0097570 |
| 0.0088700 |
| 0.0090474 |
| 0.0094022 |
| 0.0097570 |
| 0.0118858 |
| 0.0122406 |
| 0.0088700 |
| 0.0101118 |
| 0.0086926 |
| 0.0118858 |
| 0.0086926 |
| 0.0101118 |
| 0.0106440 |
| 0.0085152 |
| 0.0086926 |
| 0.0099344 |
| 0.0102892 |
| 0.0108214 |
| 0.0113536 |
| 0.0099344 |
| 0.0090474 |
| 0.0099344 |
| 0.0108214 |
| 0.0099344 |
| 0.0097570 |
| 0.0085152 |
| 0.0095796 |
| 0.0099344 |
| 0.0090474 |
| 0.0090474 |
| 0.0104666 |
| 0.0101118 |
| 0.0092248 |
| 0.0088700 |
| 0.0092248 |
| 0.0095796 |
| 0.0090474 |
kable(prop.table(iris$Petal.Width))
| x |
|---|
| 0.0011117 |
| 0.0011117 |
| 0.0011117 |
| 0.0011117 |
| 0.0011117 |
| 0.0022235 |
| 0.0016676 |
| 0.0011117 |
| 0.0011117 |
| 0.0005559 |
| 0.0011117 |
| 0.0011117 |
| 0.0005559 |
| 0.0005559 |
| 0.0011117 |
| 0.0022235 |
| 0.0022235 |
| 0.0016676 |
| 0.0016676 |
| 0.0016676 |
| 0.0011117 |
| 0.0022235 |
| 0.0011117 |
| 0.0027793 |
| 0.0011117 |
| 0.0011117 |
| 0.0022235 |
| 0.0011117 |
| 0.0011117 |
| 0.0011117 |
| 0.0011117 |
| 0.0022235 |
| 0.0005559 |
| 0.0011117 |
| 0.0011117 |
| 0.0011117 |
| 0.0011117 |
| 0.0005559 |
| 0.0011117 |
| 0.0011117 |
| 0.0016676 |
| 0.0016676 |
| 0.0011117 |
| 0.0033352 |
| 0.0022235 |
| 0.0016676 |
| 0.0011117 |
| 0.0011117 |
| 0.0011117 |
| 0.0011117 |
| 0.0077821 |
| 0.0083380 |
| 0.0083380 |
| 0.0072262 |
| 0.0083380 |
| 0.0072262 |
| 0.0088938 |
| 0.0055586 |
| 0.0072262 |
| 0.0077821 |
| 0.0055586 |
| 0.0083380 |
| 0.0055586 |
| 0.0077821 |
| 0.0072262 |
| 0.0077821 |
| 0.0083380 |
| 0.0055586 |
| 0.0083380 |
| 0.0061145 |
| 0.0100056 |
| 0.0072262 |
| 0.0083380 |
| 0.0066704 |
| 0.0072262 |
| 0.0077821 |
| 0.0077821 |
| 0.0094497 |
| 0.0083380 |
| 0.0055586 |
| 0.0061145 |
| 0.0055586 |
| 0.0066704 |
| 0.0088938 |
| 0.0083380 |
| 0.0088938 |
| 0.0083380 |
| 0.0072262 |
| 0.0072262 |
| 0.0072262 |
| 0.0066704 |
| 0.0077821 |
| 0.0066704 |
| 0.0055586 |
| 0.0072262 |
| 0.0066704 |
| 0.0072262 |
| 0.0072262 |
| 0.0061145 |
| 0.0072262 |
| 0.0138966 |
| 0.0105614 |
| 0.0116732 |
| 0.0100056 |
| 0.0122290 |
| 0.0116732 |
| 0.0094497 |
| 0.0100056 |
| 0.0100056 |
| 0.0138966 |
| 0.0111173 |
| 0.0105614 |
| 0.0116732 |
| 0.0111173 |
| 0.0133407 |
| 0.0127849 |
| 0.0100056 |
| 0.0122290 |
| 0.0127849 |
| 0.0083380 |
| 0.0127849 |
| 0.0111173 |
| 0.0111173 |
| 0.0100056 |
| 0.0116732 |
| 0.0100056 |
| 0.0100056 |
| 0.0100056 |
| 0.0116732 |
| 0.0088938 |
| 0.0105614 |
| 0.0111173 |
| 0.0122290 |
| 0.0083380 |
| 0.0077821 |
| 0.0127849 |
| 0.0133407 |
| 0.0100056 |
| 0.0100056 |
| 0.0116732 |
| 0.0133407 |
| 0.0127849 |
| 0.0105614 |
| 0.0127849 |
| 0.0138966 |
| 0.0127849 |
| 0.0105614 |
| 0.0111173 |
| 0.0127849 |
| 0.0100056 |
#Al hacer kable(prop.table(iris$Species)) da error
• 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?
#Tablas frecuencia absoluta
kable(table(Orange$Tree))
| Var1 | Freq |
|---|---|
| 3 | 7 |
| 1 | 7 |
| 5 | 7 |
| 2 | 7 |
| 4 | 7 |
kable(table(Orange$age))
| Var1 | Freq |
|---|---|
| 118 | 5 |
| 484 | 5 |
| 664 | 5 |
| 1004 | 5 |
| 1231 | 5 |
| 1372 | 5 |
| 1582 | 5 |
kable(table(Orange$circumference))
| Var1 | Freq |
|---|---|
| 30 | 3 |
| 32 | 1 |
| 33 | 1 |
| 49 | 1 |
| 51 | 1 |
| 58 | 1 |
| 62 | 1 |
| 69 | 1 |
| 75 | 1 |
| 81 | 1 |
| 87 | 1 |
| 108 | 1 |
| 111 | 1 |
| 112 | 1 |
| 115 | 2 |
| 120 | 1 |
| 125 | 1 |
| 139 | 1 |
| 140 | 1 |
| 142 | 2 |
| 145 | 1 |
| 156 | 1 |
| 167 | 1 |
| 172 | 1 |
| 174 | 1 |
| 177 | 1 |
| 179 | 1 |
| 203 | 2 |
| 209 | 1 |
| 214 | 1 |
#Tablas frecuencia relativa
#kable(prop.table(Orange$Tree))
#kable(prop.table(Orange$age))
#kable(prop.table(Orange$circumference))
#Directamente no me deja hacer las tablas de frecuencias relativas de Orange
• Generar una tabla de doble entrada entre las variables Tree y Age de Orange.
tabla1<-table(Orange$Tree, Orange$age, useNA="ifany")
tabla1
##
## 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
Copiad y ejecutad el código siguiente de los dos vectores. 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.
vect1 <- c(1,2,1,2,1,2,1,2,1,2,1,1,1,1,2,2,1,1,2,1)
library(car)
## Loading required package: carData
library(dplyr)
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:car':
##
## recode
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
Bajo_peso<-factor(vect1, levels=c(1,2), labels=c("Bajo Peso", "Peso Normal")) #Renombrar etiquetas variable
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
vect2 <- c(1,1,2,2,2,1,2,1,1,2,1,2,1,1,1,2,1,1,1,1)
library(car)
library(dplyr)
Fumador<-factor(vect2, levels=c(1,2), labels=c("Fuma", "No fuma")) #Renombrar etiquetas variable
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
tabla2<-table(Bajo_peso, Fumador) #Crear la tabla
tabla2
## Fumador
## Bajo_peso Fuma No fuma
## Bajo Peso 8 4
## Peso Normal 5 3
chisq.test(tabla2) #Prueba del ji cuadrado
## Warning in chisq.test(tabla2): Chi-squared approximation may be incorrect
##
## Pearson's Chi-squared test with Yates' continuity correction
##
## data: tabla2
## X-squared = 0, df = 1, p-value = 1
fisher.test(tabla2) #Test de Fisher
##
## Fisher's Exact Test for Count Data
##
## data: tabla2
## 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
data("airquality")
plot(airquality$Ozone, col="blue", pch="#") #Gráfico de dispersión
boxplot(airquality$Temp, main="Temperatura (en grados Farenheit)") #Boxplot
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).
data("airmiles")
plot(airmiles, main="Datos de pasajeros en vuelos comerciales (en miles)", col="cadetblue2", xlab="Miles de pasajeros") #Gráfico de líneas
hist(airmiles, col="chocolate2") #Histograma
par(mfrow=c(2,2)) #Poner los 4 gráficos anteriores juntos
plot(airquality$Ozone, col="blue", pch="#")
boxplot(airquality$Temp, main="Temperatura (en grados Farenheit)")
plot(airmiles, main="Datos de pasajeros en vuelos comerciales (en miles)", col="cadetblue2", xlab="Miles de pasajeros")
hist(airmiles, col="chocolate2")
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(123)
x1<-rnorm(400) #Variable 1
y1<-rnorm(400)-x1 #Variable 2
plot(x1, y1, main="Gráfico de dispersión", abline(lm(y1~x1)), col="coral", pch=2) #Gráfico dispersión con recta de regresión
plot(density(x1), col="coral", main="Densidad de x1") #Gráfico densidad x1
lines(density(y1), col="darkorchid") #Gráfico densidad de las 2 variables
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).
library(ggplot2)
data("airquality")
#Gráfico de dispersión con regresión lineal incluida
ggplot(airquality, aes(x = Ozone, y = Temp)) +
geom_point() +
geom_smooth(method = "lm", color="darkred") +
labs(title = "Gráfico de Dispersión de Ozone vs. Temp",
x = "Ozono",
y = "Temperatura")
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 37 rows containing non-finite outside the scale range
## (`stat_smooth()`).
## Warning: Removed 37 rows containing missing values or values outside the scale range
## (`geom_point()`).
airquality$Month<-factor(airquality$Month)
#Gráfico dispersión de puntos con los calores asociados según el mes
ggplot(airquality, aes(x = Solar.R, y = Temp, color=Month, shape=Month)) +
geom_point() +
labs(title = "Gráfico de Dispersión de Solar.R vs. Temp",
x = "Solar.R",
y = "Temperatura") +
scale_color_discrete(name = "Month") +
scale_shape_discrete(name = "Month")
## Warning: Removed 7 rows containing missing values or values outside the scale range
## (`geom_point()`).
library(MASS)
##
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
##
## select
ggplot(birthwt, aes(age)) +
geom_histogram(color = "black", fill = "blue")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
ggplot(birthwt, aes(age)) +
geom_histogram()+
facet_grid(~smoke) #Gráficos separados según la variable smoke.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
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.
library(datasets)
data(trees)
migrafic1<-ggplot(data = trees, aes(x = Height, y = Volume)) +
geom_point() #Crear el gráfico
ggsave("migrafic1.jpg", plot = migrafic1, width = 6, height = 4, dpi = 300) #Guardar como .jpg
ggsave("migrafic2.pdf", plot = migrafic1, width = 6, height = 4) #Guardar como pdf
{width=width height=height}
{width=width height=height} ## 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.
library(knitr)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ lubridate 1.9.3 ✔ tibble 3.2.1
## ✔ purrr 1.0.2 ✔ tidyr 1.3.1
## ✔ readr 2.1.5
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ✖ dplyr::recode() masks car::recode()
## ✖ MASS::select() masks dplyr::select()
## ✖ purrr::some() masks car::some()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
#Datos
data("Orange")
head(Orange)
## Grouped Data: circumference ~ age | Tree
## Tree age circumference
## 1 1 118 30
## 2 1 484 58
## 3 1 664 87
## 4 1 1004 115
## 5 1 1231 120
## 6 1 1372 142
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
pairs(Orange)
#Correlació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 lineal
modelreg<-lm(circumference~age, data=Orange)
summary(modelreg)
##
## 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
#Gráfica con recta de regresión lineal
plot(Orange$age, Orange$circumference)
abline(modelreg)
#Valores ajustados vs residuos
residuos<-rstandard(modelreg)
valores.ajustados<-fitted(modelreg)
#QQplot
qqnorm(residuos)
qqline(residuos)
#Predicción para una 600 días.
edad<-600
predic_circum<-17.399650 + edad*0.106770
print(predic_circum)
## [1] 81.46165
Repetid los gráficos (aquellos que podáis) de la regresión lineal simple del ejercicio anterior pero ahora con ggplot2.
ggplot(Orange, aes(x = age, y = circumference)) +
geom_point() +
labs(title = "Gráfico de Dispersión de Edad (días) vs. Circumferencia",
x = "Edad(días)",
y = "Circumferencia") +
geom_smooth(method = "lm")
## `geom_smooth()` using formula = 'y ~ x'
datos2<-data.frame(valores.ajustados, residuos)
ggplot(datos2, aes(x = valores.ajustados, y = residuos)) +
geom_point() +
labs(x = "Valores ajustados",
y = "Residuos")
ggplot(Orange, aes(x = age, y = circumference)) +
geom_point() +
labs(title = "Predicción",
x = "Edad(días)",
y = "Circumferencia") +
geom_abline(intercept=17.399650,
slope=0.106770,
col="coral") +
geom_vline(xintercept=600,
col="darkorchid")
Activad el conjunto de datos PlantGrowth del paquete datasets de R. Este archivo tiene los resultados 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?
library(datasets)
#Datos
data("PlantGrowth")
summary(PlantGrowth)
## weight group
## Min. :3.590 ctrl:10
## 1st Qu.:4.550 trt1:10
## Median :5.155 trt2:10
## Mean :5.073
## 3rd Qu.:5.530
## Max. :6.310
library(psych)
##
## Attaching package: 'psych'
## The following objects are masked from 'package:ggplot2':
##
## %+%, alpha
## The following object is masked from 'package:car':
##
## logit
describeBy(PlantGrowth$weight, PlantGrowth$group)
##
## Descriptive statistics by group
## group: ctrl
## vars n mean sd median trimmed mad min max range skew kurtosis se
## X1 1 10 5.03 0.58 5.15 5 0.72 4.17 6.11 1.94 0.23 -1.12 0.18
## ------------------------------------------------------------
## group: trt1
## vars n mean sd median trimmed mad min max range skew kurtosis se
## X1 1 10 4.66 0.79 4.55 4.62 0.53 3.59 6.03 2.44 0.47 -1.1 0.25
## ------------------------------------------------------------
## group: trt2
## vars n mean sd median trimmed mad min max range skew kurtosis se
## X1 1 10 5.53 0.44 5.44 5.5 0.36 4.92 6.31 1.39 0.48 -1.16 0.14
boxplot(PlantGrowth$weight ~ PlantGrowth$group, col=palette.colors())
#Test de Shapiro
by(PlantGrowth$weight, PlantGrowth$group, shapiro.test)
## PlantGrowth$group: ctrl
##
## Shapiro-Wilk normality test
##
## data: dd[x, ]
## W = 0.95668, p-value = 0.7475
##
## ------------------------------------------------------------
## PlantGrowth$group: trt1
##
## Shapiro-Wilk normality test
##
## data: dd[x, ]
## W = 0.93041, p-value = 0.4519
##
## ------------------------------------------------------------
## PlantGrowth$group: trt2
##
## Shapiro-Wilk normality test
##
## data: dd[x, ]
## W = 0.94101, p-value = 0.5643
#Test homocedasticidad
bartlett.test(PlantGrowth$weight, PlantGrowth$group)
##
## Bartlett test of homogeneity of variances
##
## data: PlantGrowth$weight and PlantGrowth$group
## Bartlett's K-squared = 2.8786, df = 2, p-value = 0.2371
#ANOVA
model_anov<-aov(weight ~ group, data=PlantGrowth)
summary(model_anov)
## Df Sum Sq Mean Sq F value Pr(>F)
## group 2 3.766 1.8832 4.846 0.0159 *
## Residuals 27 10.492 0.3886
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Comparaciones múltiples
TukeyHSD(model_anov)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = weight ~ group, data = PlantGrowth)
##
## $group
## diff lwr upr p adj
## trt1-ctrl -0.371 -1.0622161 0.3202161 0.3908711
## trt2-ctrl 0.494 -0.1972161 1.1852161 0.1979960
## trt2-trt1 0.865 0.1737839 1.5562161 0.0120064
En los resultados vemos que sí hay diferencias significativas entre grupos (p-value=0.0159<0.05). Mientras que no vemos diferencias entre el control y ninguno de los 2 tratamientos (trat1 o trat2), sí que vemos diferencias signficativas al hacer comparación entre trt1 y trt2 (p-value=0.012). Esto lo hemos podido ver gracias a hacer comparaciones múltiples post hoc de Tukey
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.
Plotly es un paquete de visualización de datos en R que permite crear gráficos interactivos de alta calidad. A través de la interfaz del paquete, los usuarios pueden crear gráficos interactivos de manera rápida y sencilla, lo que permite explorar y comunicar datos de una manera efectiva. Aquí tienes una descripción general de las características y funcionalidades principales de Plotly: -Gráficos Interactivos: Plotly permite crear gráficos interactivos que pueden ser explorados y manipulados directamente en la ventana del navegador. Esto incluye zoom, pan, selección, visualización de detalles y más. -Gran Variedad de Gráficos: Plotly admite una amplia gama de tipos de gráficos, incluyendo gráficos de dispersión, líneas, barras, histogramas, diagramas de caja, mapas de calor, diagramas de contorno y más. Además, puedes combinar múltiples tipos de gráficos en una sola visualización. -Personalización Avanzada: Los gráficos generados con Plotly son altamente personalizables. Puedes ajustar colores, tamaños, etiquetas, títulos, leyendas y otros aspectos visuales para adaptar el gráfico a tus necesidades específicas. -Soporte para Datos Grandes: Plotly está optimizado para manejar conjuntos de datos grandes y complejos. Puedes visualizar fácilmente grandes volúmenes de datos sin comprometer el rendimiento.
[Fuente] (https://plotly.com/r/)
library(plotly)
##
## Attaching package: '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
plot_ly(PlantGrowth, y = ~weight, type = "box", color = ~group) %>%
layout(title = "Peso de las plantas por grupo",
yaxis = list(title = "Peso de la planta"),
boxmode = "group")
## Warning: 'layout' objects don't have these attributes: 'boxmode'
## Valid attributes include:
## '_deprecated', 'activeshape', 'annotations', 'autosize', 'autotypenumbers', 'calendar', 'clickmode', 'coloraxis', 'colorscale', 'colorway', 'computed', 'datarevision', 'dragmode', 'editrevision', 'editType', 'font', 'geo', 'grid', 'height', 'hidesources', 'hoverdistance', 'hoverlabel', 'hovermode', 'images', 'legend', 'mapbox', 'margin', 'meta', 'metasrc', 'modebar', 'newshape', 'paper_bgcolor', 'plot_bgcolor', 'polar', 'scene', 'selectdirection', 'selectionrevision', 'separators', 'shapes', 'showlegend', 'sliders', 'smith', 'spikedistance', 'template', 'ternary', 'title', 'transition', 'uirevision', 'uniformtext', 'updatemenus', 'width', 'xaxis', 'yaxis', 'barmode', 'bargap', 'mapType'