# Correlation and Dependence

The limitations of linear correlation are well known. Often one uses
correlation, when dependence is the intended measure for defining the
relationship between variables. NNS dependence
`NNS.dep`

is a signal:noise measure robust
to nonlinear signals.

Below are some examples comparing NNS correlation
`NNS.cor`

and
`NNS.dep`

with the standard Pearsonâ€™s
correlation coefficient `cor`

.

## Linear Equivalence

Note the fact that all observations occupy the co-partial moment
quadrants.

`x = seq(0, 3, .01) ; y = 2 * x`

`## [1] 1`

```
## $Correlation
## [1] 1
##
## $Dependence
## [1] 1
```

## Nonlinear Relationship

Note the fact that all observations occupy the co-partial moment
quadrants.

`x = seq(0, 3, .01) ; y = x ^ 10`

`## [1] 0.6610183`

```
## $Correlation
## [1] 0.9325653
##
## $Dependence
## [1] 0.9325653
```

## Cyclic Relationship

Even the difficult inflection points, which span both the co- and
divergent partial moment quadrants, are properly compensated for in
`NNS.dep`

.

`x = seq(0, 12*pi, pi/100) ; y = sin(x)`

`## [1] -0.1297766`

```
## $Correlation
## [1] -0.0002077384
##
## $Dependence
## [1] 0.8938585
```

## Dependence

Note the fact that all observations occupy only co- or divergent
partial moment quadrants for a given subquadrant.

```
set.seed(123)
df <- data.frame(x = runif(10000, -1, 1), y = runif(10000, -1, 1))
df <- subset(df, (x ^ 2 + y ^ 2 <= 1 & x ^ 2 + y ^ 2 >= 0.95))
```

```
## $Correlation
## [1] 0.05741863
##
## $Dependence
## [1] 0.2282347
```

# p-values for `NNS.dep()`

p-values and confidence intervals can be obtained from sampling
random permutations of \(y \rightarrow
y_p\) and running `NNS.dep(x,$y_p$)`

to compare against a null hypothesis of 0 correlation, or independence
between \((x, y)\).

Simply set
`NNS.dep(..., p.value = TRUE, print.map = TRUE)`

to run 100 permutations and plot the results.

```
## p-values for [NNS.dep]
x <- seq(-5, 5, .1); y <- x^2 + rnorm(length(x))
```

`NNS.dep(x, y, p.value = TRUE, print.map = TRUE)`

```
## $Correlation
## [1] -0.03697032
##
## $`Correlation p.value`
## [1] 0.23
##
## $`Correlation 95% CIs`
## 2.5% 97.5%
## -0.1649756 0.3423353
##
## $Dependence
## [1] 0.8373177
##
## $`Dependence p.value`
## [1] 0
##
## $`Dependence 95% CIs`
## 2.5% 97.5%
## 0.3414161 0.5663028
```

# Multivariate Dependence `NNS.copula()`

These partial moment insights permit us to extend the analysis to
multivariate instances and deliver a dependence measure \((D)\) such that \(D \in [0,1]\). This level of analysis is
simply impossible with Pearson or other rank based correlation methods,
which are restricted to bivariate cases.

```
set.seed(123)
x <- rnorm(1000); y <- rnorm(1000); z <- rnorm(1000)
NNS.copula(cbind(x, y, z), plot = TRUE, independence.overlay = TRUE)
```

`## [1] 0.1231362`