diff --git a/classes/11feb.R b/classes/feb11.R
similarity index 100%
rename from classes/11feb.R
rename to classes/feb11.R
diff --git a/classes/11feb_practica1.R b/classes/feb11_practica1.R
similarity index 100%
rename from classes/11feb_practica1.R
rename to classes/feb11_practica1.R
diff --git a/classes/feb16.R b/classes/feb16.R
new file mode 100644
index 0000000..ba06a98
--- /dev/null
+++ b/classes/feb16.R
@@ -0,0 +1,74 @@
+# Classe 16/02/2021
+# Estadística, FME, presencial, curs 2020-21, 2n semestre
+
+library(tables)
+library(RcmdrMisc)
+
+# Conversió de dades
+dd = read.csv2("Enquesta.csv")
+dd$MO = factor(dd$MO, labels=c("No", "Sí"))
+dd$Envas = factor(dd$Envas, labels=c("No", "Sí"))
+dd$Vidre = factor(dd$Vidre, labels=c("No", "Sí"))
+dd$Sexe = factor(dd$Sexe)
+dd$Aspecte = factor(dd$Aspecte)
+dd$IM = dd$D2/dd$D4
+
+
+# Apartats 1 i 2
+dd$BMI = dd$Pes/(dd$H/100)^2
+dd$CBMI = cut(dd$BMI, c(0, 19, 27, 100), labels=c("1-baix", "2-mig", "3-alt"))
+head(dd)
+
+# Apartat 3
+summary(dd$Edat)
+mean(dd$Edat, trim=.1)
+boxplot(dd$Edat)
+
+boxplot(dd$Pes)
+boxplot(dd$H)
+boxplot(dd$D2)
+
+tsexe = table(dd$Sexe)
+tsexe
+barplot(tsexe)
+
+tmo = table(dd$MO)
+tmo
+barplot(tmo)
+
+tvidre = table(dd$Vidre)
+tvidre
+barplot(tvidre)
+
+tenvas = table(dd$Envas)
+tenvas
+barplot(tenvas)
+
+tpc = table(dd$PC)
+tpc
+barplot(tpc)
+
+taspecte = table(dd$Aspecte)
+taspecte
+barplot(taspecte)
+
+# Apartat 4
+boxplot(dd$BMI)
+abline(h=c(19, 27))
+
+# Apartat 5
+hist(dd$Pes, freq=F, ylim=c(0, 0.04), xlim=c(30, 130))
+curve(dnorm(x, mean=mean(dd$Pes), sd=sd(dd$Pes)), add=T)
+
+boxplot(dd$IM)
+
+# == BLOC 2 - ANÀLISI DESCRIPTIVA ==
+# Apartat 1
+# Tabular:
+#   ~: Separa files i columnes
+#   +: Concatena
+#   *: Nesting
+tabular(mean*(Sexe+1)~H*(CBMI+1), dd)
+tabular(var*Sexe~H*CBMI, dd)
+interaction.plot(dd$CBMI, dd$Sexe, dd$H)
+plotMeans(dd$H, dd$CBMI, dd$Sexe, error.bars="sd")
diff --git a/classes/feb18.R b/classes/feb18.R
new file mode 100644
index 0000000..d10d599
--- /dev/null
+++ b/classes/feb18.R
@@ -0,0 +1,83 @@
+# Classe 18/02/2021
+# Estadística, FME, presencial, curs 2020-21, 2n semestre
+
+library(car)
+library(RcmdrMisc)
+
+source("feb16.R")
+
+# "El data frame és una generalització de la matriu."
+# Matriu: tots els elements han de ser del mateix tipus.
+# Data frame: no té per què, cada columna pot ser de diferent tipus.
+
+# Pregunta: podem tenir un vector però que admeti diversos elements de tipus
+# diferents?
+# SÍ! Es diu "llista".
+aaa = table(dd$MO)
+aaa
+
+bbb = table(dd$PC, dd$Sexe)
+bbb
+
+ccc = matrix((1:24), nrow=6, ncol=4)
+ccc
+
+ddd = c(3>2, 3>10, 2==4)
+ddd
+
+prova = list(a=aaa, b=bbb, ccc, ddd, dd$Edat)
+prova
+
+# str serveix per mostrrar l'estructura (str ~= structure):
+str(prova)
+
+# Per comprovar si un objecte és d'un tipus concret:
+is.matrix(aaa)
+is.integer(ddd)
+is.logical(ddd)
+
+# També es poden convertir els objectes. Ex: mirar com fer-ho (la instrucció és
+# semblant a as.matrix)
+
+# Per no haver de ficar |dd| tota l'estona, podem usar |with|
+with(dd, plot(H, Pes))
+with(dd, cor(H, Pes))
+
+## == BLOC 3 - ANÀLISI DESCRIPTIVA BIVARIANT ==
+# Apartat 1.a)
+scatterplot(Pes~H, data=dd)
+scatterplot(Pes~H, data=dd, smooth=F, box=F)
+scatterplot(BMI~Edat, data=dd, smooth=F, box=F)
+cor(dd[,c("Pes", "H", "BMI", "Edat")])
+
+# Apartat 1.b)
+SQ = function(ab) {
+  sum((dd$Pes - ab[1] - ab[2]*dd$H)^2)
+}
+
+s1 = nlm(SQ, c(1, 0), hessian=T)
+s1
+det(s1$hessian)
+
+s2 = optim(c(2, 3), SQ, hessian=T)
+s2
+
+s1$estimate
+s2$par
+scatterplot(Pes~H, data=dd, smooth=F, box=F)
+abline(s1$estimate, col="orange")
+abline(s2$par, col="red")
+
+# Apartat 2
+by(dd$H, dd$Sexe, summary)
+by(dd$Pes, dd$Sexe, summary)
+by(dd$D2, dd$Sexe, summary)
+scatterplot(Pes~H|Sexe, data=dd, smooth=F, box=F)
+scatterplot(BMI~Edat|Sexe, data=dd, smooth=F, box=F)
+scatterplot(D2~H|Sexe, data=dd, smooth=F, box=F)
+with(dd, Barplot(MO, by=Sexe, style="divided", legend.pos="above", xlab="MO", ylab="Frequencia"))
+with(dd, Barplot(Sexe, by=MO, style="divided", legend.pos="above", xlab="MO", ylab="Frequencia"))
+with(dd, Barplot(Sexe, by=MO, style="parallel", legend.pos="above", xlab="MO", ylab="Frequencia"))
+with(dd, Barplot(Sexe, by=MO, style="parallel", legend.pos="above", xlab="MO", ylab="Frequencia", scale="percent"))
+plot(table(dd$MO, dd$Sexe))
+plot(table(dd$MO, dd$Sexe), ylab="Sexe", main="Sexe")
