# Limpiar el entorno
rm(list = ls())
# Cargar las librerías necesarias
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(ggplot2)
library(ggpubr)
library(kableExtra)
##
## Attaching package: 'kableExtra'
##
## The following object is masked from 'package:dplyr':
##
## group_rows
library(readxl)
\(\sum(y_i-ar{y})^2 = 0\)
$ ewpage$
Asuma que la ecuación poblacional está dada por \(y_i=15+7X_i+\mu_i\), con el término estocástico (\(\mu\)) distribuido normalmente con media de cero. \(X\) toma valores aleatorios.
set.seed(123)
x <- rnorm(100)
error <- rnorm(100, mean=0, sd=10)
y <- 15 + (7 * x) + error
plot(x, y, main="Scatterplot de x e y", xlab="x", ylab="y", pch=19, col="blue")
reg <- lm(y ~ x)
summary(reg)
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -19.073 -6.835 -0.875 5.806 32.904
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 13.9720 0.9755 14.323 < 2e-16 ***
## x 6.4753 1.0688 6.059 2.55e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.707 on 98 degrees of freedom
## Multiple R-squared: 0.2725, Adjusted R-squared: 0.2651
## F-statistic: 36.71 on 1 and 98 DF, p-value: 2.551e-08
anova(reg)
# Calcular SSE
sse <- sum((fitted(reg) - y)^2)
sse
## [1] 9234.413
x_mean <- mean(x)
y_pred <- 13.972 + 6.475 * x_mean
y_pred
## [1] 14.55738
# Calcular SST
y_mean <- mean(y)
sst <- sum((y - y_mean)^2)
# Calcular SSR
ssr <- sst - sse
# Calcular R^2
Rcuad <- ssr / sst
Rcuad
## [1] 0.2724892
set.seed(123)
x <- runif(100)
error <- rnorm(100, mean = 0, sd = 5)
y <- 2 + (5 * x) + error
# Regresión
regresion <- lm(y ~ x)
summary(regresion)
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -11.1899 -3.0661 -0.0987 2.9817 11.0861
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.9552 0.9803 1.995 0.04887 *
## x 4.5508 1.7091 2.663 0.00906 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4.846 on 98 degrees of freedom
## Multiple R-squared: 0.06747, Adjusted R-squared: 0.05795
## F-statistic: 7.09 on 1 and 98 DF, p-value: 0.009062
# Scatterplot
plot(x, y, main = "Main title", xlab = "X axis title", ylab = "Y axis title", pch = 19, frame = FALSE)
abline(lm(y ~ x), col = "blue")
# Calcular SSE, SST, SSR y R^2
sse <- sum((fitted(regresion) - y)^2)
sst <- sum((y - mean(y))^2)
ssr <- sst - sse
Rcuad <- ssr / sst
# Imprimir resultados
ssr
## [1] 166.5307
Rcuad
## [1] 0.06746591
set.seed(123)
x <- runif(100)
error <- rnorm(100, mean = 0, sd = 15)
y <- 2 + (5 * x) + error
# Regresión
regresion <- lm(y ~ x)
summary(regresion)
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -33.570 -9.198 -0.296 8.945 33.258
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.866 2.941 0.634 0.527
## x 3.653 5.127 0.712 0.478
##
## Residual standard error: 14.54 on 98 degrees of freedom
## Multiple R-squared: 0.005152, Adjusted R-squared: -0.005
## F-statistic: 0.5075 on 1 and 98 DF, p-value: 0.4779
# Calcular R^2
sse <- sum((fitted(regresion) - y)^2)
sst <- sum((y - mean(y))^2)
ssr <- sst - sse
Rcuad <- ssr / sst
# Imprimir resultados
ssr
## [1] 107.2749
Rcuad
## [1] 0.005151549
install.packages("wooldridge")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
library(wooldridge)
data("wage1")
# Ajustar modelo
wagereg <- lm(lwage ~ educ, data = wage1)
summary(wagereg)
##
## Call:
## lm(formula = lwage ~ educ, data = wage1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.21158 -0.36393 -0.07263 0.29712 1.52339
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.583773 0.097336 5.998 3.74e-09 ***
## educ 0.082744 0.007567 10.935 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4801 on 524 degrees of freedom
## Multiple R-squared: 0.1858, Adjusted R-squared: 0.1843
## F-statistic: 119.6 on 1 and 524 DF, p-value: < 2.2e-16
# Cálculo de SSE, SST, SSR
observed <- wage1$lwage
predicted <- fitted(wagereg)
mean_observed <- mean(observed)
sse <- sum((observed - predicted)^2)
sst <- sum((observed - mean_observed)^2)
ssr <- sum((predicted - mean_observed)^2)
# Calcular R^2
Rcuad <- ssr / sst
Rcuad
## [1] 0.1858065