Creción de boxplot utilizando ggplot.

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

Graficas de barra

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

Scatter plot

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

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.

Shapiro-Wilk

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.

Regresion Lineal al 95%

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

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.

Anova

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

Tukey

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

Gráfico de Tukey

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