mayo 02, 2017

Correlación de Pearson


Las paginas 193~197 de Experimentación en Agricultura exponen la correlación de Pearson (r). Para eludir argumentos espurios, asegúrense de leer el numeral 2 de la página 196.


# Matrix de diagrama de dispersión usando 'ggplot2'
library(ggplot2)
ggplot(nitrogeno, aes(X1, X2)) + 
  geom_point(shape  = 21, 
             colour = "blue", 
             fill   = "white", 
             size   = 6, 
             stroke = 6) +
  labs(title = "Diagrama de dispersión y Correlación de Pearson") +
  ylab("% N en hoja") + 
  xlab("mg N/planta")



Visualizar la relación entre variables ayuda a comprender mejor interacciones y resultados de correlación, la Figura 14.1 (página 193) muestra cómo cambian los valores de r, al separarse o unirse los puntos.


Códigos en R


#***********************************************************
# EXPERIMENTACIÓN EN AGRICULTURA                              
# Fernández Escobar, R.; Trapero, A.; Domínguez, J. 2010       
#  CAPÍTULO 14: CORRELACIÓN LINEAL (páginas 193 - 197)
#************************************************************

# Importar datos de la hoja de cálculo 2 de Excel
library(xlsx)
nitrogeno <- read.xlsx("C:/Users/Administrator/Desktop/tabla 14.1.xlsx", 2)
knitr::kable(nitrogeno)
GRUPOX1X2
1390.61.79
2376.71.58
3524.92.20
4502.82.52
5371.41.60
6494.82.61
71042.64.24
81168.95.12
attach(nitrogeno)
# Eliminando "GRUPO" de tabla
nitrogeno <- data.frame(X1, X2)
knitr::kable(nitrogeno)
X1X2
390.61.79
376.71.58
524.92.20
502.82.52
371.41.60
494.82.61
1042.64.24
1168.95.12
# Matrix de diagrama de dispersión simple
source("C:/Users/Administrator/Desktop/panel.pearson.r") 
pairs(nitrogeno, 
      main = "Matrix de diagrama de dispersión y Correlación de Pearson", 
      pch  = 21, upper.panel=panel.pearson)

# Matrix de diagrama de dispersión usando 'ggplot2'
library(ggplot2)
ggplot(nitrogeno, aes(X1, X2)) + 
  geom_point(shape  = 21, 
             colour = "blue", 
             fill   = "white", 
             size   = 6, 
             stroke = 6) +
  labs(title = "Diagrama de dispersión y Correlación de Pearson") +
  ylab("% N en hoja") + 
  xlab("mg N/planta")
# Matrix de diagrama de dispersión usando 'GGally'
library(GGally)
ggpairs(nitrogeno)
# Correlación Producto-Momento de Pearson
cor(nitrogeno, method="pearson") # Matrix
##           X1        X2
## X1 1.0000000 0.9851747
## X2 0.9851747 1.0000000
cor(X1, X2, method="pearson") # Valor de correlación
## [1] 0.9851747
cor.test(X1, X2, method="pearson") #Correlación con nivel de significancia
## 
##  Pearson's product-moment correlation
## 
## data:  X1 and X2
## t = 14.067, df = 6, p-value = 8.056e-06
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.9173497 0.9974157
## sample estimates:
##       cor 
## 0.9851747
# Correlación usando el paquete 'Hmisc'
library(Hmisc)
rcorr(as.matrix(nitrogeno))
##      X1   X2
## X1 1.00 0.99
## X2 0.99 1.00
## 
## n= 8 
## 
## 
## P
##    X1 X2
## X1     0
## X2  0
rcorr(X1, X2, type="pearson") # 'type=' puede ser Correlación de Pearson o Spearman
##      x    y
## x 1.00 0.99
## y 0.99 1.00
## 
## n= 8 
## 
## 
## P
##   x  y 
## x     0
## y  0



Códigos en SAS



/***********************************************************
 EXPERIMENTACIÓN EN AGRICULTURA                            
 Fernández Escobar, R.; Trapero, A.; Domínguez, J. 2010    
 CAPÍTULO 14: CORRELACIÓN LINEAL (páginas 193 - 197)
************************************************************/

DATA nitrogeno;
INPUT GRUPO X1 X2;

LABEL
       GRUPO = 'Grupos de 5 plantas'
       X1       = 'mg N/planta'
       X2       = '% N en hoja';

DATALINES;
1 390.6  1.79
2 376.7  1.58
3 524.9  2.20
4 502.8  2.52
5 371.4  1.60
6 494.8  2.61
7 1042.6 4.24
8 1168.9 5.12
;

ODS HTML;
ODS RTF FILE  = 'C:\Users\Administrator\Desktop\SASoutput-CORRELACION.rtf' STYLE= JOURNAL;
ODS GRAPHICS ON;


* Imprimir datos originales;
PROC PRINT DATA = nitrogeno;
RUN;


* Gráfico de dispersión (opción 1, empleando 'scattmat');
%include 'C:\Users\Administrator\Desktop\scattmat.sas'; *MACRO;
%scattmat(nitrogeno, X1 X2);


* Gráfico de dispersión (opción 2, empleando 'insight');
PROC INSIGHT DATA = nitrogeno;
       SCATTER X1 X2  *  X1 X2;
RUN;


* Gráfico de dispersión (opción 3, empleando 'gplot');
PROC GPLOT DATA = nitrogeno;
       PLOT X1*X2;
       TITLE 'Matrix de Correlación';
RUN;


* Correlación (Opción 1);
PROC CORR DATA = nitrogeno;
       TITLE 'Matrix de Correlación';
RUN;


* Correlación (Opción 2);
PROC CORR DATA = nitrogeno;
       VAR X1 X2;
RUN;


ODS GRAPHICS OFF;
ODS RTF CLOSE;
ODS HTML CLOSE;


-------------------------------------------------------------------------------



Excel emplea las funciones =CORREL(B2:B9,C2:C9), =PEARSON(B2:B9,C2:C9), o Correlation del ToolPak





En los archivos adjuntos, además de los datos y los códigos completos mostrados arriba, también incluimos un Macro (scattmat) para SAS y una función (panel.pearson) para R, ambos ofrecen otra alternativa de visualización. Deben descargarlos y colocarlos sobre el escritorio de su ordenador para poder correr análisis.






No hay comentarios:

Publicar un comentario