Introducción

Este documento busca evaluar las diferencias que se presentan en el modelo mediante transformaciones en las variables. Dichas transformaciones serán logaritmica, al cuadrado, de raíz cuadrada y recíproca. Se presentará aquella que se ajuste mejor al modelo. Analizaremos las pruebas t, prueba F y R cuadrado ajustado.

Los datos corresponden a una encuesta realizada a 119 estudiantes de la universidad Santo Tomás que tiene como objetivo encontrar las variables que más se relacionan con el promedio acumulado de los estudiantes. Estas son: semestre en curso, sexo, edad, si solo estudia o a la vez trabaja, horas de estudio autónomas (diarias en promedio), y horas de sueño (diarias en promedio). Este es el link de acceso a los datos de la encuesta: https://docs.google.com/spreadsheets/d/e/2PACX-1vRvFAdRzfw4VG0DMBmq5GwbDnn2UvOntOHQ-2b0fZq1PT5Fh0uXtAiMp-LycBeW5DQr5ggXsyXsEPvD/pub?output=csv

Para efectos del análisis tomaremos como variable Y al promedio acumulado y como variables X las horas de sueño, las horas de estudio autónomas, semestre, edad y si el estudiante estudia o estudia y trabaja al mismo tiempo.

Además, crearemos variables dummies para realizar interacciones entre las varaibles, en este caso, se realizará una interacción entre las variables independientes hora de sueño, y horas de estudio autónomas frente al promedio acumulado.

Para las transformaciones tomaremos como variable Y al promedio acumulado y como variable X las horas de sueño.

1. Preprocesamiento de datos, arreglo de datos.

El primer paso es importar los datos y arreglarlos (cambiar nombres, tipos de variables). En este caso se utiliza la función read.csv() para importar los datos del link. Además, se cambia los nombres a alternativas cortas con la función colnames(); se utiliza la función attach() y names() para que R interprete cada columna como una variable y para que R reconozca el nombre de las variables en la tabla, respectivamente. Finalmente, definimos las variables correspondientes como numéricas.

df=read.csv("https://docs.google.com/spreadsheets/d/e/2PACX-1vRvFAdRzfw4VG0DMBmq5GwbDnn2UvOntOHQ-2b0fZq1PT5Fh0uXtAiMp-LycBeW5DQr5ggXsyXsEPvD/pub?output=csv")
View(df)
colnames(df)=c("carrera","semestre","sexo","edad","promeacu","estutrab","horaestu","horadorm")
attach(df) 
names(df) 
## [1] "carrera"  "semestre" "sexo"     "edad"     "promeacu" "estutrab" "horaestu"
## [8] "horadorm"
df$promeacu=as.numeric(as.character(promeacu))
df$horadorm=as.numeric(as.character(horadorm))
df$horaestu=as.numeric(as.character(horaestu))
df$edad=as.numeric(as.character(edad))
df$semestre=as.numeric(as.character(semestre))

1. Se realiza la regresión.

En este caso, tomamos de nuestra base de datos (df) las variables “horaestu”, “horadorm”,“semestre”, “edad” y “estutrab” (X) y “promeacu” (Y). Posteriormente, se utiliza la función lm() para realizar la regresión. Además, se utiliza la función summary() para mostrar un resumen de los resultados y la función anova() para determinar la influencia que tiene la variable independiente sobre la variable dependiente en este modelo de regresión lineal. Finalmente, la función resid() que ayuda a evaluar si el modelo de regresión lineal es adecuado para los datos.

rlsin=lm(promeacu~horaestu+horadorm+edad+semestre, data = df)
plot(horaestu+horadorm+edad+semestre,promeacu)
abline(rlsin)

