# Correlations

You can use the **cor( )** function to produce correlations and the **c****ov( )** function to produces covariances.

A simplified format is **cor(x, use=, method= )** where

Option |
Description |

x |
Matrix or data frame |

use |
Specifies the handling of missing data. Options are all.obs (assumes no missing data - missing data will produce an error), complete.obs (listwise deletion), and pairwise.complete.obs (pairwise deletion) |

method |
Specifies the type of correlation.
Options are pearson, spearman or kendall. |

` # Correlations/covariances among numeric variables in `

# data frame mtcars. Use listwise deletion of missing data.

cor(mtcars, use="complete.obs", method="kendall")

cov(mtcars, use="complete.obs")

Unfortunately, neither **cor( ) **or **cov( )** produce tests of significance, although you can use the **cor.test( ) **function to test a single correlation coefficient.

The **rcorr( )** function in the **Hmisc** package produces correlations/covariances and significance levels for pearson and spearman correlations. However, input must be a matrix and pairwise deletion is used.

`# Correlations with significance levels`

library(Hmisc)

rcorr(x, type="pearson")
# type can be pearson or spearman

#mtcars is a data frame

rcorr(as.matrix(mtcars))

You can use the format **cor(X, Y) **or **rcorr(X, Y)** to generate correlations between the columns of X and the columns of Y. This similar to the VAR and WITH commands in **SAS** PROC CORR.

`# Correlation matrix from mtcars`

# with
mpg, cyl, and disp as rows

# and hp, drat, and wt as columns

x <- mtcars[1:3]

y <- mtcars[4:6]

cor(x, y)

## Other Types of Correlations

`# polychoric correlation`

# x is a contingency table of counts

library(polycor)

polychor(x)

# heterogeneous correlations in one matrix

#
pearson (numeric-numeric),

#
polyserial (numeric-ordinal),

# and polychoric (ordinal-ordinal)

# x is a data frame with
ordered factors

# and
numeric variables

library(polycor)

hetcor(x)

# partial correlations

library(ggm)

data(mydata)

pcor(c("a", "b", "x", "y", "z"), var(mydata))

# partial corr between a and b controlling for x, y, z

## Visualizing Correlations

Use **corrgram( ) **to plot correlograms .