You are on page 1of 28

Regresión Polinomial

Por: Lineth Canto 6-726-967


José Frías 6-725-2303
Yaribeth Quiroz 6-726-1098
Oliver Samaniego 6-725-676
Ritza Díaz 8-975-935
Introducción
En este informe, se explora el tema de la regresión polinomial, un modelo de
análisis que utiliza polinomios para describir relaciones entre variables.
Aunque se trata de un modelo no lineal, su estimación es lineal en términos de
parámetros. Se ajustan mediante mínimos cuadrados para minimizar la
varianza de los coeficientes. Además, se emplea el coeficiente de correlación
para evaluar la relación entre conjuntos de datos. Se aplican estos conceptos
en un algoritmo en Visual Basic para Excel, específicamente en un proyecto
de construcción en ingeniería civil. Este enfoque proporciona herramientas
valiosas para el análisis de datos y la toma de decisiones.
Contenido
 Definición del método
La regresión polinómica es un método que se utiliza para moldear la relación entre una
variable independiente y otra dependiente mediante una función polinómica en lugar de
una línea recta. Se utiliza en casos donde una relación lineal simple no es suficiente para
describir lo datos de manera precisa, por lo que busca una curva que se adapte mejor a
los datos.
El procedimiento de mínimos cuadrados se puede extender fácilmente al ajuste de datos
con un polinomio de grado superior. En este caso, la suma de los cuadrados de los
residuos es:
Luego, obtenemos la derivada de la ecuación con respecto a cada uno de los
coeficientes desconocidos del polinomio.
Estas ecuaciones se igualan a cero y se reordenan para desarrollar el siguiente conjunto de
ecuaciones normales:

donde todas las sumatorias van desde i = 1 hasta n. Observe que las tres ecuaciones anteriores
son lineales y tienen tres incógnitas: a 0, a1 y a2. Los coeficientes de las incógnitas se
evalúan de manera directa, a partir de los datos observados. En este caso, observamos que
el problema de determinar un polinomio de segundo grado por mínimos cuadrados es
equivalente a resolver un sistema de tres ecuaciones lineales simultáneas.
 Coeficiente de correlación

El coeficiente de correlación es una medida que cuantifica la relación entre


dos conjuntos de datos. Este coeficiente varía entre -1 y 1, donde cerca
de 1 indica una correlación positiva fuerte, cerca de -1 indica una
correlación negativa fuerte y cerca de 0 implica una correlación débil o
nula. A continuación, presentamos su fórmula:
 Algoritmo para la regresión polinomial

Paso 1: Introduzca el grado del polinomio sujeto a ajuste, m.


Paso 2: Introduzca el número de datos, n.
Paso 3: Si n < m + 1, imprima un mensaje de error que indique que la
regresión no es posible y termine el proceso. Si n > m + 1, continúe.
Paso 4: Calcule los elementos de la ecuación normal en la forma de una
matriz aumentada.
Paso 5: Usando la matriz aumentada determine los coeficientes a0, a1,
a2, …, am, por medio de un método de eliminación.
Paso 6: Imprima los coeficientes.
Problema para desarrollar como ejemplo para el método

Un ingeniero civil se encuentra en un importante proyecto de construcción, para garantizar la


seguridad y la eficiencia de la estructura necesita comprender como la profundidad de la
cimentación afecta la resistencia del suelo en el sitio de construcción. Para esto ha recopilado datos
que relacionan la profundidad de cimentación (en metros) con la resistencia del suelo (en mega
pascales) en la siguiente tabla:

