Apresentação

# Esse conjunto de dados contém os registros de interações anônimas do usuário em sete cursos on-line em uma instituição de ensino superior no Brasil. Para cada curso, o conjunto de dados abrange um período que vai de 2017.1 a 2018.1 equivalente a três períodos acadêmicos brasileiros. Todos os cursos online usaram a plataforma de aprendizado Moodle.

# O conjunto de dados abrange os seguintes cursos:
# F - Um curso introdutório de filosofia - obrigatório para todos os alunos
# C - Um curso introdutório de religião - obrigatório para todos os alunos
# S - Curso introdutório de Teoria Política - obrigatório para estudantes da Faculdade de Ciências Humanas e Sociais
# M1 - Curso Equações Diferenciais e Diferenciais - obrigatório para alunos da Escola de Engenharia e Ciências Exatas
# M2 - Curso de Cálculo Variável Único - obrigatório para alunos da Faculdade de Engenharia e Ciências Exatas
# E9 - Curso introdutório de Design de Sistemas de Controle - obrigatório para estudantes da Escola de Engenharia Industrial
# E0 - Curso Fundamentos de Engenharia - obrigatório para todos os alunos da Escola de Engenharia

Aplicando o método Euclidean - Hierárquico

# 1. Selecionando os dados
df1 <- C1_dia2 %>% filter(component=="mod_forum",hora>0)%>% select(diadasemana,hora)

# 2. Comando para padronizar os dados
df1_padronizado <- scale(df1,center = TRUE, scale = TRUE)

# 3. calculando a distância pelo método euclidiano
d <- dist(df1, method = "euclidean")

matrizdedistancia <- as.matrix(d)

# 4. Visualizando a matriz criada com as distâncias entre os elementos.
view(matrizdedistancia)

# 5. aplicando a função de ligação pelo método ward.D
v2 <- hclust(d, method = "ward.D")

# 6. apresentando o gráfico
plot(v2)

# 7. Colocando um indicador em cada elemento de qual cluster ele pertence
vetorcluster <- cutree(v2,4)
table(vetorcluster)
## vetorcluster
##  1  2  3  4 
## 49 41 38  7
# 8. Colocando uma coluna na base original
df1 <- data.frame(df1,cluster = vetorcluster)

# 9. Colocando os três grupos dentro de um boxplot
boxplot(df1$diadasemana ~ vetorcluster)

boxplot(df1$hora ~ vetorcluster)

Dividindo agora em 3 grupos

# Colocando um indicador em cada elemento de qual cluster ele pertence
vetorcluster <- cutree(v2,3)
table(vetorcluster)
## vetorcluster
##  1  2  3 
## 49 48 38
# Colocando uma coluna na base original
df1 <- data.frame(df1,cluster2 = vetorcluster)

# Colocando os três grupos dentro de um boxplot
boxplot(df1$diadasemana ~ vetorcluster)

boxplot(df1$hora ~ vetorcluster)

Aplicando o método k-means - Não Hierárquico

v1 <- kmeans(df1,3)
v1
## K-means clustering with 3 clusters of sizes 82, 45, 8
## 
## Cluster means:
##   diadasemana     hora  cluster cluster2
## 1    3.914634 13.17073 1.487805 1.487805
## 2    2.866667 20.44444 2.688889 2.688889
## 3    3.500000  1.87500 3.750000 2.000000
## 
## Clustering vector:
##   [1] 1 1 1 1 1 1 1 1 1 1 2 3 3 3 3 3 3 1 1 2 2 1 1 2 2 2 2 1 1 2 2 2 2 2 2 1 1
##  [38] 1 2 1 1 1 1 1 2 2 2 1 1 1 1 1 2 2 1 1 2 1 1 1 2 3 2 2 2 2 2 2 2 2 1 1 1 1
##  [75] 1 2 2 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 2 1 1 1 2 2 2 1 1 1
## [112] 1 2 2 1 1 1 1 1 1 2 2 1 1 1 3 2 2 2 1 1 1 1 1 1
## 
## Within cluster sum of squares by cluster:
## [1] 876.9878 351.6000  42.3750
##  (between_SS / total_SS =  71.1 %)
## 
## Available components:
## 
## [1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss"
## [6] "betweenss"    "size"         "iter"         "ifault"
str(v1)                   # Criando um vetor com as informações
## List of 9
##  $ cluster     : int [1:135] 1 1 1 1 1 1 1 1 1 1 ...
##  $ centers     : num [1:3, 1:4] 3.91 2.87 3.5 13.17 20.44 ...
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : chr [1:3] "1" "2" "3"
##   .. ..$ : chr [1:4] "diadasemana" "hora" "cluster" "cluster2"
##  $ totss       : num 4398
##  $ withinss    : num [1:3] 877 351.6 42.4
##  $ tot.withinss: num 1271
##  $ betweenss   : num 3127
##  $ size        : int [1:3] 82 45 8
##  $ iter        : int 2
##  $ ifault      : int 0
##  - attr(*, "class")= chr "kmeans"
plot(df1,col=v1$cluster)  # Plotando com cores