summary(rlsin)
## 
## Call:
## lm(formula = promeacu ~ horaestu + horadorm + edad + semestre, 
##     data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.93164 -0.24861  0.01261  0.22492  0.72254 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  4.70327    0.42284  11.123   <2e-16 ***
## horaestu    -0.01141    0.03045  -0.375   0.7085    
## horadorm     0.01321    0.02432   0.543   0.5880    
## edad        -0.04026    0.02261  -1.781   0.0776 .  
## semestre     0.04081    0.02191   1.863   0.0650 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.349 on 114 degrees of freedom
## Multiple R-squared:  0.04604,    Adjusted R-squared:  0.01257 
## F-statistic: 1.375 on 4 and 114 DF,  p-value: 0.2469
anova(rlsin)
## Analysis of Variance Table
## 
## Response: promeacu
##            Df  Sum Sq Mean Sq F value  Pr(>F)  
## horaestu    1  0.1515 0.15149  1.2436 0.26712  
## horadorm    1  0.0134 0.01343  0.1102 0.74048  
## edad        1  0.0825 0.08249  0.6772 0.41228  
## semestre    1  0.4228 0.42277  3.4708 0.06504 .
## Residuals 114 13.8863 0.12181                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(resid(rlsin))

Conclusiones del modelo original.

De estas funciones podemos encontrar que no hay relación con al menos una de las variables para un nivel de confianza del 95%, ya que nuestro P valor es 0.2469, valor mayor a 0.05.

\(p valor > 0.05\)

\(0.2469> 0.05\)

Por su parte, el R cuadrado ajustado con un valor de 0.01257 se interpreta como un mal modelo y por lo tanto no se explica la variable del promedio acumulado con el modelo planteado. A su vez, el error estándar residual es de 0.349.

Hallemos los F y T críticos

#Calcular F teórico rlsin
f_critico=qf(0.05, 4, 115) 

#Estadístico t teórico rlsin
t_teorico=abs(qt(0.025, 117))
t_teorico
## [1] 1.980448

Ahora bien, como podemos observar, el F estadístico es mayor al F crítico o teórico por lo que no hay significancia entre las variables horas de sueño, horas de estudio, la edad y el semestre con el promedio acumulado. \(Fvalor>Fcrítico\) $ 1.375> 0.17669712$

Por otro lado, como podemos observar, el t estadístico es menor al t crítico o teórico en todas las variables por lo que no hay significancia entre esta variable y el promedio acumulado con la muestra recogida.

Horas de estudio autónomas

\(Tcalculado<Tteórico\)

\(|-0.375|<1.980448\)

Horas de sueño

\(Tcalculado<Tteórico\)

$ 0.543 < 1.980448$

Edad

\(Tcalculado<Tteórico\)

$ -1.781 < 1.980448$

Semestre

\(Tcalculado<Tteórico\)

$ 0.04081 < 1.980448$

2. Realizamos la regresión con las variables “Solo estudia” y “Carrera”

En este caso, agregamos al modelo las variables “estutrab” y “carrera”. Se utiliza la función lm() para realizar la regresión. Además, se utiliza la función summary() para mostrar un resumen de los resultados y la función anova() para determinar la influencia que tiene la variable independiente sobre la variable dependiente en este modelo de regresión lineal. Finalmente, la función resid() que ayuda a evaluar si el modelo de regresión lineal es adecuado para los datos.