Profundidad 1 2 3 4 5 6 7 8 9
(m)
Resistencia 1 1.5 2 3 4 5 8 10 13
(MPa)
Programa en excel
Código
Private Sub borrar_Click() Esta es la definición de una función o subrutina en VBA
que se activa cuando haces click en el botón “borrar”
Range("I7").Value = "" Range("F20").Value = "" Range("F30").Value = ""
Range("I8").Value = "" Range("H18").Value = "" Range("F32").Value = ""
Range("C3").Value = "" Range("E5").Value = "" Range("G6").Value = ""
Range("I9").Value = "" Range("H19").Value = "" Range("F34").Value = ""
Range("C5").Value = "" Range("E6").Value = "" Range("G7").Value = ""
Range("I10").Value = "" Range("H20").Value = "" Range("C37").Value = ""
Range("C6").Value = "" Range("E7").Value = "" Range("G8").Value = ""
Range("I11").Value = "" Range("C23").Value = "" Range("C39").Value = ""
Range("C7").Value = "" Range("E8").Value = "" Range("G9").Value = ""
Range("I12").Value = "" Range("C25").Value = "" Range("C41").Value = ""
Range("C8").Value = "" Range("E9").Value = "" Range("G10").Value = ""
Range("I13").Value = "" Range("C27").Value = "" Range("D37").Value = ""
Range("C9").Value = "" Range("E10").Value = "" Range("G11").Value = ""
Range("I14").Value = "" Range("D23").Value = "" Range("D39").Value = ""
Range("C10").Value = "" Range("E11").Value = "" Range("G12").Value = ""
Range("J5").Value = "" Range("D25").Value = "" Range("D41").Value = ""
Range("C11").Value = "" Range("E12").Value = "" Range("G13").Value = ""
Range("J6").Value = "" Range("D27").Value = "" Range("E37").Value = ""
Range("C12").Value = "" Range("E13").Value = "" Range("G14").Value = ""
Range("J7").Value = "" Range("E23").Value = "" Range("E39").Value = ""
Range("C13").Value = "" Range("E14").Value = "" Range("H5").Value = ""
Range("J8").Value = "" Range("E25").Value = "" Range("E41").Value = ""
Range("C14").Value = "" Range("F5").Value = "" Range("H6").Value = ""
Range("J9").Value = "" Range("E27").Value = "" Range("F37").Value = ""
Range("D5").Value = "" Range("F6").Value = "" Range("H7").Value = ""
Range("J10").Value = "" Range("F23").Value = "" Range("F39").Value = ""
Range("D6").Value = "" Range("F7").Value = "" Range("H8").Value = ""
Range("J11").Value = "" Range("F25").Value = "" Range("F41").Value = ""
Range("D7").Value = "" Range("F8").Value = "" Range("H9").Value = ""
Range("J12").Value = "" Range("F27").Value = "" Range("I23").Value = ""
Range("D8").Value = "" Range("F9").Value = "" Range("H10").Value = ""
Range("J13").Value = "" Range("C30").Value = "" Range("I24").Value = ""
Range("D9").Value = "" Range("F10").Value = "" Range("H11").Value = ""
Range("B18").Value = "" Range("C32").Value = "" Range("I25").Value = ""
Range("D10").Value = "" Range("F11").Value = "" Range("H12").Value = ""
Range("B19").Value = "" Range("C34").Value = "" Range("B45").Value = ""
Range("D11").Value = "" Range("F12").Value = "" Range("H13").Value = ""
Range("B20").Value = "" Range("D30").Value = "" Range("C45").Value = ""
Range("D12").Value = "" Range("F13").Value = "" Range("H14").Value = ""
Range("D18").Value = "" Range("D32").Value = "" Range("D45").Value = ""
Range("D13").Value = "" Range("F14").Value = "" Range("I5").Value = ""
Range("D19").Value = "" Range("D34").Value = "" Range("E45").Value = ""
Range("D14").Value = "" Range("G5").Value = "" Range("I6").Value = ""
Range("D20").Value = "" Range("E30").Value = "" Range("F45").Value = ""
Range("F18").Value = "" Range("E32").Value = "" Range("I44").Value = ""
Range("F19").Value = "" Range("E34").Value = ""

Estas líneas establecen el valor de las celdas marcadas en la hoja de Excel a vacío (“”), es decir, borra su contenido en cada uno de los rangos.

End Sub Esta línea marca el fin de la subrutina borrar_Click


Function MyInputBox (prompt As String) As Variant Esta es la declaración de una nueva función en VBA llamada
MyInputBox

Dim result As Variant Esta línea declara una variable llamada result del tipo variant.

result = Application.InputBox(prompt, Type:=1) ): Esta línea de código muestra un InputBox en la pantalla que tiene
un mensaje (proporcionado por el argumento prompt) y guarda la entrada del usuario en la variable result.

