correlación gris

        El artículo anterior escribió los códigos de cálculo para el coeficiente de correlación de Pearson , el coeficiente de correlación de Spearman y el coeficiente de correlación de Kenda. Este artículo escribe el código para el análisis de correlación de Gray.  Análisis de correlación, mapa de calor de matriz de coeficientes de correlación_La última primicia del blog de agua-blog CSDN      

        El análisis de correlación de grises se refiere a un método de descripción cuantitativa y comparación del desarrollo y la situación de cambio de un sistema. La idea básica del análisis de correlación de grises es juzgar si la conexión es cercana en función de la similitud de las formas geométricas de la secuencia. curvas. Cuanto más cercanas estén las curvas, mayor será la correlación entre las secuencias correspondientes y viceversa.

        Este método generalmente se puede utilizar para analizar el impacto de cada factor en los resultados ( análisis del sistema ), y también se puede utilizar para resolver problemas de evaluación integral que cambian con el tiempo . El núcleo es establecer una secuencia madre que cambia con el tiempo de acuerdo con ciertas reglas y combinan cada uno. Los cambios en el objeto de evaluación a lo largo del tiempo se utilizan como subsecuencias, se encuentra el grado de correlación entre cada subsecuencia y la secuencia principal y se extraen conclusiones basadas en la magnitud de la correlación. (La parte teórica se basa en otros blogs. El código y los datos son creaciones personales. El propósito de la creación es solo facilitar su propio uso futuro. La parte del código puede obtenerla usted mismo si es necesario).

Paso 1: Limpiar datos y estandarizarlos

Los datos utilizados en este artículo se muestran a continuación: calculamos la correlación entre el ciclo de desarrollo, el ciclo de remoción de inventario, el precio bajo por unidad, el precio promedio de una sola parcela de tierra, el monto total de la transacción de tierra, la cantidad de tierra parcelas comercializadas, superficie de tierra comercializada y tasa de beneficio, por lo que primero debemos borrar los datos irrelevantes, es decir, los datos de la columna de tiempo, y luego estandarizar los datos para eliminar las dimensiones. Introducción a los tres métodos de estandarización y desnormalización de la biblioteca sklearn_Blog de Last Dipper of Water-Blog CSDN_El proceso de estandarización manejado por la biblioteca sklearn

#读取数据
import pandas as pd
df=pd.read_excel(r"C:\Users\86177\Desktop\datas.xlsx")
df

 Después de eliminar los datos irrelevantes, los datos se estandarizan para que sean adimensionales.

df=df.iloc[:,1:]#清除第一列无关数据
#数据标准化
import pandas as pd
from sklearn.preprocessing import StandardScaler
columns=df.columns
#Z-score标准化 将某一列数据处理成均值为0,方差为1的数据。优点是受异常值影响较小。公式为:(X-μ)/σ
standard_s1=StandardScaler()#创建StandardScaler()实例
standard_s1_data=standard_s1.fit_transform(df)#将DataFrame格式的数据按照每一个series分别标准化
standard_s1_data_pd=pd.DataFrame(standard_s1_data,columns=columns)#将标准化后的数据改成DataFrame格式
datas=standard_s1_data_pd
datas

Paso 2: Determinar la secuencia de análisis (secuencia de referencia, secuencia de comparación)

        Determine la secuencia de referencia que refleja las características de comportamiento del sistema y la secuencia de comparación que afecta el comportamiento del sistema. La secuencia de datos que refleja las características de comportamiento del sistema se denomina secuencia de referencia. La secuencia de datos compuesta de factores que afectan el comportamiento del sistema se llama secuencia de comparación.

        También se puede decir que el análisis de correlación de grises es el cálculo de la correlación entre la secuencia de comparación y la secuencia de parámetros, por lo que en el ejemplo de este artículo, la secuencia de referencia es la tasa de ganancia y la secuencia de comparación es el ciclo de desarrollo, inventario. ciclo de remoción, precio bajo unitario y parcela única Precio promedio, monto total de transacción de tierras, número de parcelas de tierra negociadas y área de tierra negociada.

(1) Secuencia de referencia (también llamada secuencia madre):

(2) Comparar secuencia (también llamada subsecuencia)

Paso 3: Calcular el coeficiente de correlación

La fórmula parece complicada a primera vista, pero en realidad es muy sencilla, analicemos la fórmula:

(1)

Es la secuencia de diferencias del valor absoluto de la secuencia de referencia menos la i-ésima secuencia de comparación, y luego se toma el valor mínimo de la secuencia de diferencias y luego se toma el valor máximo de la secuencia de diferencias.

(2)

