Revisar documento pdf,csv y puedes cargar el archivo en R markdown Ir a enlace de recursos
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
Supongamos que tenemos los puntos p1= (0,2), p2=(1,2) y p3=(1,8) y queremos hacer una regresión lineal. ¿Cuál sería el valor constante para el modelo base de este conjunto de datos? Rpta: Modelo base es la media: 4
poinst<-data.frame("X"=c(0,1,1),"Y"=c(2,2,8))
mean(poinst$Y)
## [1] 4
Supongamos que tenemos los puntos p1= (0,2), p2=(1,2) y p3=(1,8) y queremos hacer una regresión lineal. Probamos con la recta y=3x+2. ¿Cuál es el valor para este modelo de la medida SSE? Rpta: 18
modelo_simple <- lm(data = poinst,formula = Y ~ X)
modelo_simple
##
## Call:
## lm(formula = Y ~ X, data = poinst)
##
## Coefficients:
## (Intercept) X
## 2 3
SSE <- sum(modelo_simple$residuals^2)
SSE
## [1] 18
Supongamos que tenemos los puntos p1= (0,2), p2=(1,2) y p3=(1,8) y queremos hacer una regresión lineal. Probamos con la recta y=3x+2. ¿Cuál es el valor para este modelo de la medida SST? Rpta: 24
SST <- sum((poinst$Y-mean(poinst$Y))^2)
SST;
## [1] 24
Supongamos que tenemos los puntos p1= (0,2), p2=(1,2) y p3=(1,8) y queremos hacer una regresión lineal. Probamos con la recta y=3x+2. ¿Cuál es el valor para este modelo de la medida R2? Rpta: R2= 0,25 ; Multiple R-squared=0,25
SSR <- SST - SSE
R2 <- SSR/SST
R2;
## [1] 0.25
summary(modelo_simple)
##
## Call:
## lm(formula = Y ~ X, data = poinst)
##
## Residuals:
## 1 2 3
## 2.22e-16 -3.00e+00 3.00e+00
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.000 4.243 0.471 0.720
## X 3.000 5.196 0.577 0.667
##
## Residual standard error: 4.243 on 1 degrees of freedom
## Multiple R-squared: 0.25, Adjusted R-squared: -0.5
## F-statistic: 0.3333 on 1 and 1 DF, p-value: 0.6667
Para un conjunto de 180 registros y 20 variables, hemos conseguido un valor R2 de 0.81 utilizando 18 de ellas. ¿Cuál es el valor de R2 ajustado? Rpta: El coeficiente de determinación es 0,7887578 utilizando 18 variables
R2 <- 0.81
n <- 180
k <- 18
R2a <- 1-((n-1)/(n-k-1))*(1-R2)
R2a
## [1] 0.7887578
¿Cuántas de las variables de nuestro conjunto de datos son de tipo ‘Factor’? (Variables de texto que representan categorías) str(moneyball) Rpta: 2 (Team,League)
setwd("/home/jtorres/master/")
moneyball <- read.csv("baseball.csv")
glimpse(moneyball)
## Rows: 902
## Columns: 15
## $ Team <chr> "ANA", "ARI", "ATL", "BAL", "BOS", "CHC", "CHW", "CIN", "…
## $ League <chr> "AL", "NL", "NL", "AL", "AL", "NL", "AL", "NL", "AL", "NL…
## $ Year <int> 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 200…
## $ RS <int> 691, 818, 729, 687, 772, 777, 798, 735, 897, 923, 724, 74…
## $ RA <int> 730, 677, 643, 829, 745, 701, 795, 850, 821, 906, 876, 74…
## $ W <int> 75, 92, 88, 63, 82, 88, 83, 66, 91, 73, 66, 76, 93, 65, 8…
## $ OBP <dbl> 0.327, 0.341, 0.324, 0.319, 0.334, 0.336, 0.334, 0.324, 0…
## $ SLG <dbl> 0.405, 0.442, 0.412, 0.380, 0.439, 0.430, 0.451, 0.419, 0…
## $ BA <dbl> 0.261, 0.267, 0.260, 0.248, 0.266, 0.261, 0.268, 0.262, 0…
## $ Playoffs <int> 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, …
## $ RankSeason <int> NA, 5, 7, NA, NA, NA, NA, NA, 6, NA, NA, NA, 4, NA, NA, N…
## $ RankPlayoffs <int> NA, 1, 3, NA, NA, NA, NA, NA, 4, NA, NA, NA, 4, NA, NA, N…
## $ G <int> 162, 162, 162, 162, 161, 162, 162, 162, 162, 162, 162, 16…
## $ OOBP <dbl> 0.331, 0.311, 0.314, 0.337, 0.329, 0.321, 0.334, 0.341, 0…
## $ OSLG <dbl> 0.412, 0.404, 0.384, 0.439, 0.393, 0.398, 0.427, 0.455, 0…
# Procedimiento para analizar variables tipo factor
# countColumn <- function(df,numColumn){
# headtitle <- unique(names(df))
# conteo <- (data.frame(col=moneyball[,c(headtitle[numColumn])]) %>% count(col))
# names(conteo)[1] <- headtitle[numColumn]
# return (conteo)
# }
# for(i in 1:length(unique(names(moneyball)))){
# print(countColumn(moneyball,i))
# }
ggplot(moneyball, aes(Team)) + geom_bar()
ggplot(moneyball, aes(League)) + geom_bar()
Pregunta 1.7 (0.7 pts): ¿Cuál es el valor del primer cuartil (25%) de la variable RS? Rpta: 641,25
quantile(moneyball$RS)[2]
## 25%
## 641.25
¿En qué año se produjo la peor diferencia de carreras? ¿Es decir, en qué año el registro RD es menor? Rpta: Diferencia: 896 y Año: 1962
moneyball$RD = moneyball$RS - moneyball$RA
moneyball[print(which.min(moneyball$RD)), ]$Year
## [1] 896
## [1] 1962
# Grafico de dispersión para ver cuantos partidos debe ganar un equipo para llegar a los Playoffs
# m <- ggplot(moneyball, aes(x = W, y = Team,color = factor(Playoffs)))+
# geom_point() +
# scale_color_manual(values = c("#000000", "#FF2D00"), name = "Made Playoffs")
# m + xlab("Wins")
¿Cuál es el valor R2 de este modelo(W vs RD)? Rpta: 0,8808104
# Gráfico de dispersión que muestra la variable RD vs W para
# ggplot(moneyball, aes(x = RD,y = W,color = factor(Playoffs))) +
# geom_point() +
# scale_color_manual(values = c("#000000", "#FF2D00"), name = "Made Playof fs")
modelW <- lm(W ~ RD, data = moneyball)
summary(modelW)["r.squared"]
## $r.squared
## [1] 0.8808104
Si, por lo que vimos anteriormente, necesitamos 95 victorias para pasar a los playoffs, ¿cuántas carreras más debemos hacer de las que debemos permitir? Es decir, si W = a0 + a1·RD y 95 ≤ W, entonces, ¿qué valor mínimo de RD cumple la siguiente ecuación? 95 ≤ a0 + a1·RD (donde a0 y a1 son los coeficientes del modelo generado en el ejercicio anterior que podemos ver con summary(modelW)) Rpta: RD mínimo=134
minWin <- 95
valMinRD <-(minWin - modelW$coefficients[1])/modelW$coefficients[2]
print(ceiling(valMinRD))
## (Intercept)
## 134
Si repetimos el mismo modelo “modelRS” eliminando la variable BA. ¿Qué valor de R2 nos proporciona el nuevo modelo? Rpta: R2=0,9296
modelRS = lm(RS~OBP+SLG, data=moneyball)
summary(modelRS)
##
## Call:
## lm(formula = RS ~ OBP + SLG, data = moneyball)
##
## Residuals:
## Min 1Q Median 3Q Max
## -70.838 -17.174 -1.108 16.770 90.036
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -804.63 18.92 -42.53 <2e-16 ***
## OBP 2737.77 90.68 30.19 <2e-16 ***
## SLG 1584.91 42.16 37.60 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 24.79 on 899 degrees of freedom
## Multiple R-squared: 0.9296, Adjusted R-squared: 0.9294
## F-statistic: 5934 on 2 and 899 DF, p-value: < 2.2e-16
# Modelo de regresión con 3 variables
# modelRS = lm(RS~OBP+SLG+BA, data=moneyball)
# summary(modelRS)
¿Cuál es la predicción para RS del modelo modelRS (summary(modelRS)) si utilizamos los valores anteriores de OBP y SLG? Rpta: RS=804,987
valObp <- c(0.339)
valSlg <- c(0.430)
dataTestRS <- data.frame("OBP"=valObp,"SLG"=valSlg)
str(dataTestRS)
## 'data.frame': 1 obs. of 2 variables:
## $ OBP: num 0.339
## $ SLG: num 0.43
predictRS <- predict(modelRS,newdata=dataTestRS)
print(predictRS)
## 1
## 804.987
¿Cuál es la predicción para RA del modelo modelRA (summary(modelRA)) si utilizamos los valores anteriores de OOBP y OSLG? Rpta: RA=621,9258
modelRA = lm(RA~OOBP+OSLG, data=moneyball)
summary(modelRA)
##
## Call:
## lm(formula = RA ~ OOBP + OSLG, data = moneyball)
##
## Residuals:
## Min 1Q Median 3Q Max
## -82.397 -15.178 -0.129 17.679 60.955
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -837.38 60.26 -13.897 < 2e-16 ***
## OOBP 2913.60 291.97 9.979 4.46e-16 ***
## OSLG 1514.29 175.43 8.632 2.55e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 25.67 on 87 degrees of freedom
## (812 observations deleted due to missingness)
## Multiple R-squared: 0.9073, Adjusted R-squared: 0.9052
## F-statistic: 425.8 on 2 and 87 DF, p-value: < 2.2e-16
valOobp <- c(0.307)
valOsgl<- c(0.373)
dataTestRA <- data.frame("OOBP"=valOobp,"OSLG"=valOsgl)
str(dataTestRA)
## 'data.frame': 1 obs. of 2 variables:
## $ OOBP: num 0.307
## $ OSLG: num 0.373
predictRA <- predict(modelRA,newdata=dataTestRA)
print(predictRA)
## 1
## 621.9258
Predice finalmente con los parámetros del modelo W (summary(modelW)) y los valores que acabamos de calcular para RS y RA el número de victorias del equipo en 2002. ¿Cuál es ese número de victorias? Rpta: número de victorias: 100
ajustadoRS <- 805
ajustadoRA <- 622
ajustadoRD <- ajustadoRS-ajustadoRA
dataTestW<-data.frame("RD"=c(ajustadoRD))
valueWPredict <- predict(modelW,newdata=dataTestW)
print(valueWPredict)
## 1
## 100.2365
https://github.com/jofrantoba/r-programming-activad1-regresion
https://rpubs.com/Cristina_Gil/Regresion_Lineal_Simple
https://rpubs.com/Cristina_Gil
https://rpubs.com/Joaquin_AR/223351
https://rpubs.com/Joaquin_AR/226291
https://rpubs.com/joser/RegresionSimple
https://stat.ethz.ch/R-manual/R-devel/library/base/html/00Index.html
https://medium.com/@smitpate08/how-to-easily-find-column-and-row-index-numbers-in-r-f720c435730
https://conceptosclaros.com/importar-datos-r/
https://simplystatistics.org/2015/07/24/stringsasfactors-an-unauthorized-biography/
https://es.r4ds.hadley.nz/factores.html#:~:text=En%20R%2C%20los%20factores%20se,de%20trabajar%20que%20los%20caracteres.
https://towardsdatascience.com/linear-regression-analysis-in-r-fdd59295d4a8