---
title: "Entregable 4 - Estadística"
subtitle: "Grau de Matemàtiques, Curs 2020-21"
author: "Vilanova Martínez, Adrià"
output: html_document
---

```{r message=FALSE}
# Libraries
library(R.utils)

# Decimal separator (we have to fill in the results with commas :( )
options(OutDec=",")
```

## Configuració
Aquí es pot configurar la pràctica depenent del que es pregunti:

```{r}
# APARTAT 1
# Variable preguntes 1, 2 (ex: Edad, AnEvol, ...)
var12 = 'AnEvol'
# Variable preguntes 3, 4 (ex: Sexo, NivEstud, Diag, EstCiv, ...)
var34 = 'NivEstud'

# APARTATS 2, 3 i 4
# Variable per les preguntes a partir de la 5 sense sufix (ex: VelocProc,
# AtenVig, MemorTrab, AprenVerb, AprenVis, RazonRes, ...)
var = 'RazonRes'

# Nivell de significació (és el mateix per tothom)
alpha = 0.05

dd = read.csv2("data.csv")
```

Altres dades:

```
# == PAULA ==
# APARTAT 1
# Variable preguntes 1, 2 (ex: Edad, AnEvol, ...)
var12 = 'AnEvol'
# Variable preguntes 3, 4 (ex: Sexo, NivEstud, Diag, EstCiv, ...)
var34 = 'EstCiv'

# APARTATS 2, 3 i 4
# Variable per les preguntes a partir de la 5 sense sufix (ex: VelocProc,
# AtenVig, MemorTrab, AprenVerb, AprenVis, RazonRes, ...)
var = 'MemorTrab'

# Nivell de significació (és el mateix per tothom)
alpha = 0.05

dd = read.csv2("data_paula.csv")
```

```
# == PEDRO ==
# APARTAT 1
# Variable preguntes 1, 2 (ex: Edad, AnEvol, ...)
var12 = 'AnEvol'
# Variable preguntes 3, 4 (ex: Sexo, NivEstud, Diag, EstCiv, ...)
var34 = 'EstCiv'

# APARTATS 2, 3 i 4
# Variable per les preguntes a partir de la 5 sense sufix (ex: VelocProc,
# AtenVig, MemorTrab, AprenVerb, AprenVis, RazonRes, ...)
var = 'AtenVig'

# Nivell de significació (és el mateix per tothom)
alpha = 0.05

dd = read.csv2("data_pedro.csv")
```

## Introducció

```{r}
dd$VelocProc_D = dd$VelocProc_P - dd$VelocProc_B
dd$AtenVig_D = dd$AtenVig_P - dd$AtenVig_B
dd$MemorTrab_D = dd$MemorTrab_P - dd$MemorTrab_B
dd$AprenVerb_D = dd$AprenVerb_P - dd$AprenVerb_B
dd$AprenVis_D = dd$AprenVis_P - dd$AprenVis_B
dd$RazonRes_D = dd$RazonRes_P - dd$RazonRes_B

head(dd, n=3)

gc = dd[dd$Grupo == 'GC',]
ge = dd[dd$Grupo == 'GE',]
gc_n = nrow(gc)
ge_n = nrow(ge)

var_b = paste(var, '_B', sep='')
var_p = paste(var, '_P', sep='')
var_d = paste(var, '_D', sep='')
```


## Apartat 1

### Pregunta 1
Estadístic de la prova per comparar <ch>`r var12`</ch> en els dos grups:

```{r}
p1_2_var_test = var.test(gc[[var12]], ge[[var12]], ratio=1,
                         alternative='two.sided', conf.level=1 - alpha)
p1_2_var_test

p1_2_same_var = (p1_2_var_test$p.value >= alpha)
if (p1_2_same_var) {
  printf("Suposarem que la variància de %s en GC i GE és la mateixa.", var12)
} else {
  printf("Suposarem que la variància de %s en GC i GE NO és la mateixa.", var12)
}

p1_2_t_test = t.test(gc[[var12]], ge[[var12]], alternative='two.sided',
                     paired=FALSE, var.equal=p1_2_same_var, conf.level=1 - alpha)
p1_2_t_test

p1_est = p1_2_t_test$statistic
p1_est
```