If result = False Then End Esta línea verifica si el resultado es falso, que es el caso cuando el usuario hace clic en
"Cancelar" en el InputBox. Si es así, entonces el código VBA terminará su ejecución.

MyInputBox = result Aquí la función devuelve el valor que ingresó el usuario.

End Function
Private Sub calcular_Click() Esto es similar al primero que comentamos: es una subrutina que se
dispara cuando el usuario hace clic en el botón "calcular".
Dim C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, D5, D6, D7, D8, D9, D10, D11, D12, D13, E5, E6, E7, E8, E9, E10, E11, E12, E13, F5, F6, F7, F8, F9, F10, F11, F12,
F13, G5, G6, G7, G8, G9, G10, G11, G12, G13, H5, H6, H7, H8, H9, H10, H11, H12, H13, I5, I6, I7, I8, I9, I10, I11, I12, I13, J5, J6, J7, J8, J9, J10, J11, J12, B18, B19,
B20, D18, D19, D20, F18, F19, F20, H18, H19, H20, C23, C25, C27, D23, D25, D27, E23, E25, E27, F23, F25, F27, C30, C32, C34, D30, D32, D34, E30, E32, E34, F30,
F32, F34, C37, C39, C41, D37, D39, D41, E37, E39, E41, F37, F39, F41 As Double

Aquí se están declarando todas esas variables como Double, lo cual significa que serán números con decimales.
Range("C3").Value = MyInputBox("¿Cuál es el valor de datos n?")
Range("C5").Value = MyInputBox("Introduzca el primer valor de x")
Range("C6").Value = MyInputBox("Introduzca el segundo valor de x")
Range("C7").Value = MyInputBox("Introduzca el tercer valor de x")
Range("C8").Value = MyInputBox("Introduzca el cuarto valor de x")
Range("C9").Value = MyInputBox("Introduzca el quinto valor de x")
Range("C10").Value = MyInputBox("Introduzca el sexto valor de x")
Range("C11").Value = MyInputBox("Introduzca el septimo valor de x")
Range("C12").Value = MyInputBox("Introduzca el octavo valor de x")
Range("C13").Value = MyInputBox("Introduzca el noveno valor de x")
Range("D5").Value = MyInputBox("Introduzca el primer valor de y")
Range("D6").Value = MyInputBox("Introduzca el segundo valor de y")
Range("D7").Value = MyInputBox("Introduzca el tercer valor de y")
Range("D8").Value = MyInputBox("Introduzca el cuarto valor de y")
Range("D9").Value = MyInputBox("Introduzca el quinto valor de y")
Range("D10").Value = MyInputBox("Introduzca el sexto valor de y")
Range("D11").Value = MyInputBox("Introduzca el séptimo valor de y")
Range("D12").Value = MyInputBox("Introduzca el octavo valor de y")
Range("D13").Value = MyInputBox("Introduzca el noveno valor de y")

Aquí se muestran una serie de Imputbox para que el usuario introduzca los valores n, x, y
en las ecuaciones. Estos valores se irán a sus celdas marcadas en la hoja de Excel.
Las siguientes líneas establecen el valor de las celdas marcadas en la hoja de Excel a su
valor correspondiente, llenando las columnas de x 2, x3, x4, xy, x2y.
'Llenar la columna de x^4'
'Llenar la columna de x^2’ 'Llenar la columna de x^3'
F5 = Range("F5").Value
C5 = Range("C5").Value Range("F5").Value = C5 * C5 * C5
F6 = Range("F6").Value
C6 = Range("C6").Value Range("F6").Value = C6 * C6 * C6
F7 = Range("F7").Value
C7 = Range("C7").Value Range("F7").Value = C7 * C7 * C7
F8 = Range("F8").Value
C8 = Range("C8").Value Range("F8").Value = C8 * C8 * C8
F9 = Range("F9").Value
C9 = Range("C9").Value Range("F9").Value = C9 * C9 * C9
F10 = Range("F10").Value
C10 = Range("C10").Value Range("F10").Value = C10 * C10 * C10
F11 = Range("F11").Value
C11 = Range("C11").Value Range("F11").Value = C11 * C11 * C11
F12 = Range("F12").Value
C12 = Range("C12").Value Range("F12").Value = C12 * C12 * C12
F13 = Range("F13").Value
C13 = Range("C13").Value Range("F13").Value = C13 * C13 * C13