rlcon=lm(promeacu~estutrab+horaestu+horadorm+edad+semestre+carrera, data =df)
summary(rlcon)
## 
## Call:
## lm(formula = promeacu ~ estutrab + horaestu + horadorm + edad + 
##     semestre + carrera, data = df)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.7042 -0.1977  0.0000  0.2106  0.6667 
## 
## Coefficients:
##                                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                      4.579469   0.474325   9.655 3.98e-16 ***
## estutrabSolo estudio             0.163692   0.069928   2.341  0.02115 *  
## horaestu                         0.017922   0.027910   0.642  0.52220    
## horadorm                        -0.008835   0.022931  -0.385  0.70082    
## edad                            -0.012491   0.020897  -0.598  0.55132    
## semestre                         0.019995   0.019296   1.036  0.30249    
## carreraARQUITECTURA             -0.479935   0.246630  -1.946  0.05436 .  
## carreraCONTADURÍA PÚBLICA       -0.345886   0.369147  -0.937  0.35094    
## carreraDERECHO                  -0.171905   0.221734  -0.775  0.43994    
## carreraECONOMÍA                 -0.337743   0.230363  -1.466  0.14563    
## carreraINGENIERÍA AMBIENTAL     -0.687038   0.374432  -1.835  0.06938 .  
## carreraINGENIERÍA CIVIL         -0.511334   0.244352  -2.093  0.03882 *  
## carreraNEGOCIOS INTERNACIONALES -0.134491   0.236503  -0.569  0.57081    
## carreraODONTOLOGÍA              -0.572672   0.220015  -2.603  0.01059 *  
## carreraOPTOMETRÍA               -0.701171   0.241815  -2.900  0.00456 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2944 on 104 degrees of freedom
## Multiple R-squared:  0.3807, Adjusted R-squared:  0.2973 
## F-statistic: 4.567 on 14 and 104 DF,  p-value: 2.26e-06
anova(rlcon)
## Analysis of Variance Table
## 
## Response: promeacu
##            Df Sum Sq Mean Sq F value    Pr(>F)    
## estutrab    1 0.8288 0.82878  9.5614  0.002551 ** 
## horaestu    1 0.1895 0.18954  2.1867  0.142230    
## horadorm    1 0.0100 0.00999  0.1152  0.734980    
## edad        1 0.0016 0.00158  0.0182  0.892931    
## semestre    1 0.2444 0.24439  2.8195  0.096130 .  
## carrera     9 4.2675 0.47417  5.4703 3.875e-06 ***
## Residuals 104 9.0147 0.08668                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(resid(rlcon))

Conclusiones del modelo con las nuevas variables

De estas funciones podemos encontrar que hay relación con al menos una de las variables para un nivel de confianza del 95%, ya que nuestro P valor es 2.26e-06, valor menor a 0.05.

\(p valor > 0.05\)

\(2.26e-06> 0.05\)

Por su parte, el R cuadrado ajustado con un valor de 0.2973 se interpreta como un modelo aceptable y por lo tanto, se explica en casi un 30% la variable del promedio acumulado con el modelo planteado. A su vez, el error estándar residual es de 0.2944.

Hallemos los F y T críticos

##Prueba F
f_critico=qf(0.05, 6, 113)


#Prueba t
t_teorico=abs(qt(0.025, 117))
t_teorico
## [1] 1.980448

Ahora bien, como podemos observar, el F estadístico es mayor al F crítico o teórico por lo que no hay significancia entre las variables horas de sueño, horas de estudio, la edad y el semestre con el promedio acumulado.

\(Fvalor>Fcrítico\)

\(4.567> 0.2697699514\)

Por otro lado, como podemos observar, el t estadístico es mayor al t crítico o teórico en las variables “Solo estudio”, “Ineniería Civil”, “Odontología” y “Optometría”. Por lo que hay significancia entre estas variables mencionadas y el promedio acumulado con la muestra recogida.

Solo estudio

\(Tcalculado>Tteórico\)

$ 2.341>1.980448$

Ingeniería civil

\(Tcalculado>Tteórico\)

$ -2.093> 1.980448$

Odontología

\(Tcalculado>Tteórico\)

$ -2.603 > 1.980448$

Optometría

\(Tcalculado>Tteórico\)

$ 2.900>1.980448$

A partir de las conclusiones de los dos modelos anteriores podemos determinar que el segundo modelo es mejor que el primero porque tiene un menor error estándar, un mayor r ajustado y un p-valor menor.

Modelo 1 Modelo 2
Error estándar 0.349 0.2944
R cuadrado Ajustado 0.01257 0.2973
P-valor 0.2469 2.26e-06

Crear variables Dummies.

####Con la variable estudia y trabaja.

Primero sin interacción para compararlas posteriormente. Utilizaremos las variables horas de estudia, horas de sueño y la variable categórica “Estudia y/o trabaja”.

