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