### Pregunta 2
P-valor de la prova per comparar <ch>`r var12`</ch> en els dos grups:
```{r}
p2_pvalue = p1_2_t_test$p.value
p2_pvalue
```

### Pregunta 3
Estadístic de la prova per comparar <ch>`r var34`</ch> en els dos grups:

```{r}
p3_4_table = table(dd$Grupo, dd[[var34]])
p3_4_table

p3_4_chisq_test = chisq.test(p3_4_table, correct=FALSE)
p3_4_chisq_test

p3_est = p3_4_chisq_test$statistic
p3_est
```

### Pregunta 4
P-valor de la prova per comparar <ch>`r var34`</ch> en els dos grups:
```{r}

p4_pvalue = p3_4_chisq_test$p.value
p4_pvalue
```

## Apartat 2

### Pregunta 5
Estadístic de la prova per comparar el T-Score de <ch>`r var`</ch> Basal dels dos grups:

```{r}
p56_var = paste(var, '_B', sep='')

p56_var_test = var.test(gc[[p56_var]], ge[[p56_var]], ratio=1,
                        alternative='two.sided', conf.level=1 - alpha)
p56_var_test

p56_same_var = (p56_var_test$p.value >= alpha)
if (p56_same_var) {
  printf("Suposarem que la variància de %s en GC i GE és la mateixa.", p56_var)
} else {
  printf("Suposarem que la variància de %s en GC i GE NO és la mateixa.", p56_var)
}

p56_t_test = t.test(gc[[p56_var]], ge[[p56_var]], alternative='two.sided',
                    paired=FALSE, var.equal=p56_same_var, conf.level=1 - alpha)
p56_t_test

p5_est = p56_t_test$statistic
p5_est
```

### Pregunta 6
P-valor de la prova per comparar el T-Score de <ch>`r var`</ch> Basal dels dos grups:

```{r}
p6_pvalue = p56_t_test$p.value
p6_pvalue
```

### Pregunta 7
Estadístic de la prova per comparar el T-Score de <ch>`r var`</ch> Post-Intervenció dels dos grups:

```{r}
p78_var = paste(var, '_P', sep='')

p78_var_test = var.test(gc[[p78_var]], ge[[p78_var]], ratio=1,
                        alternative='two.sided', conf.level=1 - alpha)
p78_var_test

p78_same_var = (p78_var_test$p.value >= alpha)
if (p78_same_var) {
  printf("Suposarem que la variància de %s en GC i GE és la mateixa.", p78_var)
} else {
  printf("Suposarem que la variància de %s en GC i GE NO és la mateixa.", p78_var)
}

p78_t_test = t.test(gc[[p78_var]], ge[[p78_var]], alternative='two.sided',
                    paired=FALSE, var.equal=p78_same_var, conf.level=1 - alpha)
p78_t_test

p7_est = p78_t_test$statistic
p7_est
```

### Pregunta 8
P-valor de la prova per comparar el T-Score de <ch>`r var`</ch> Post-Intervenció dels dos grups:

```{r}
p8_pvalue = p78_t_test$p.value
p8_pvalue
```

## Apartat 3

L'interval de confiança pel test t-Student per observacions aparellades és:
$$IC_{1 - \alpha} (\mu) = \bar{D} \pm t_{n-1, 1-\alpha/2} \frac{S_D}{\sqrt{n}}$$

### Pregunta 9
Límit inferior de l'interval de confiança del `r 100*(1 - alpha)`% per a la diferència del T-Score de <ch>`r var`</ch> en el Grup Control.

```{r}
p9_low = mean(gc[[var_d]]) - qt(1 - alpha/2, df=gc_n - 1)*sd(gc[[var_d]])/sqrt(gc_n)
p9_low
```

### Pregunta 10
Límit superior de l'interval de confiança del `r 100*(1 - alpha)`% per a la diferència del T-Score de <ch>`r var`</ch> en el Grup Control.

```{r}
p10_upp = mean(gc[[var_d]]) + qt(1 - alpha/2, df=gc_n - 1)*sd(gc[[var_d]])/sqrt(gc_n)
p10_upp
```

