Para esto, se considera el dataset “rock”, se hace una copia de este y se borran las columnas “shape” y “perm” para que este solo tenga las columnas “area” y “peri”, los cuales serán utilizados para crear una regresión lineal junto con los gráficos que conlleva.
roca = data.frame(rock)
roca$shape <- NULL
roca$perm <- NULL
plot(area~peri,data=roca)
Luego, se ajusta a un modelo lineal:
lm.fit=lm(area~peri,data=roca)
lm.fit
##
## Call:
## lm(formula = area ~ peri, data = roca)
##
## Coefficients:
## (Intercept) peri
## 3052.018 1.542
summary(lm.fit)
##
## Call:
## lm(formula = area ~ peri, data = roca)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2511.9 -1282.7 -80.1 790.8 4375.4
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3052.0181 476.8561 6.400 7.26e-08 ***
## peri 1.5419 0.1572 9.808 7.51e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1543 on 46 degrees of freedom
## Multiple R-squared: 0.6765, Adjusted R-squared: 0.6695
## F-statistic: 96.2 on 1 and 46 DF, p-value: 7.506e-13
coeficiente = summary(lm.fit)[4]
Una vez ajustado, se grafica:
plot(area~peri,data=roca)
intercepto = 3052.018
pendiente = 1.542
abline(intercepto,pendiente,col='blue')
Se predicen 5 nuevos registros como se muestra a continuación:
perimetros = c(1000,1100,1200,1300,1400)
areas = predict.lm(lm.fit,data.frame(peri=perimetros))
cat("Las áreas predecidas son", areas,",para los perímetros ", perimetros, "respectivamente")
## Las áreas predecidas son 4593.921 4748.112 4902.302 5056.492 5210.683 ,para los perímetros 1000 1100 1200 1300 1400 respectivamente
Luego, tanto las áreas como los perímetros anteriores, se añaden al conjunto de datos “roca” y se grafica como se muestra a continuación:
new_roca = data.frame(area = areas, peri = perimetros)
new_roca = rbind(roca, new_roca)
plot(area~peri,data=new_roca)
Luego, se ajusta a un modelo lineal:
lm.fit=lm(area~peri,data=new_roca)
lm.fit
##
## Call:
## lm(formula = area ~ peri, data = new_roca)
##
## Coefficients:
## (Intercept) peri
## 3052.018 1.542
summary(lm.fit)
##
## Call:
## lm(formula = area ~ peri, data = new_roca)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2511.9 -1197.3 0.0 738.9 4375.4
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3052.0181 413.5027 7.381 1.36e-09 ***
## peri 1.5419 0.1421 10.853 7.36e-15 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1465 on 51 degrees of freedom
## Multiple R-squared: 0.6978, Adjusted R-squared: 0.6919
## F-statistic: 117.8 on 1 and 51 DF, p-value: 7.358e-15
coeficiente1 = summary(lm.fit)[4]
Una vez ajustado, se grafica:
plot(area~peri,data=new_roca)
intercepto2=3052.018
pendiente2=1.542
abline(intercepto2,pendiente2,col='blue')
print("Los coeficientes de la actividad 1 son:")
## [1] "Los coeficientes de la actividad 1 son:"
print(coeficiente)
## $coefficients
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3052.018114 476.8560827 6.400292 7.255634e-08
## peri 1.541903 0.1572044 9.808268 7.506269e-13
print("Los coeficientes de la actividad 2 son:")
## [1] "Los coeficientes de la actividad 2 son:"
print(coeficiente1)
## $coefficients
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3052.018114 413.5027105 7.38089 1.363284e-09
## peri 1.541903 0.1420736 10.85285 7.357613e-15
De lo anterior, se puede observar que los coeficientes para el intercepto y el perimetro se mantiene en la columna “Estimate”, pero para lo demás si varía. Además, se puede obsevar que el gráfico obtenido en la primera actividad, es similar al de la segunda, solo que en este último se puede ver los nuevos registros obtenidos mediante una predicción, y sobre estos pasa la linea de tendencia.
Primero, se multiplica la fila 1 por 100 y se grafica como se muestra a continuación:
new_roca[1,1] = new_roca[1,1]*100
new_roca[1,2] = new_roca[1,2]*100
plot(area~peri,data=new_roca)
Luego, se ajusta a un modelo lineal:
lm.fit=lm(area~peri,data=new_roca)
lm.fit
##
## Call:
## lm(formula = area ~ peri, data = new_roca)
##
## Coefficients:
## (Intercept) peri
## 2500.017 1.778
summary(lm.fit)
##
## Call:
## lm(formula = area ~ peri, data = new_roca)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2419.2 -1090.9 88.6 873.9 4576.6
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.500e+03 2.055e+02 12.17 <2e-16 ***
## peri 1.778e+00 5.342e-03 332.82 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1465 on 51 degrees of freedom
## Multiple R-squared: 0.9995, Adjusted R-squared: 0.9995
## F-statistic: 1.108e+05 on 1 and 51 DF, p-value: < 2.2e-16
coeficiente2 = summary(lm.fit)[4]
Una vez ajustado, se grafica:
plot(area~peri,data=new_roca)
intercepto3 = 2500.017
pendiente3 = 1.778
abline(intercepto3,pendiente3,col='blue')
print("Los coeficientes de la actividad 1 son:")
## [1] "Los coeficientes de la actividad 1 son:"
print(coeficiente)
## $coefficients
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3052.018114 476.8560827 6.400292 7.255634e-08
## peri 1.541903 0.1572044 9.808268 7.506269e-13
print("Los coeficientes de la actividad 2 son:")
## [1] "Los coeficientes de la actividad 2 son:"
print(coeficiente1)
## $coefficients
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3052.018114 413.5027105 7.38089 1.363284e-09
## peri 1.541903 0.1420736 10.85285 7.357613e-15
print("Los coeficientes de la actividad 3 son:")
## [1] "Los coeficientes de la actividad 3 son:"
print(coeficiente2)
## $coefficients
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2500.017459 2.054545e+02 12.16823 1.062042e-16
## peri 1.778042 5.342299e-03 332.82329 8.936450e-87
De lo anterior, se puede ver que los coeficientes obtenidos en la actividad 3, cambian. Además, el gráfico también lo hace. En el extremo inferior izquierdo se aprecian los datos del data frame que no fueron multiplicados por 100, y, en la parte superior derecha, se observa la fila que si fue multiplciada por 100.
Cómo agregar filas a un marco de datos en R. (2021, 7 mayo).
Statologos. Recuperado 9 de julio de 2022, de https://statologos.com/r-anadir-al-marco-de-datos/
R: The R Datasets Package. (s. f.). The R Datasets Package. Recuperado 9
de julio de 2022, de https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/00Index.html