rlcond=lm(promeacu~estutrab+horaestu+horadorm, data=df)
summary(rlcond)
## 
## Call:
## lm(formula = promeacu ~ estutrab + horaestu + horadorm, data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.99554 -0.23521  0.01816  0.26006  0.70565 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           4.048877   0.179916  22.504  < 2e-16 ***
## estutrabSolo estudio  0.194342   0.071735   2.709  0.00778 ** 
## horaestu             -0.034166   0.028546  -1.197  0.23383    
## horadorm              0.006852   0.023519   0.291  0.77131    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.343 on 115 degrees of freedom
## Multiple R-squared:  0.07064,    Adjusted R-squared:  0.0464 
## F-statistic: 2.914 on 3 and 115 DF,  p-value: 0.03738

Posteriormente creamos las variables dummies y realizamos las interacciones. Para esto utilizamos el paquete fastDummies y la función dummy_cols(), que nos permite convertir la información a números binarios en columnas. Primero, se convierte la varaible estutrab (Solo estudio, estudio y trabajo).

library(fastDummies)
library(dummy)
## dummy 0.1.3
## dummyNews()
attach(df)
## The following objects are masked from df (pos = 5):
## 
##     carrera, edad, estutrab, horadorm, horaestu, promeacu, semestre,
##     sexo
library(fastDummies)
soloestu=dummy_cols(df$estutrab)
colnames(soloestu)=c("var", "estuytraba", "estu")
soloestu$estu*horadorm
##   [1]  6  6  0  0  5  7  0  5  0  5  4  0  6  7  7  4  8  6  4  8  0  7  0  7  0
##  [26]  0  7  6  6  4  6  7  7  0  7  0  0  8  6  6  6  4  0  0  4  5  4  7  5  6
##  [51]  5  7  6  4  6  7  6  0  6  0  7  6  7  0  7  0  5  5  0  4  8  7  6  6  6
##  [76]  6  6  0  0  0  0  4  4  0  4  9  4  0  7  4  6  6  7  7  0  7  4  0  7  6
## [101]  7  5  0 12  7  5  6  7  0  0  9  6  6  8  5  6  8  0  4
soloestu$estu*horaestu
##   [1] 2 2 0 0 4 4 0 4 0 4 4 0 3 4 1 3 2 2 4 3 0 4 0 1 0 0 2 1 1 3 4 2 2 0 2 0 0
##  [38] 1 2 2 3 3 0 0 4 2 3 4 3 4 4 4 1 2 4 1 3 0 1 0 1 3 3 0 3 0 2 3 0 2 4 3 3 2
##  [75] 3 3 2 0 0 0 0 4 4 0 4 4 2 0 2 1 1 2 4 1 0 2 1 0 3 3 1 3 0 1 3 1 2 2 0 0 2
## [112] 2 2 4 1 3 2 0 4

Crear dummies en las carreras.

Realizamos el mismo proceso con la variable “carreras”.

carreras=dummy_cols(df$carrera)
colnames(carreras)=c("carrera","adminempresas","arquitectura","contaduria","derecho", "economia", "ingambien", "ingcivil", "negocios", "odontologia", "optometria")
carreras$economia*horadorm
##   [1] 6 6 7 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 7 7 7 7 8 5
##  [38] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 7 6 7 0 0 0 0 0 0 0 0 0 0 0
##  [75] 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [112] 0 0 0 0 0 0 0 0
carreras$derecho*horadorm
##   [1] 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [38] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 4 0 7 6 0
##  [75] 0 6 0 0 8 0 0 0 0 6 0 0 4 4 0 0 0 0 7 7 7 7 0 0 0 0 7 0 0 0 7 5 0 7 5 5 9
## [112] 6 6 8 5 6 0 6 4
carreras$optometria*horadorm
##   [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 8 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
##  [38] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 7 5 5 8 0 0 0 0 0
##  [75] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## [112] 0 0 0 0 0 0 0 0

Ahora realizamos una interacción, para modelar las diferentes pendientes

