1.- Cree su propio ejemplo de regresión lineal simple utilizando un conjunto de datos con dos variables y la función lm. Grafique utilizando las funciones plot y abline.

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')

2.- Utilice el modelo de regresión lineal simple de la actividad 1 para predecir 5 nuevos registros e incorpórelos a su conjunto de datos. Calcule nuevamente la regresión lineal simple ¿Se observa algún cambio en los coeficientes?

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.

3.- Tome un punto cualquiera de su conjunto de datos y multiplíquelo por 100, calcule nuevamente la regresión lineal simple ¿Se observa algún cambio en los coeficientes?

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.

Referencias

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