Modelado matemático: aprendizaje del modelo predictivo: modelo predictivo gris (modelo GM(1,1))

Tabla de contenido

prefacio

1. Realización del modelo

1. Introducción al proceso

2. Generación gris

1. Operador de generación de acumulación

 2. Operador generador de media

3. Análisis de factibilidad (prueba de gradación)

4. Establecer el modelo GM(1,1)

1. Preprocesamiento de datos:

 2. Construye un modelo:

3. Construya la matriz de datos B y el vector de datos Y:

5. Inspección de precisión

2. Análisis de casos

Resumir


prefacio

Presente brevemente el modelo de pronóstico gris y use matlab para analizar casos específicos, y continuará agregando más adelante


1. Realización del modelo

1. Introducción al proceso

  • Gray genera nuevos operadores
  • Análisis de viabilidad
  • Construir un modelo GM(1,1)
  • prueba de precisión

2. Generación gris

En pocas palabras, el propósito del nuevo operador de generación gris es debilitar la aleatoriedad de la secuencia desordenada y transformarla en una secuencia ordenada para mostrar las reglas y analizarla. Los operadores de generación comunes son los siguientes:

  • 1. Operador de Generación Acumulativa (AGO)
  • 2. Operador de generación acumulativa inversa (IAGO)
  • 3. Operador de generación media (MEAN)
  • 4. Operador de generación de escala

1. Operador de generación de acumulación

El gráfico lineal de la nueva sucesión y la sucesión antigua es el siguiente, se puede observar que la nueva sucesión convierte la sucesión irregular original en una sucesión claramente regular y creciente :

 

 2. Operador generador de media

Es decir, calcule el valor promedio de los dos elementos adyacentes del operador generador acumulativo , tomando como ejemplo el ejemplo anterior:

X^{(1)} =\izquierda \{ 6,9,17,27,34 \derecha \}

Z^{(1)}(k)=1/2\izquierda [ X^{(1)}(k-1)+X^{(1)}(k) \derecha ] \, \, \, \ , \, \, k=2,3...

Z^{(1)}=\izquierda \{ 7.5,13,22,30.5 \derecha \}

3. Análisis de factibilidad (prueba de gradación)

Primero calcula la razón de cada ítem de la secuencia original , es decir la razón, tomando como ejemplo el ejemplo anterior:

X^{(0)} =\izquierda\{6,3,8,10,7\derecha\}

Relación de grado calculada X^{(0)}:     \sigma(k)=X^{(0)}(k-1)/X^{(0)}(k)\, \,\: \: \, k=2,3...

Si se cumple la proporción de calificaciones:

 Entonces el nuevo operadorX^{(1)} puede Z^{(1)}establecer un modelo GM(1,1)

pd: Hay una condición de que X^{(0)}debe ser no negativo. Si hay un elemento de número negativo, X^{(0)}agregue un número positivo a después de él para que X^{(0)} yX^{(1)} o Z^{(1)}no sean negativos antes de realizar operaciones posteriores.       

4. Establecer el modelo GM(1,1)

1. Preprocesamiento de datos:

Suponga primero que la secuencia original X^{(0)}=\izquierda \{ X^{(0)}(1),X^{(0)}(2),X^{(0)}(3),...,X ^{(0)}(n) \derecho \}pasa la prueba de grado,

Tome el operador generador medio como ejemplo:Z^{(1)}(k)=1/2\izquierda [ X^{(1)}(k-1)+X^{(1)}(k) \derecha ] \, \, \, \ , \, \, k=2,3...

Nuevo orden: Z^{(1)}=\izquierda \{ Z^{(1)}(1),Z^{(1)}(2),Z^{(1)}(3),...,Z ^{(1)}(n) \derecho \}

pd: De manera similar, si la prueba de proporción de calificación falla, también X^{(0)}se puede agregar un número positivo a después de ella , de modo que todas las proporciones de calificación estén dentro del rango permitido.

 2. Construye un modelo:

1. Forma original: X^{(0)}(k)+aZ^{(1)}(k)=b    , propósito: averiguar a, b

2. Estime a, b por análisis de regresión, la ecuación diferencial de blanqueamiento correspondiente y su solución son:

 De esto obtenemos el valor predicho:

 Valor de predicción de secuencia original :

3. Construya la matriz de datos B y el vector de datos Y:

B = \begin{bmatriz} -Z^{(1)}(2)& 1\\ -Z^{(1)}(3)& 1\\ .& .\\ .& .\\ -Z^ {(1)}(n)& 1 \end{bmatriz}=\begin{bmatriz} -\frac{1}{2}(X^{(1)}(1)+X^{(1)}( 2)) & 1\\ -\frac{1}{2}(X^{(1)}(2)+X^{(1)}(3)) & 1\\ .& .\\ .  & .\\ -\frac{1}{2}(X^{(1)}(n-1)+X^{(1)}(n)) &1 \end{bmatriz}                    Y = \begin{bmatriz} X^{(0)}(2)\\ X^{(0)}(3)\\ .\\ .\\ X^{(0)}(n) \end{ bmatriz}