es la diferencia mínima, que es el valor mínimo del valor mínimo de todas las secuencias de diferencias. Por ejemplo, si tenemos 7 secuencias de comparación aquí, habrá 7 secuencias de diferencias. Cada secuencia de diferencias tendrá un valor mínimo. Luego, entre estas 7 valores mínimos El valor mínimo de es la diferencia mínima.

es la diferencia máxima, que naturalmente es el valor máximo entre los valores máximos de todas las secuencias de diferencia.

(3)

Se llama coeficiente de resolución. Cuanto menor es ρ, mayor es la resolución. Generalmente, el rango de valores de ρ es (0,1)(0,1)(0,1). El valor específico depende de la situación. Cuando ρ≤0,5463, la resolución es la mejor, normalmente ρ=0,5.

Resumen: cuando se determinan la secuencia de referencia y la secuencia de comparación, la diferencia mínima y la diferencia máxima son en realidad valores determinados. Lo único que cambia en la fórmula es .

Calcule el código de diferencia máxima y mínima:

#计算最小差值和最大差值
rather_columns=columns[1:].tolist()#比较序列
print('比较数列:{}'.format(rather_columns))
min_s=[]#存储参考序列和每一个比较序列的绝对差值的最小值
max_s=[]#存储参考序列和每一个比较序列的绝对差值的最大值
for column in rather_columns:
    min_=(datas['利润率']-datas[column]).abs().min()#比较数列与参考数列矩阵相减后差值的绝对值里的最小值
    max_=(datas['利润率']-datas[column]).abs().max()#比较数列与参考数列矩阵相减后差值的绝对值里的最大值
    min_s.append(min_)
    max_s.append(max_)
print('最小值:{}'.format(min_s))
print('最大值:{}'.format(max_s))
mmin=min(min_s)#最小差值
mmax=max(max_s)#最大差值
print('最小差值:{}'.format(mmin))
print('最大差值:{}'.format(mmax))

 Los resultados del código son los siguientes:

Calcular la matriz de coeficientes de correlación

#计算相关系数矩阵
rho=0.5
for column in rather_columns:
    datas[column]=(mmin+rho*mmax)/(abs(datas['利润率']-datas[column])+rho*mmax)
datas[rather_columns]#相关系数矩阵

El resultado es el siguiente:

 

 Paso 4: Calcular la relevancia

De hecho, es la media de cada columna. Por ejemplo, el promedio de los 10 números en la columna del ciclo de desarrollo es la correlación entre el ciclo de desarrollo y la tasa de ganancia.

#计算比较序列与参考序列之间的相关系数
corr=[]
for column in rather_columns:
    corr.append(datas[column].mean())
print('7个比较数列与参考数列的关联度分别为:')
print(corr)

 Nota: Los códigos para calcular el grado de correlación en el paso 4 y calcular la matriz de coeficientes de correlación en el paso 3 se pueden fusionar y separar para una vista más clara.

El código completo está disponible en:

import pandas as pd
#数据读取与清洗
df=pd.read_excel(r"C:\Users\86177\Desktop\层次分析法所用指标.xlsx")
df=df.iloc[:,1:]
#数据标准化
import pandas as pd
from sklearn.preprocessing import StandardScaler
columns=df.columns
#Z-score标准化 将某一列数据处理成均值为0,方差为1的数据。优点是受异常值影响较小。公式为:(X-μ)/σ
standard_s1=StandardScaler()#创建StandardScaler()实例
standard_s1_data=standard_s1.fit_transform(df)#将DataFrame格式的数据按照每一个series分别标准化
standard_s1_data_pd=pd.DataFrame(standard_s1_data,columns=columns)#将标准化后的数据改成DataFrame格式
datas=standard_s1_data_pd
#计算相关系数
rho=0.5
corr=[]#存储比较序列与参考序列之间的相关系数
for column in rather_columns:
    datas[column]=(mmin+rho*mmax)/(abs(datas['利润率']-datas[column])+rho*mmax)
    corr.append(datas[column].mean())
print(datas[rather_columns])#相关系数矩阵
print('7个比较数列与参考数列的关联度分别为:{}'.format(corr))
#计算比较序列与参考序列之间的相关系数
corr=[]
for column in rather_columns:
    corr.append(datas[column].mean())
print('7个比较数列与参考数列的关联度分别为:')
print(corr)

Nota: La aplicación de la lectura de correlación de grises en problemas de evaluación integral es calcular el peso del indicador (secuencia de comparación) en función de la correlación entre la secuencia de comparación y la secuencia de referencia, es decir, habrá tiempo para resumir los métodos comúnmente utilizados. y códigos para calcular los pesos más adelante .

Supongo que te gusta

Origin blog.csdn.net/m0_56839722/article/details/127709631
Recomendado
Clasificación