Range("E5").Value = C5 * C5 Range("G5").Value = F5 * C5
Range("E6").Value = C6 * C6 Range("G6").Value = F6 * C6
Range("E7").Value = C7 * C7 Range("G7").Value = F7 * C7
Range("E8").Value = C8 * C8 Range("G8").Value = F8 * C8
Range("E9").Value = C9 * C9 Range("G9").Value = F9 * C9
Range("E10").Value = C10 * C10 Range("G10").Value = F10 * C10
Range("E11").Value = C11 * C11 Range("G11").Value = F11 * C11
Range("E12").Value = C12 * C12 Range("G12").Value = F12 * C12
Range("E13").Value = C13 * C13 Range("G13").Value = F13 * C13
'Llenar la columna de x*y' 'Llenar la columna de x^2*y'
D5 = Range("D5").Value E5 = Range("E5").Value
D6 = Range("D6").Value E6 = Range("E6").Value
D7 = Range("D7").Value E7 = Range("E7").Value
D8 = Range("D8").Value E8 = Range("E8").Value
D9 = Range("D9").Value E9 = Range("E9").Value
D10 = Range("D10").Value E10 = Range("E10").Value
D11 = Range("D11").Value E11 = Range("E11").Value
D12 = Range("D12").Value E12 = Range("E12").Value
D13 = Range("D13").Value E13 = Range("E13").Value
Range("I5").Value = E5 * D5
Range("H5").Value = C5 * D5 Range("I6").Value = E6 * D6
Range("H6").Value = C6 * D6 Range("I7").Value = E7 * D7
Range("H7").Value = C7 * D7 Range("I8").Value = E8 * D8
Range("H8").Value = C8 * D8 Range("I9").Value = E9 * D9
Range("H9").Value = C9 * D9 Range("I10").Value = E10 * D10
Range("H10").Value = C10 * D10 Range("I11").Value = E11 * D11
Range("H11").Value = C11 * D11 Range("I12").Value = E12 * D12
Range("H12").Value = C12 * D12 Range("I13").Value = E13 * D13
Range("H13").Value = C13 * D13
Las siguientes líneas establecen el valor de las celdas marcadas en la hoja de Excel a su
valor correspondiente; estos son las sumatorias de cada una de las columnas, cuyo valor se
reflejará en la ultima fila de cada columna.

'Suma de x'
Range("C14").Value = C5 + C6 + C7 + C8 + C9 + C10 + C11 + C12 + C13
'Suma de y'
Range("D14").Value = D5 + D6 + D7 + D8 + D9 + D10 + D11 + D12 + D13
'Suma de x^2'
Range("E14").Value = E5 + E6 + E7 + E8 + E9 + E10 + E11 + E12 + E13
'Suma de x^3'
Range("F14").Value = F5 + F6 + F7 + F8 + F9 + F10 + F11 + F12 + F13
'Suma de x^4' 'Suma de x*y' 'Suma de x^2*y'
G5 = Range("G5").Value H5 = Range("H5").Value I5 = Range("I5").Value
G6 = Range("G6").Value H6 = Range("H6").Value I6 = Range("I6").Value
G7 = Range("G7").Value H7 = Range("H7").Value I7 = Range("I7").Value
G8 = Range("G8").Value H8 = Range("H8").Value I8 = Range("I8").Value
G9 = Range("G9").Value H9 = Range("H9").Value I9 = Range("I9").Value
G10 = Range("G10").Value H10 = Range("H10").Value I10 = Range("I10").Value
G11 = Range("G11").Value H11 = Range("H11").Value I11 = Range("I11").Value
G12 = Range("G12").Value H12 = Range("H12").Value I12 = Range("I12").Value
G13 = Range("G13").Value H13 = Range("H13").Value I13 = Range("I13").Value
Range("G14").Value = G5 + Range("H14").Value = H5 + Range("I14").Value = I5
G6 + G7 + G8 + G9 + H6 + H7 + H8 + H9 + + I6 + I7 + I8 + I9 +
G10 + G11 + G12 + G13 H10 + H11 + H12 + H13 I10 + I11 + I12 + I13
'Construir la matriz A' En este paso los valores obtenidos se pasan a una matriz que luego será resuelta
por el método de Gauss Jordan.

