# Cargar los datos del archivo Salary_Data.csv
directorioActual <- dirname(rstudioapi::getSourceEditorContext()$path)
archivo <- file.path(directorioActual, "Salary_Data.csv")
datos <- read.csv(archivo)

# Mostrar los primeros registros de la base de datos
head(datos)
##   Age Gender Education.Level         Job.Title Experience Salary
## 1  32   Male      Bachelor's Software Engineer          5  90000
## 2  28 Female        Master's      Data Analyst          3  65000
## 3  45   Male             PhD    Senior Manager         15 150000
## 4  36 Female      Bachelor's   Sales Associate          7  60000
## 5  52   Male        Master's          Director         20 200000
## 6  29   Male      Bachelor's Marketing Analyst          2  55000

Actividad 1: Regresión lineal simple con dos variables: Experience y Salary

lm_fit <- lm(Salary ~ Experience, data = datos)

# Mostrar los coeficientes del modelo
summary(lm_fit)
## 
## Call:
## lm(formula = Salary ~ Experience, data = datos)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -118904  -26003    4129   24064   74064 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 91000.63    1054.44   86.30   <2e-16 ***
## Experience   4978.44      94.24   52.83   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 33570 on 3012 degrees of freedom
## Multiple R-squared:  0.4809, Adjusted R-squared:  0.4808 
## F-statistic:  2791 on 1 and 3012 DF,  p-value: < 2.2e-16
# Graficar los datos y la línea de regresión
plot(Salary ~ Experience, data = datos, main = "Relación entre Experiencia y Salario",
     xlab = "Experiencia (años)", ylab = "Salario ($)")
abline(lm_fit, col = "blue")

Actividad 2: Predecir 5 nuevos registros e incorporarlos al conjunto de datos

nuevas_experiencias <- c(11, 12, 13, 14, 15)
nuevas_predicciones <- predict(lm_fit, newdata = data.frame(Experience = nuevas_experiencias))

nuevas_predicciones
##        1        2        3        4        5 
## 145763.5 150742.0 155720.4 160698.8 165677.3
# Agregar las nuevas predicciones al conjunto de datos
nuevos_salarios <- c(datos$Salary, nuevas_predicciones)
nuevas_experiencias <- c(datos$Experience, nuevas_experiencias)

# Crear un nuevo data frame con los datos actualizados
nuevo_data <- data.frame(Experience = nuevas_experiencias, Salary = nuevos_salarios)

# Ajustar el nuevo modelo de regresión lineal
lm_fit_nuevo <- lm(Salary ~ Experience, data = nuevo_data)

# Mostrar los coeficientes del nuevo modelo
summary(lm_fit_nuevo)
## 
## Call:
## lm(formula = Salary ~ Experience, data = nuevo_data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -118904  -25980    4129   24064   74064 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 91000.63    1053.54   86.38   <2e-16 ***
## Experience   4978.44      94.13   52.89   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 33540 on 3017 degrees of freedom
## Multiple R-squared:  0.4811, Adjusted R-squared:  0.4809 
## F-statistic:  2797 on 1 and 3017 DF,  p-value: < 2.2e-16

Se observar que los coeficientes estimados para la variable “Experience” y para la “Intercept” no han cambiado entre la actividad 1 y la actividad 2, ya que se ha utilizado el modelo de regresión lineal ajustado con el conjunto de datos original para hacer predicciones sobre nuevos registros, pero los coeficientes estimados no han cambiado en comparación con el modelo original ajustado solo con los datos iniciales.

Actividad 3: Tomar un punto cualquiera y multiplicarlo por 100

indice_punto <- 5  # Índice del punto a multiplicar por 100 (cambiar según el punto deseado)
nuevo_salary <- datos$Salary[indice_punto] * 100
nueva_experience <- datos$Experience[indice_punto]

# Multiplicar el salario por 100
nuevo_data$Salary[indice_punto] <- nuevo_salary

# Ajustar el nuevo modelo de regresión lineal después de modificar el punto
lm_fit_modificado <- lm(Salary ~ Experience, data = nuevo_data)

# Mostrar los coeficientes del modelo modificado
summary(lm_fit_modificado)
## 
## Call:
## lm(formula = Salary ~ Experience, data = nuevo_data)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
##  -160880   -31711    -2207    14505 19784419 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    82083      11371   7.219 6.61e-13 ***
## Experience      6675       1016   6.570 5.89e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 362000 on 3017 degrees of freedom
## Multiple R-squared:  0.01411,    Adjusted R-squared:  0.01378 
## F-statistic: 43.17 on 1 and 3017 DF,  p-value: 5.892e-11

Se observa que el coeficiente estimado para la variable “Experience” ha cambiado de 4978.44 a 6675 después de multiplicar el salario por 100.

Esto significa que al modificar el valor del salario para un punto específico, se ha alterado la relación entre la experiencia y el salario en el modelo.