rlcondestu=lm(df$promeacu~soloestu$estu+df$horaestu+df$horadorm+soloestu$estu*df$horaestu)
summary(rlcondestu)
## 
## Call:
## lm(formula = df$promeacu ~ soloestu$estu + df$horaestu + df$horadorm + 
##     soloestu$estu * df$horaestu)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.99359 -0.23586  0.01979  0.25603  0.70134 
## 
## Coefficients:
##                            Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                4.029889   0.204370  19.719   <2e-16 ***
## soloestu$estu              0.224332   0.167190   1.342    0.182    
## df$horaestu               -0.026018   0.050018  -0.520    0.604    
## df$horadorm                0.006689   0.023632   0.283    0.778    
## soloestu$estu:df$horaestu -0.012029   0.060514  -0.199    0.843    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3444 on 114 degrees of freedom
## Multiple R-squared:  0.07096,    Adjusted R-squared:  0.03837 
## F-statistic: 2.177 on 4 and 114 DF,  p-value: 0.07598

Ahora, comparando los dos modelos podemos ver el efecto de solo estudiar sobre el promedio acumulado. El coeficiente de solo estudio aumentó con la interacción. Es decir, si las horas de estudio son 4 o más, el efecto sobre el promedio acumulado es diferente al efecto sin la interacción.

Ahora realizaremos una regresión con interacción entre la varaible horas de dormir y horas de estudio autónomas y veremos sus gráficos.

rlcondum=lm(log(df$promeacu)~soloestu$estu+df$horaestu+df$horadorm+df$edad+df$semestre+df$carrera+df$horadorm*df$horaestu)
summary(rlcondum)
## 
## Call:
## lm(formula = log(df$promeacu) ~ soloestu$estu + df$horaestu + 
##     df$horadorm + df$edad + df$semestre + df$carrera + df$horadorm * 
##     df$horaestu)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.183096 -0.047263  0.001761  0.047993  0.146925 
## 
## Coefficients:
##                                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                         1.390520   0.137683  10.099  < 2e-16 ***
## soloestu$estu                       0.038809   0.016946   2.290  0.02405 *  
## df$horaestu                         0.052931   0.027368   1.934  0.05585 .  
## df$horadorm                         0.017631   0.012353   1.427  0.15652    
## df$edad                            -0.002940   0.005070  -0.580  0.56322    
## df$semestre                         0.006528   0.004733   1.379  0.17083    
## df$carreraARQUITECTURA             -0.126349   0.060226  -2.098  0.03836 *  
## df$carreraCONTADURÍA PÚBLICA       -0.072593   0.089514  -0.811  0.41925    
## df$carreraDERECHO                  -0.038752   0.053732  -0.721  0.47241    
## df$carreraECONOMÍA                 -0.085254   0.055882  -1.526  0.13017    
## df$carreraINGENIERÍA AMBIENTAL     -0.164170   0.090742  -1.809  0.07334 .  
## df$carreraINGENIERÍA CIVIL         -0.131226   0.059514  -2.205  0.02968 *  
## df$carreraNEGOCIOS INTERNACIONALES -0.033141   0.057327  -0.578  0.56445    
## df$carreraODONTOLOGÍA              -0.138389   0.053345  -2.594  0.01086 *  
## df$carreraOPTOMETRÍA               -0.173045   0.058624  -2.952  0.00391 ** 
## df$horaestu:df$horadorm            -0.007830   0.004286  -1.827  0.07059 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.07134 on 103 degrees of freedom
## Multiple R-squared:  0.395,  Adjusted R-squared:  0.3069 
## F-statistic: 4.484 on 15 and 103 DF,  p-value: 1.89e-06
interaction.plot(df$horaestu, df$horadorm, log(df$promeacu), xlab = "Hora de estudio", ylab = "Log Promedio acumulado")

Si las líneas tienen diferentes pendientes y/o se cruzan, indica que hay una interacción significativa entre las horas de sueño y la relación entre las horas de estudio y el log del promedio acumulado.

#Gráfico variables numéricas

plot(df$horaestu, df$promeacu, xlab = "Hora de estudio", ylab = "Promedio acumulado")

plot(df$horadorm, df$promeacu, xlab = "Hora de dormir", ylab = "Promedio acumulado")

plot(df$semestre, df$promeacu, xlab = "semestre", ylab = "Promedio acumulado")

Gráfico de la influencia de las carreras en el promedio acumulado.

