library(ggplot2)
Para utilizar este paquete se debe escribir: ggplot(nombre_archivo,aes(y=variable a graficar,x=eje)). Junto con ggplot se tienen otras opciones para utilizar como por ejemplo geom_boxplot que se utiliza para cambiar el aspecto de la gráfica. Tambien tenemos geom_point que se utiliza para mostrar los datos en forma de punots, se le puede poner la opción de jitter para que salgan dispersos, como tambien color, size, y alpha que controla la intencidad del color.
melodata <- read.csv("melocactus.csv", header = TRUE)
ggplot(melodata, aes(y = alturatotal, x = "0")) +
geom_boxplot(default = FALSE, fill="gray", color="black") +
geom_point(position = "jitter", size = 0.5, color="black", alpha=.5) +
labs(x = "Melocactus intortus", y = "Altura total de la planta (cm)")
## Warning: Ignoring unknown parameters: default
Se puede utilizar la gráfica de violin para conocer la distribución de los datos, de igual manera se pueden unir la gráfica de violin y el boxplot. Esta es una de las ventajas de utilizar el paquete de ggplot, que permite añadir elementos utilizando el simbolo de suma.
ggplot(melodata, aes(x="0", y=alturatotal)) +
geom_violin(fill="bisque3") +
geom_point(position = "jitter", color = "red", alpha = 0.5) +
labs(x = "Melocactus intortus", y = "Altura total de la planta (cm)")
ggplot(melodata, aes(x="0", y=alturatotal)) +
geom_violin(fill="lightblue") +
geom_point(position = "jitter", color = "blue", alpha = 0.5) +
labs(x = "Melocactus intortus", y = "Altura total de la planta (cm)")+
geom_boxplot(default = FALSE, fill="gray", color="black", width=0.4)
## Warning: Ignoring unknown parameters: default
Para este ejercicio se utilizaron datos que ya R contiene. Para cargarlos:
load("Arthr.Rdata")
Se continuó usando el paquete de ggplot para realizar las gráficas de barra. Se puede utilizar geom_bar para editarlas. por ejemplo se puede poner stack(una encima de otra), dodge (separadas) y fill iguala ls graficas, y ves proporcion (fraccion).
Se le asigna un objeto a cada grafica que desea hacer.
A=ggplot(Arthritis, aes(x=Treatment, fill=Improved)) +
geom_bar(position="stack")
B=ggplot(Arthritis, aes(x=Treatment, fill=Improved)) +
geom_bar(position="dodge")
C=ggplot(Arthritis, aes(x=Treatment, fill=Improved)) +
geom_bar(position="fill")
Si deseas correr una grafica por separado solo debes escribir el objeto asignado (A,B,C) en el scrip.
Para realizar las gráficas de barras juntas se utilizó el paquete de cowplot. Se le
library(cowplot)
##
## Attaching package: 'cowplot'
## The following object is masked from 'package:ggplot2':
##
## ggsave
plot_grid(A, B, C, ncol = 2, labels = "AUTO")
Con la siguiente función se puede realizar un scatter plot simple. Se selecciona una X y Y en la ecuacion con los datos que quieres usar.
plot(women$height,women$weight)
##Pruebas Estadisticas Para las pruebas estadisticas se debe correr el siguiente paquete:
library(EnvStats)
##
## Attaching package: 'EnvStats'
## The following objects are masked from 'package:stats':
##
## predict, predict.lm
## The following object is masked from 'package:base':
##
## print.default
qqplot es para saber si los datos tienen una distribucion normal. Si los datos estan en la linea, hay una distribucion normal. Si los de los lados estan lejos, no importa, se puede asumir que es normal.
qqPlot(women$weight, add.line = TRUE, points.col = "blue", line.col = "red")
Estos datos tienen una distribución normal.
Prueba de normalidad para realizar a cada variable. Se obtiene el valor de p (probabilidad de cometer un error si recazas la hipotesis nula(los datos son normales)). Si p>0.05 no se puede rechazar la hipotesis nula, los datos son normales.
shapiro.test(women$weight)
##
## Shapiro-Wilk normality test
##
## data: women$weight
## W = 0.96036, p-value = 0.6986
Regresión : lm=(lineal model)
reg=lm(weight ~ height, data=women)
summary(reg)
##
## Call:
## lm(formula = weight ~ height, data = women)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.7333 -1.1333 -0.3833 0.7417 3.1167
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -87.51667 5.93694 -14.74 1.71e-09 ***
## height 3.45000 0.09114 37.85 1.09e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.525 on 13 degrees of freedom
## Multiple R-squared: 0.991, Adjusted R-squared: 0.9903
## F-statistic: 1433 on 1 and 13 DF, p-value: 1.091e-14
En Coeficiente, Estimate. Te dice la pendiente (1ra columna arriba) y el intercepto (1ra columna abajo). R ajustado dice lo que explica la variacion.
En geom_point se editan los puntos de los datos, con geom_smoth se puede cambiar los aspectos de la linea de regresion.
ggplot(data=women, aes(x=women$height, y=women$weight)) +
geom_point(pch=19, color="blue", size=2) +
geom_smooth(method="lm", color="red", linetype=2) +
labs(x="Height (inches)", y="Weight (lb)")
Residuales, para que sea error de verdad tienen que estar dispersos, sin tendencia..
plot(women$height,residuals(reg),
xlab="Height (in inches)",
ylab="residuals")
Estos datos no están dispersos, tienen una tendencia.
Para poder realizar una nova tienes que tener los datos en una columna y donde pertenecen en otra.
library(multcomp)
## Loading required package: mvtnorm
## Loading required package: survival
## Loading required package: TH.data
## Loading required package: MASS
##
## Attaching package: 'MASS'
## The following object is masked from 'package:EnvStats':
##
## boxcox
##
## Attaching package: 'TH.data'
## The following object is masked from 'package:MASS':
##
## geyser
library(car)
## Loading required package: carData
##
## Attaching package: 'car'
## The following object is masked from 'package:EnvStats':
##
## qqPlot
data("cholesterol")
attach(cholesterol)
table(trt)
## trt
## 1time 2times 4times drugD drugE
## 10 10 10 10 10
fit=aov(response ~ trt)
summary(fit)
## Df Sum Sq Mean Sq F value Pr(>F)
## trt 4 1351.4 337.8 32.43 9.82e-13 ***
## Residuals 45 468.8 10.4
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Para poder correr una prueba tukey tienes que correr la anova primero.
TukeyHSD(fit)
## Tukey multiple comparisons of means
## 95% family-wise confidence level
##
## Fit: aov(formula = response ~ trt)
##
## $trt
## diff lwr upr p adj
## 2times-1time 3.44300 -0.6582817 7.544282 0.1380949
## 4times-1time 6.59281 2.4915283 10.694092 0.0003542
## drugD-1time 9.57920 5.4779183 13.680482 0.0000003
## drugE-1time 15.16555 11.0642683 19.266832 0.0000000
## 4times-2times 3.14981 -0.9514717 7.251092 0.2050382
## drugD-2times 6.13620 2.0349183 10.237482 0.0009611
## drugE-2times 11.72255 7.6212683 15.823832 0.0000000
## drugD-4times 2.98639 -1.1148917 7.087672 0.2512446
## drugE-4times 8.57274 4.4714583 12.674022 0.0000037
## drugE-drugD 5.58635 1.4850683 9.687632 0.0030633
Todas las lineas que cortan el 0 son iguales, los otros son diferentes.
par(las=2)
par(mar=c(5,8,4,2))
plot(TukeyHSD(fit))