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.
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))
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))
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.
#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.
\(Tcalculado<Tteórico\)
\(|-0.375|<1.980448\)
\(Tcalculado<Tteórico\)
$ 0.543 < 1.980448$
\(Tcalculado<Tteórico\)
$ -1.781 < 1.980448$
\(Tcalculado<Tteórico\)
$ 0.04081 < 1.980448$
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))
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.
##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.
\(Tcalculado>Tteórico\)
$ 2.341>1.980448$
\(Tcalculado>Tteórico\)
$ -2.093> 1.980448$
\(Tcalculado>Tteórico\)
$ -2.603 > 1.980448$
\(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 |
####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
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.
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.
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")
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.
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.
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)
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