barplot(coef(rlcondum)[7:15], names.arg = colnames(carreras)[2:10], 
        xlab = "Carrera", ylab = "Efecto en el promedio acumulado")

Hay un efecto negativo de todas las carreras en el promedio acumulado, con un efecto mayor y significativo para las carreras de ingeniería civil, odontología, y optometría.

Ahora, evaluaremos la interacción entre la variable hora de estudio autónomas y horas de estudio autónomas.

library(ggplot2)
ggplot(df, aes(x = horaestu, y = promeacu, color = soloestu$estu)) +
  geom_line(aes(group = soloestu$estu)) +
  labs(x = "Hora de estudio", y = "Promedio acumulado", color = "Solo estudio") +
  theme_minimal()

A partir de este gráfico se puede concluir que las personas que estudian y trabajan tienen con la muestra recogida menores promedios acumulados y realizan menos horas de estudio, además, ante un aumneto a 3 horas de estuido, disminuye su promedio. Por el otro lado, los estudiantes que solo estudian tienen mayores promedios con o sin más horas de estudio. Para entenderlo también se deberían tener en cuenta otros aspectos como qué tan productivas son las horas adicionales de estudio.

3. Transformaciones de variables.

A continuación, realizaremos las transformaciones de la variable Y, con la variable horas de sueño.

regretrasn=lm(promeacu~horadorm, data=df)
summary(regretrasn)
## 
## Call:
## lm(formula = promeacu ~ horadorm, data = df)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.97118 -0.24644  0.02882  0.24738  0.65356 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  4.07222    0.14740   27.63   <2e-16 ***
## horadorm     0.01237    0.02377    0.52    0.604    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3523 on 117 degrees of freedom
## Multiple R-squared:  0.002309,   Adjusted R-squared:  -0.006218 
## F-statistic: 0.2708 on 1 and 117 DF,  p-value: 0.6038
plot(horadorm, promeacu, xlab = "horas de sueno",ylab = "promedio acumulado", xlim=c(0,12),ylim=c(2.5,8))
an=coef(regretrasn)[1]
pn=coef(regretrasn)[2]
abline(an,pn)

Tranformación sacando raíz.

Después de varios intentos la que más se ajustó fue transformarla con raíz cuadrada ya que disminuyó el error estándar y el pvalor.

Primero creamos una columna con los datos transformados

# Crear una nueva columna con los datos transformados
df$translogpromeacu = log(df$promeacu) 
df$transloghoradorm=log(df$horadorm)
df$transsqrt=sqrt(df$promeacu)
df$transhoradorm=sqrt(df$horadorm)
df$promeacucuadra=(df$promeacu)^2
df$horadormcuadra=(df$horadorm)^2
df$reciprocadorm=(1/df$horadorm)

Posteriormente realizamos la regresión con la transformación

regrelog=lm(df$transsqrt~horadorm, data=df)
plot(df$transsqrt,promeacu, xlab = "horas de sueño",ylab = "promedio acumulado", xlim=c(0,10),ylim=c(0,10))
b=coef(regrelog)[1]
a=coef(regrelog)[2]
abline(a, b, col="blue")

summary(regrelog)
## 
## Call:
## lm(formula = df$transsqrt ~ horadorm, data = df)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.251081 -0.059625  0.009454  0.061784  0.156424 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 2.018058   0.036371  55.485   <2e-16 ***
## horadorm    0.002735   0.005865   0.466    0.642    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.08694 on 117 degrees of freedom
## Multiple R-squared:  0.001855,   Adjusted R-squared:  -0.006677 
## F-statistic: 0.2174 on 1 and 117 DF,  p-value: 0.6419

Conclusiones.

El mejor modelo fue aquel en el que se tomaron todas las variables que recogimos.

Las interacciones permiten mejorar los modelos, e identificar el efecto de una variable independiente en la varaible dependiente y el cual puede variar ante cambios en otra varaible independiente.

Las variables dummies permiten representar variables categóricas y analizar dicha información en el modelo de regresión para realizar interpretaciones de su efecto sobre la variable dependiente.