### Pregunta 11
Límit inferior de l'interval de confiança del `r 100*(1 - alpha)`% per a la diferència del T-Score de <ch>`r var`</ch> en el Grup Experimental.

```{r}
p11_low = mean(ge[[var_d]]) - qt(1 - alpha/2, df=ge_n - 1)*sd(ge[[var_d]])/sqrt(ge_n)
p11_low
```

### Pregunta 12
Límit superior de l'interval de confiança del `r 100*(1 - alpha)`% per a la diferència del T-Score de <ch>`r var`</ch> en el Grup Experimental.

```{r}
p12_upp = mean(ge[[var_d]]) + qt(1 - alpha/2, df=ge_n - 1)*sd(ge[[var_d]])/sqrt(ge_n)
p12_upp
```

## Apartat 4

### Pregunta 13
Estadístic de la prova per comparar el T-Score de <ch>`r var`</ch> Basal vs. Post-Intervenció en el grup Experimental:

```{r}
p13_14_t_test = t.test(ge[[var_p]], ge[[var_b]], alternative='two.sided',
                       paired=TRUE, conf.level=1 - alpha)
p13_14_t_test

p13_est = p13_14_t_test$statistic
p13_est
```


### Pregunta 14
P-valor de la prova per comparar el T-Score de <ch>`r var`</ch> Basal vs. Post-Intervenció en el grup Experimental:

```{r}
p14_pvalue = p13_14_t_test$p.value
p14_pvalue
```

### Pregunta 15
Estadístic de la prova per comparar el T-Score de <ch>`r var`</ch> Basal vs. Post-Intervenció en el grup Control:

```{r}
p15_16_t_test = t.test(gc[[var_p]], gc[[var_b]], alternative='two.sided',
                       paired=TRUE, conf.level=1 - alpha)
p15_16_t_test

p15_est = p15_16_t_test$statistic
p15_est
```

### Pregunta 16
P-valor de la prova per comparar el T-Score de <ch>`r var`</ch> Basal vs. Post-Intervenció en el grup Control:

```{r}
p16_pvalue = p15_16_t_test$p.value
p16_pvalue
```

## Apartat 5

### Pregunta 17
Estadístic de la prova per comparar la diferència del T-Score de <ch>`r var`</ch> (Post-Intervenció - Basal) en els dos grups:

```{r}
p17_18_var_test = var.test(gc[[var_d]], ge[[var_d]], ratio=1,
                           alternative='two.sided', conf.level=1 - alpha)
p17_18_var_test

p17_18_same_var = (p17_18_var_test$p.value >= alpha)
if (p17_18_same_var) {
  printf("Suposarem que la variància de la diferència P-B de %s en GC i GE és la mateixa.", var12)
} else {
  printf("Suposarem que la variància de la diferència P-B de %s en GC i GE NO és la mateixa.", var12)
}

p17_18_t_test = t.test(gc[[var_d]], ge[[var_d]], alternative='two.sided',
                       paired=FALSE, var.equal=p17_18_same_var, conf.level=1 - alpha)
p17_18_t_test

p17_est = p17_18_t_test$statistic
p17_est
```

### Pregunta 18
P-valor de la prova per comparar la diferència del T-Score de <ch>`r var`</ch> (Post-Intervenció - Basal) en els dos grups:

```{r}
p18_pvalue = p17_18_t_test$p.value
p18_pvalue
```


## Resum
1. `r p1_est`
2. `r p2_pvalue`
3. `r p3_est`
4. `r p4_pvalue`
5. `r p5_est`
6. `r p6_pvalue`
7. `r p7_est`
8. `r p8_pvalue`
9. `r p9_low`
10. `r p10_upp`
11. `r p11_low`
12. `r p12_upp`
13. `r p13_est`
14. `r p14_pvalue`
15. `r p15_est`
16. `r p16_pvalue`
17. `r p17_est`
18. `r p18_pvalue`

<!-- Custom styles -->
<style>
/* ch element (|ch| stands for check) */
ch {
  background: #ffe4ff;
  font-weight: bold;
  color: red;
}
</style>