C3 = Range("C3").Value
C14 = Range("C14").Value
D14 = Range("D14").Value
E14 = Range("E14").Value
F14 = Range("F14").Value
G14 = Range("G14").Value
H14 = Range("H14").Value
I14 = Range("I14").Value
Range("B18").Value = C3
Range("D18").Value = C14
Range("F18").Value = E14
Range("H18").Value = D14
Range("B19").Value = C14
Range("D19").Value = E14
Range("F19").Value = F14
Range("H19").Value = H14
Range("B20").Value = E14
Range("D20").Value = F14
Range("F20").Value = G14
Range("H20").Value = I14
'Resolución de la matriz por Gauss Jordan'

El resto del código en calcular_Click es una serie de cálculos y operaciones que se realizan utilizando los valores
obtenidos de las celdas en tu hoja de Excel. Se actualizarán las celdas con los valores resultantes y se continúa el
proceso.

'Paso #2 Normalizar la primera ecuación’

B18 = Range("B18").Value
D18 = Range("D18").Value
F18 = Range("F18").Value
H18 = Range("H18").Value
Range("C23").Value = B18 / B18
Range("D23").Value = D18 / B18
Range("E23").Value = F18 / B18
Range("F23").Value = H18 / B18
'Paso #3 Eliminar x1 del segundo renglón con la primera normalizada’

B19 = Range("B19").Value
D19 = Range("D19").Value
F19 = Range("F19").Value
H19 = Range("H19").Value
C23 = Range("C23").Value
D23 = Range("D23").Value
E23 = Range("E23").Value
F23 = Range("F23").Value
Range("C25").Value = ((-B19 * C23) + B19)
Range("D25").Value = ((-B19 * D23) + D19)
Range("E25").Value = ((-B19 * E23) + F19)
Range("F25").Value = ((-B19 * F23) + H19)
'Paso #4 Eliminar x1 del tercer renglón con la primera normalizada'

B20 = Range("B20").Value
D20 = Range("D20").Value
F20 = Range("F20").Value
H20 = Range("H20").Value
C23 = Range("C23").Value
D23 = Range("D23").Value
E23 = Range("E23").Value
F23 = Range("F23").Value
Range("C27").Value = ((-B20 * C23) + B20)
Range("D27").Value = ((-B20 * D23) + D20)
Range("E27").Value = ((-B20 * E23) + F20)
Range("F27").Value = ((-B20 * F23) + H20)
'Paso #5 Normalizar la segunda ecuación'
C25 = Range("C25").Value

D25 = Range("D25").Value
E25 = Range("E25").Value
F25 = Range("F25").Value

Range("C30").Value = C25 / D25


Range("D30").Value = D25 / D25
Range("E30").Value = E25 / D25
Range("F30").Value = F25 / D25

'Paso #6 Eliminar x2 de la primera ecuación con la segunda normalizada’

C30 = Range("C30").Value
D30 = Range("D30").Value
E30 = Range("E30").Value
F30 = Range("F30").Value
C23 = Range("C23").Value
D23 = Range("D23").Value
E23 = Range("E23").Value
F23 = Range("F23").Value

Range("C32").Value = ((-D23 * C30) + C23)


Range("D32").Value = ((-D23 * D30) + D23)
Range("E32").Value = ((-D23 * E30) + E23)
Range("F32").Value = ((-D23 * F30) + F23)
'Paso #7 eliminar x2 de la tercera ecuación con la segunda normalizada'
C30 = Range("C30").Value
D30 = Range("D30").Value
E30 = Range("E30").Value
F30 = Range("F30").Value
C27 = Range("C27").Value
D27 = Range("D27").Value
E27 = Range("E27").Value
F27 = Range("F27").Value

Range("C34").Value = ((-D27 * C30) + C27)


Range("D34").Value = ((-D27 * D30) + D27)
Range("E34").Value = ((-D27 * E30) + E27)
Range("F34").Value = ((-D27 * F30) + F27)

