#
options(digits=5, show.signif.stars=FALSE)

# install.packages("pacman")
pacman::p_load(alr4, tidyverse, magrittr)

# make sure data set is active
data(Stevens, package="alr4")

#
ot <- theme_set(theme_bw())

# 1 regression fits all
ggplot(data=Stevens, aes(loudness, y, group = subject, alpha = subject))+
 geom_point() +
 geom_line() +
 stat_smooth(aes(group = 1), method = "lm", size = rel(.8)) +
 coord_cartesian(ylim = c(-1, 5)) +
 labs(x = "Loudness (db)", y = "Average log(Length)") +
 theme(legend.position = "NONE")
## Warning: Using alpha for a discrete variable is not advised.
## `geom_smooth()` using formula 'y ~ x'

#m0 output
summary(m0 <- lm(y~loudness, data = Stevens))
## 
## Call:
## lm(formula = y ~ loudness, data = Stevens)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -1.2669 -0.3179 -0.0093  0.3707  0.9219 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept) -3.20377    0.34429   -9.31  2.5e-12
## loudness     0.07901    0.00482   16.39  < 2e-16
## 
## Residual standard error: 0.482 on 48 degrees of freedom
## Multiple R-squared:  0.848,  Adjusted R-squared:  0.845 
## F-statistic:  269 on 1 and 48 DF,  p-value: <2e-16
# 1 regression model per individual 
ggplot(data=Stevens, aes(loudness, y, group = subject, color = subject))+
 geom_point() +
 stat_smooth(method = "lm", se = F, size = rel(.5)) +
 scale_color_grey()+
 coord_cartesian(ylim = c(-1, 5)) +
 labs(x = "Loudness (db)", y = "Average log(Length)") +
 theme(legend.position = "NONE")
## `geom_smooth()` using formula 'y ~ x'

# grouped by subject before doing regression
Stevens %>% 
 group_by(subject) %>% 
 do(broom::tidy(lm(y ~ loudness, data = Stevens)))
## # A tibble: 20 x 6
## # Groups:   subject [10]
##    subject term        estimate std.error statistic  p.value
##    <fct>   <chr>          <dbl>     <dbl>     <dbl>    <dbl>
##  1 A       (Intercept)  -3.20     0.344       -9.31 2.53e-12
##  2 A       loudness      0.0790   0.00482     16.4  2.69e-21
##  3 B       (Intercept)  -3.20     0.344       -9.31 2.53e-12
##  4 B       loudness      0.0790   0.00482     16.4  2.69e-21
##  5 C       (Intercept)  -3.20     0.344       -9.31 2.53e-12
##  6 C       loudness      0.0790   0.00482     16.4  2.69e-21
##  7 D       (Intercept)  -3.20     0.344       -9.31 2.53e-12
##  8 D       loudness      0.0790   0.00482     16.4  2.69e-21
##  9 E       (Intercept)  -3.20     0.344       -9.31 2.53e-12
## 10 E       loudness      0.0790   0.00482     16.4  2.69e-21
## 11 F       (Intercept)  -3.20     0.344       -9.31 2.53e-12
## 12 F       loudness      0.0790   0.00482     16.4  2.69e-21
## 13 G       (Intercept)  -3.20     0.344       -9.31 2.53e-12
## 14 G       loudness      0.0790   0.00482     16.4  2.69e-21
## 15 H       (Intercept)  -3.20     0.344       -9.31 2.53e-12
## 16 H       loudness      0.0790   0.00482     16.4  2.69e-21
## 17 I       (Intercept)  -3.20     0.344       -9.31 2.53e-12
## 18 I       loudness      0.0790   0.00482     16.4  2.69e-21
## 19 J       (Intercept)  -3.20     0.344       -9.31 2.53e-12
## 20 J       loudness      0.0790   0.00482     16.4  2.69e-21
# fitting a model treating subject as fixed effects
summary(m1 <- lm(y~ subject/loudness - 1, data = Stevens)) 
## 
## Call:
## lm(formula = y ~ subject/loudness - 1, data = Stevens)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -0.3318 -0.1073  0.0023  0.1485  0.3242 
## 
## Coefficients:
##                   Estimate Std. Error t value Pr(>|t|)
## subjectA          -4.49370    0.48664   -9.23  2.8e-10
## subjectB          -4.58530    0.48664   -9.42  1.8e-10
## subjectC          -2.29360    0.48664   -4.71  5.2e-05
## subjectD          -2.91940    0.48664   -6.00  1.4e-06
## subjectE          -5.38510    0.48664  -11.07  4.1e-12
## subjectF          -2.42120    0.48664   -4.98  2.5e-05
## subjectG          -2.81090    0.48664   -5.78  2.6e-06
## subjectH          -3.42070    0.48664   -7.03  8.2e-08
## subjectI          -1.94870    0.48664   -4.00  0.00038
## subjectJ          -1.75910    0.48664   -3.61  0.00109
## subjectA:loudness  0.10265    0.00681   15.06  1.6e-15
## subjectB:loudness  0.09355    0.00681   13.73  1.8e-14
## subjectC:loudness  0.06950    0.00681   10.20  2.9e-11
## subjectD:loudness  0.07506    0.00681   11.02  4.6e-12
## subjectE:loudness  0.10391    0.00681   15.25  1.1e-15
## subjectF:loudness  0.07740    0.00681   11.36  2.2e-12
## subjectG:loudness  0.06497    0.00681    9.53  1.4e-10
## subjectH:loudness  0.08223    0.00681   12.07  4.9e-13
## subjectI:loudness  0.06561    0.00681    9.63  1.1e-10
## subjectJ:loudness  0.05525    0.00681    8.11  4.7e-09
## 
## Residual standard error: 0.215 on 30 degrees of freedom
## Multiple R-squared:  0.996,  Adjusted R-squared:  0.993 
## F-statistic:  369 on 20 and 30 DF,  p-value: <2e-16
knitr::spin("C:\\Users\\ASUS\\Desktop\\loudness.R", knit=FALSE)
## [1] "C:\\Users\\ASUS\\Desktop\\loudness.Rmd"