in

Estimación de la correlación no lineal en R

1RN1ra 6BTkQI5cDkCGkRqQ

Estimación de la correlación no lineal en R

Chitta Ranjan

19 de abril de 2019·5 min de lectura

En esta publicación, aprenderemos sobre el uso de una función de estimación de correlación no lineal en R. También veremos algunos ejemplos.

Fondo

Las estimaciones de correlación se utilizan comúnmente en varias aplicaciones de minería de datos. En mi experiencia, las correlaciones no lineales son bastante comunes en varios procesos. Debido a esto, los modelos no lineales, como SVM, se emplean para regresión, clasificación, etc. Sin embargo, no existen muchos enfoques para estimar correlaciones no lineales entre dos variables.

Correlaciones típicamente lineales son estimados. Sin embargo, los datos pueden tener una correlación no lineal pero poca o ninguna correlación lineal. En tales casos, las variables no linealmente correlacionadas a veces se pasan por alto durante la exploración de datos o la selección de variables en datos de alta dimensión.

Hemos desarrollado un nuevo estimador de correlación no lineal, nlcor. Este estimador es útil en la exploración de datos y también en la selección de variables para modelos predictivos no lineales, como SVM.

Instalando nlcor

Instalar nlcor en R, siga estos pasos:

  1. Instale el paquete devtools. Puede hacer esto desde CRAN. Puede hacerlo directamente en la consola R escribiendo,
> install.packages("devtools")

2. Cargue el paquete devtools.

> library(devtools) 

3. Instalar nlcor desde su repositorio de GitHub escribiendo esto en la consola de R.

> install_github("ProcessMiner/nlcor")

Estimador de correlación no lineal: nlcor

En este paquete, proporcionamos una implementación de un método de estimación de correlación no lineal utilizando un cálculo de correlación lineal local adaptativa en nlcor. La función nlcor devuelve la estimación de correlación no lineal, el valor p ajustado correspondiente y un gráfico opcional que visualiza las relaciones no lineales.

La estimación de la correlación estará entre 0 y 1. Cuanto mayor sea el valor, mayor será la correlación no lineal. A diferencia de las correlaciones lineales, un valor negativo no es válido aquí. Debido a múltiples cálculos de correlación local, el valor p neto de la estimación de correlación se ajusta (para evitar falsos positivos). El gráfico visualiza las correlaciones lineales locales.

A continuación, mostraremos su uso con algunos ejemplos. En los ejemplos dados, las correlaciones lineales entre x y y es pequeño, sin embargo, existe una correlación no lineal visible entre ellos. Este paquete contiene los datos de estos ejemplos y se puede utilizar para probar el paquete.

nlcor el paquete tiene pocas muestras x y y vectores que se demuestran en los siguientes ejemplos.

Primero, cargaremos el paquete.

> library(nlcor)

Ejemplo 1. Un dato con correlación cíclica no lineal.

> plot(x1, y1)
1*RN1ra 6BTkQI5cDkCGkRqQ

La correlación lineal de los datos es,

> cor(x1, y1)
[1] 0.008001837

Como era de esperar, la correlación es cercana a cero. Estimamos lo no lineal
correlación usando nlcor.

> c <- nlcor(x1, y1, plt = T)
> c$cor.estimate
[1] 0.8688784
> c$adjusted.p.value
[1] 0
> print(c$cor.plot)
1*c jgekAkYq7NZ j8xSM jA

El gráfico muestra las correlaciones lineales por partes presentes en los datos.

Ejemplo 2. Un dato con correlaciones lineales por partes no uniformes.

> plot(x2, y2)
1*lXuw7XtKUAk7jmwvSBnhUQ

La correlación lineal de los datos es,

> cor(x2, y2)
[1] 0.828596

La correlación lineal es bastante alta en estos datos. Sin embargo, hay
correlación no lineal significativa y más alta presente en los datos. Esta
los datos emulan el escenario donde la correlación cambia de dirección
después de un punto. A veces, ese punto de cambio está en el medio, lo que hace que
correlación lineal cercana a cero.
Aquí mostramos un ejemplo cuando el
El punto de cambio está descentrado para mostrar que la implementación funciona en
Casos no uniformes.

