#Configuración
{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, eval = FALSE)
2024-06-02
#Configuración
{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE, eval = FALSE)
require(pacman) pacman::p_load(dplyr, openxlsx, readr, knitr, flextable, ggplot2, corrplot, kableExtra, GGally, lmtest, car, stargazer, rsm, PerformanceAnalytics)
La dureza de los árboles es difícil de medir directamente, sin embargo la densidad si es relativamente fácil de medir.
Por ello es de gran interés disponer de un modelo que permita predecir la dureza de un árbol a partir de su densidad.
Por este motivo se ha tomado una muestra de 36 eucaliptos australianos y se les midió su densidad (X) y su dureza (Y).
df <- as.data.frame(read.xlsx("E:/[FAT32]/ACTIVIDAD DE TITULACION I (2023)/CLASE 10 REGRESION LINEAL/arboles.xlsx"))
#Mostrar tabla con datos de las variables
flextable(df)
#Estructura del set de datos
str(df)
#Fijar nombre de variables en la memoria
attach(df)
#Resumen del set de datos (datos numéricos de las variables)
summary(df)
#Gráfico de dispersión del conjunto de variables
ggplot(df, aes(x = Densidad, y = Dureza)) + geom_point()
Nota:
#Ajuste a la primera potencia
moli1 <- lm(formula = Dureza ~ poly(Densidad, 1), data = df) summary(moli1) # Tendencia a la primera potencia ggplot() + geom_point(data = df, aes(x = Densidad, y = Dureza)) + geom_line(aes( x = df$Densidad, y = predict(moli1, df)), color = "red")
Nota:
#Ajuste a la Segunda Potencia
moli2 <- lm(formula = Dureza ~ poly(Densidad, 2), data = df) summary(moli2) # Tendencia a la segunda potencia ggplot() + geom_point(data = df, aes(x = Densidad, y = Dureza)) + geom_line(aes( x = df$Densidad, y = predict(moli2, df)), color = "red")
Nota:
#Ajuste a la Tercera Potencia
moli3 <- lm(formula = Dureza ~ poly(Densidad, 3), data = df) summary(moli3) # Tendencia a la tercera potencia ggplot() + geom_point(data = df, aes(x = Densidad, y = Dureza)) + geom_line(aes( x = df$Densidad, y = predict(moli3, df)), color = "red")
Nota:
#Ajuste a la Cuarta Potencia
moli4 <- lm(formula = Dureza ~ poly(Densidad, 4), data = df) summary(moli4) # Tendencia a la cuarta potencia ggplot() + geom_point(data = df, aes(x = Densidad, y = Dureza)) + geom_line(aes( x = df$Densidad, y = predict(moli4, df)), color = "red")
Nota:
#Ajuste a la Quinta Potencia
moli5 <- lm(formula = Dureza ~ poly(Densidad, 5), data = df) summary(moli5) # Tendencia a la quinta potencia ggplot() + geom_point(data = df, aes(x = Densidad, y = Dureza)) + geom_line(aes( x = df$Densidad, y = predict(moli5, df)), color = "red")
Nota:
#Comparación de modelos con la librería “stargazer”
stargazer(moli1, moli2, moli3, moli4, moli5, type="text", df=FALSE)
Comentarios:
\[\hat{y}=1469.47+4620.14x+525.40x^2\]
#Intervalo de Predicción
predict(moli2, data.frame(Densidad= 80), interval = "prediction")
Nota:
#Liberar nombres de variables de la memoria
detach(df)
#Limpiar Ambiente de Trabajo
rm(list = ls())
Este ejercicio muestra las bondades del modelo de regresión polinómica y su aplicación en la administración y la ciencia, mediante el desarrollo de un caso real aplicado en el comportamiento del volumen de la laguna Palcacocha, en el que se estima el volumen del recurso hídrico en función al nivel de cota de la laguna correspondiente.
df <- as.data.frame(read.xlsx("E:/[FAT32]/ACTIVIDAD DE TITULACION I (2023)/CLASE 10 REGRESION LINEAL/cota.xlsx"))
#Mostrar tabla con datos de las variables
flextable(df)
#Estructura del set de datos
str(df)
#Fijar nombre de variables en la memoria
attach(df)
#Resumen del set de datos (datos numéricos de las variables)
summary(df)
#Gráfico de dispersión del conjunto de variables
ggplot(df, aes(x = Cota, y = Volumen)) + geom_point()
Nota:
#Ajuste a la primera potencia
moli1 <- lm(formula = Volumen ~ poly(Cota, 1), data = df) summary(moli1) # Tendencia a la primera potencia ggplot() + geom_point(data = df, aes(x = Cota, y = Volumen)) + geom_line(aes( x = df$Cota, y = predict(moli1, df)), color = "red")
Nota:
#Ajuste a la Segunda Potencia
moli2 <- lm(formula = Volumen ~ poly(Cota, 2), data = df) summary(moli2) # Tendencia a la segunda potencia ggplot() + geom_point(data = df, aes(x = Cota, y = Volumen)) + geom_line(aes( x = df$Cota, y = predict(moli2, df)), color = "red")
Nota:
#Ajuste a la Tercera Potencia
moli3 <- lm(formula = Volumen ~ poly(Cota, 3), data = df) summary(moli3) # Tendencia a la tercera potencia ggplot() + geom_point(data = df, aes(x = Cota, y = Volumen)) + geom_line(aes( x = df$Cota, y = predict(moli3, df)), color = "red")
Nota:
#Ajuste a la Cuarta Potencia
moli4 <- lm(formula = Volumen ~ poly(Cota, 4), data = df) summary(moli4) # Tendencia a la cuarta potencia ggplot() + geom_point(data = df, aes(x = Cota, y = Volumen)) + geom_line(aes( x = df$Cota, y = predict(moli4, df)), color = "red")
Nota:
#Ajuste a la Quinta Potencia
moli5 <- lm(formula = Volumen ~ poly(Cota, 5), data = df) summary(moli5) # Tendencia a la quinta potencia ggplot() + geom_point(data = df, aes(x = Cota, y = Volumen)) + geom_line(aes( x = df$Cota, y = predict(moli5, df)), color = "red")
Nota:
#Comparación de modelos con la librería “stargazer”
stargazer(moli1, moli2, moli3, moli4, moli5, type="text", df=FALSE)
Comentarios:
\[\hat{y}=5,757,907+41,913,734x+10,426,973x^2-19,903x^3+576,066x^4+285,459x^5\]
#Intervalo de Predicción
pred <- predict(moli5, data.frame(Cota= 5000), interval = "prediction") format(pred, big.mark=",", decimal.mark=".")
Nota:
#Liberar nombres de variables de la memoria
detach(df)
#Limpiar Ambiente de Trabajo
rm(list = ls())
Se desea corroborar si el modelo de regresión cuadrático describe el ajuste de los valores a la función parabólica.
df <- as.data.frame(read.xlsx("E:/[FAT32]/ACTIVIDAD DE TITULACION I (2023)/CLASE 10 REGRESION LINEAL/parabola.xlsx"))
#Mostrar tabla con datos de las variables
flextable(df)
#Estructura del set de datos
str(df)
#Fijar nombre de variables en la memoria
attach(df)
#Resumen del set de datos (datos numéricos de las variables)
summary(df)
#Gráfico de dispersión del conjunto de variables
ggplot(df, aes(x = x, y = y)) + geom_point()
Nota:
#Ajuste a la primera potencia
moli1 <- lm(formula = y ~ poly(x, 1), data = df) summary(moli1) # Tendencia a la primera potencia ggplot() + geom_point(data = df, aes(x = x, y = y)) + geom_line(aes( x = df$x, y = predict(moli1, df)), color = "red")
Nota:
#Ajuste a la Segunda Potencia
moli2 <- lm(formula = y ~ poly(x, 2), data = df) summary(moli2) # Tendencia a la segunda potencia ggplot() + geom_point(data = df, aes(x = x, y = y)) + geom_line(aes( x = df$x, y = predict(moli2, df)), color = "red")
Nota:
#Ajuste a la Tercera Potencia
moli3 <- lm(formula = y ~ poly(x, 3), data = df) summary(moli3) # Tendencia a la tercera potencia ggplot() + geom_point(data = df, aes(x = x, y = y)) + geom_line(aes( x = df$x, y = predict(moli3, df)), color = "red")
Nota:
#Ajuste a la Cuarta Potencia
moli4 <- lm(formula = y ~ poly(x, 4), data = df) summary(moli4) # Tendencia a la cuarta potencia ggplot() + geom_point(data = df, aes(x = x, y = y)) + geom_line(aes( x = df$x, y = predict(moli4, df)), color = "red")
Nota:
#Ajuste a la Quinta Potencia
moli5 <- lm(formula = y ~ poly(x, 5), data = df) summary(moli5) # Tendencia a la quinta potencia ggplot() + geom_point(data = df, aes(x = x, y = y)) + geom_line(aes( x = df$x, y = predict(moli5, df)), color = "red")
Nota:
#Comparación de modelos con la librería “stargazer”
stargazer(moli1, moli2, moli3, moli4, moli5, type="text", df=FALSE)
Comentarios:
\[\hat{y}=1.00143582+0.00261020x+0.01002484x^2-0.00286747x^3+0.00163829x^4-0.00054972x^5\]
#Intervalo de Predicción
predict(moli5, data.frame(x= 338), interval = "prediction")
Nota:
#Liberar nombres de variables de la memoria
detach(df)
#Limpiar Ambiente de Trabajo
rm(list = ls())