'Paso #8 Normalizar la tercera ecuación más reciente'

C34 = Range("C34").Value
D34 = Range("D34").Value
E34 = Range("E34").Value
F34 = Range("F34").Value
Range("C37").Value = C34 / E34
Range("D37").Value = D34 / E34
Range("E37").Value = E34 / E34
Range("F37").Value = F34 / E34
'Paso #9 Eliminar x3 de la primera ecuación con la tercera normalizada'
C32 = Range("C32").Value
D32 = Range("D32").Value
E32 = Range("E32").Value
F32 = Range("F32").Value
C37 = Range("C37").Value
D37 = Range("D37").Value
E37 = Range("E37").Value
F37 = Range("F37").Value

Range("C39").Value = ((-E32 * C37) + C32)


Range("D39").Value = ((-E32 * D37) + D32)
Range("E39").Value = ((-E32 * E37) + E32)
Range("F39").Value = ((-E32 * F37) + F32)

'Paso #10 Eliminar x3 de la segunda ecuación con la tercera normalizada"

C30 = Range("C30").Value
D30 = Range("D30").Value
E30 = Range("E30").Value
F30 = Range("F30").Value
C37 = Range("C37").Value
D37 = Range("D37").Value
E37 = Range("E37").Value
F37 = Range("F37").Value

Range("C41").Value = ((-E30 * C37) + C30)


Range("D41").Value = ((-E30 * D37) + D30)
Range("E41").Value = ((-E30 * E37) + E30)
Range("F41").Value = ((-E30 * F37) + F30)
'Resultados'
F39 = Range("F39").Value 'a0'
F41 = Range("F41").Value 'a1'
F37 = Range("F37").Value 'a2'

Range("I23").Value = F39
Range("I24").Value = F41
Range("I25").Value = F37

'Calculo de Y parabola'
Range("J5").Value = (F39 + (F41 * C5) + (F37 * E5))
Range("J6").Value = (F39 + (F41 * C6) + (F37 * E6))
Range("J7").Value = (F39 + (F41 * C7) + (F37 * E7))
Range("J8").Value = (F39 + (F41 * C8) + (F37 * E8))
Range("J9").Value = (F39 + (F41 * C9) + (F37 * E9))
Range("J10").Value = (F39 + (F41 * C10) + (F37 * E10))
Range("J11").Value = (F39 + (F41 * C11) + (F37 * E11))
Range("J12").Value = (F39 + (F41 * C12) + (F37 * E12))
Range("J13").Value = (F39 + (F41 * C13) + (F37 * E13))
'Calculo del coeficiente de correlación'
Range("B45").Value = C14
Range("C45").Value = D14
Range("D45").Value = E14
Range("E45").Value = (D5 * D5) + (D6 * D6) + (D7 * D7) + (D8 * D8) + (D9 * D9) + (D10 * D10) + (D11 * D11) + (D12 *
D12) + (D13 * D13)
Range("F45").Value = H14

E45 = Range("E45").Value

Range("I44").Value = ((C3 * H14) - (C14 * D14)) / ((((C3 * E14) - (C14 * C14)) ^ 0.5) * (((C3 * E45) - (D14 * D14)) ^ 0.5))

End Sub

Private Sub cerrar_Click() Esta es otra subrutina que ocurre cuando el usuario hace clic en
el botón "cerrar".
End Esta línea termina inmediatamente la ejecución del código VBA.

End Sub
CONCLUSIÓN
Este informe detalló la regresión polinomial y su aplicación en análisis estadístico. Exploramos cómo
modela relaciones no lineales mediante polinomios de grado n-ésimo en X, siendo una forma de
regresión lineal múltiple. Los mínimos cuadrados fueron presentados como la técnica principal para
ajustar modelos de regresión polinómica, minimizando varianza de coeficientes estimados. El
coeficiente de correlación se discutió como medida de relación entre variables. Aplicamos estos
conceptos en un algoritmo en Excel para un proyecto de ingeniería civil.
Este informe ofrece una comprensión sólida de la regresión polinomial y su relevancia en la toma de
decisiones basada en datos, útil en diversas disciplinas.
¡Muchas
gracias!

You might also like