Entonces  u = \begin{bmatriz} a\\ b \end{bmatriz}  , resolviendo la ecuación diferencial anterior, obtenemos u = (B^{T}\cdot B)^{-1}B^{T}Y

Calcule a, b y sustituya el valor predicho anterior para que se ajuste a una función de valor predicho

5. Inspección de precisión

Prueba residual:

Si el valor absoluto de todos los residuos es inferior a 0,1, se considera que cumple con los requisitos superiores, si es inferior a 0,2, cumple con los requisitos generales;

Prueba de desviación de escala:

 Si el valor absoluto de todas las desviaciones de relación de grado es inferior a 0,1, se considera que cumple con los requisitos más altos, si es inferior a 0,2, cumple con los requisitos generales;

2. Análisis de casos

Prediga el número de residentes permanentes en los próximos n años con base en el número de residentes permanentes en la provincia de Fujian en los últimos diez años

Datos de 2010--2020: [3693,3784,3841,3885,3945,3984,4016,4065,4104,4137,4161] millones de personas

1. Prueba de relación de grado: 

        Cumple con el intervalo de prueba de relación de grado: (0.8574, 1.1663)

La relación de grado calculada por matlab es:

Aprobó la prueba de grado

código:

%级比检验通过
check = [];
for k = 2:n
    lambda(k) = data(k-1)/data(k);
    if (exp(-2/(n+1))<lambda(k))&&(lambda(k)<exp(2/(n+1)))
        check(end+1) = 1;  %通过则输出1
    else check(end+1) = 0;  %不通过则输出0
    end
end 

2. Operador de generación:

 Operador de generación acumulada:

Operador generador medio:

código:

%累加生成算子
X1 = cumsum(data);
for i=2:n
    z(i) = 0.5*(X1(i-1)+X1(i));
end

3. Encuentra la matriz de datos B y el vector de datos Y

POR:

                                                      

código:

%数据矩阵B及数据向量Y
Y = data(2:n)';
B = [-z(2:n)',ones(n-1,1)];
u = (B'*B)\B'*Y;
a = u(1,1);
b = u(2,1);

4. Genera predicciones \sombrero{X}^{(1)}y\sombrero{X}^{(0)}

\sombrero{X}^{(1)}: 

 \sombrero{X}^{(0)}

código:

%预测值
f_X1 = [];
f_X0 = [];
for k=1:n-1
    f_X1(1)=data(1);
    f_X1(k+1) = (data(1)-b/a)*exp(-a*k) + b/a;
end
for k=2:n
    f_X0(1)=data(1);
    f_X0(k)=f_X1(k)-f_X1(k-1);
end

5. Prueba de error residual y prueba de desviación de escala:

Prueba residual:

  Prueba de desviación de escala: 

Ambos son inferiores a 0,1, lo que demuestra que el modelo tiene una alta precisión y se puede utilizar para la predicción.

 código:

%残差检验&级比偏差值检验
for k=1:n-1
    sigma(k)=abs((data(k)-f_f_X0(k))/data(k));
    rho(k+1)=abs(1-((1-0.5*a)*lambda(k+1))/(1+0.5*a));
end

 6. El código completo es el siguiente, debe predecir cuánto puede ingresar usted mismo:

%10至20年数据,21年数据为4219
data = [3693,3784,3841,3885,3945,3984,4016,4065,4104,4137,4161];
n = length(data);

%级比检验通过
check = [];
for k = 2:n
    lambda(k) = data(k-1)/data(k);
    if (exp(-2/(n+1))<lambda(k))&&(lambda(k)<exp(2/(n+1)))
        check(end+1) = 1;
    else check(end+1) = 0;
    end
end 

%累加生成算子
X1 = cumsum(data);
for i=2:n
    z(i) = 0.5*(X1(i-1)+X1(i));
end

%数据矩阵B及数据向量Y
Y = data(2:n)';
B = [-z(2:n)',ones(n-1,1)];
u = (B'*B)\B'*Y;
a = u(1,1);
b = u(2,1);

%预测值
f_X1 = [];
f_X0 = [];
for k=1:n-1
    f_X1(1)=data(1);
    f_X1(k+1) = (data(1)-b/a)*exp(-a*k) + b/a;
end
for k=2:n
    f_X0(1)=data(1);
    f_X0(k)=f_X1(k)-f_X1(k-1);
end

%残差检验&级比偏差值检验
for k=1:n-1
    sigma(k)=abs((data(k)-f_f_X0(k))/data(k));
    rho(k+1)=abs(1-((1-0.5*a)*lambda(k+1))/(1+0.5*a));
end

%预测下n个值
test = input('nums:');
n=n+test;
f_f_X1 = [];
f_f_X0 = [];
for k=1:n-1
    f_f_X1(1)=data(1);
    f_f_X1(k+1) = (data(1)-b/a)*exp(-a*k) + b/a;
end
for k=2:n
    f_f_X0(1)=data(1);
    f_f_X0(k)=f_f_X1(k)-f_f_X1(k-1);
end

 Como resultado, la población residente de 21 años es de 42,28 millones, que se acerca al dato real de 4219.

3. Análisis y resumen

 

Supongo que te gusta

Origin blog.csdn.net/weixin_67565775/article/details/126761016
Recomendado
Clasificación