Estimamos la correlación no lineal usando nlcor.

> c <- nlcor(x2, y2, plt = T)
> c$cor.estimate
[1] 0.897205
> c$adjusted.p.value
[1] 0
> print(c$cor.plot)
1*quXk aYh6BR76HW6t4NTZA

Es visible desde la trama que nlcor podría estimar las correlaciones por partes en un escenario no uniforme. Además, la correlación no lineal resulta ser más alta que la correlación lineal.

Ejemplo 3. Un dato con variaciones de frecuencia mayores y múltiples.

> plot(x3, y3)
1*i emftu0FTlQg6AyP1Zz7g

La correlación lineal de los datos es,

> cor(x3, y3)
[1] -0.1337304

Se espera que la correlación lineal sea pequeña, aunque no cercana a cero debido a
a cierta linealidad.

Aquí mostramos que podemos refinar la granularidad de la correlación
cálculo.

En la configuración predeterminada, la salida de nlcor estarán,

> c <- nlcor(x3, y3, plt = T)
> c$cor.estimate
[1] 0.7090148
> c$adjusted.p.value
[1] 0
> print(c$cor.plot)
1*6cGoPvYKO1pFDDlBm3ydlg

Como puede verse en la figura, nlcor pasó por alto algunas de las relaciones locales. Podemos refinar la estimación de correlación cambiando el refine parámetro. El valor predeterminado de refine se establece en 0,5. Puede establecerse como cualquier valor entre 0 y 1. Un valor más alto impone un mayor refinamiento.

Sin embargo, un mayor refinamiento afecta negativamente al valor p. Es decir, la estimación de correlación resultante puede ser estadísticamente insignificante (similar al sobreajuste). Por lo tanto, se recomienda evitar el refinamiento excesivo.

Para estos datos, volvemos a ejecutar la estimación de correlación con refine = 0.9.

> c <- nlcor(x3, y3, refine = 0.9, plt = T)
> c$cor.estimate
[1] 0.8534956
> c$adjusted.p.value
[1] 2.531456e-06
> print(c$cor.plot)
Warning: Removed 148 rows containing missing values (geom_path).
1*sC z F3T7OsJbV182C0Lvw

Como puede verse en la figura, nlcor podría identificar las correlaciones granulares por partes. En estos datos, el valor p sigue siendo extremadamente pequeño; la correlación es Estadísticamente significante.

Resumen

Este paquete proporciona una implementación de una heurística eficiente para calcular las correlaciones no lineales entre vectores numéricos. La heurística funciona identificando de manera adaptativa múltiples regiones locales de correlaciones lineales para estimar la correlación no lineal general. Sus usos se demuestran aquí con algunos ejemplos.

Citación

  • Paquete ‘nlcor’: Calcular correlaciones no lineales

@artículo{ranjan2020packagenlcor,
title = {Paquete ‘nlcor’: Calcular correlaciones no lineales},
author = {Ranjan, Chitta y Najari, Vahab},
journal = {Research Gate},
año = {2020},
doi = {10.13140 / RG.2.2.33716.68480}
}

Chitta Ranjan y Vahab Najari. “Paquete ‘nlcor’: Calcular correlaciones no lineales”. En: Research Gate (2020) .doi: 10.13140 / RG.2.2.33716.68480.

  • nlcor: correlación no lineal

@artículo{ranjan2019nlcor,
title = {nlcor: Correlación no lineal},
author = {Ranjan, Chitta y Najari, Vahab},
journal = {Research Gate},
año = {2019},
doi = {10.13140 / RG.2.2.10123.72488}
}

Chitta Ranjan y Vahab Najari. “Nlcor: Correlación no lineal”. En: Research Gate (2019) .doi: 10.13140 / RG.2.2.10123.72488.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

ocultar dock

Aprenda a ocultar o quitar la base de su iPhone con este truco

Ciudad de memphis