library(stringr)
library(readr)
library(dplyr)
library(data.table)
library(readxl)
library(tidyr)
library(tidyr)
library(fuzzyjoin)
library(xfun)
library(purrr)
library(knitr)TASComp Estudo piloto
Dados do estudo piloto
Foram analisadas a acurácia e o tempo médio de resposta por cada participante em cada tipo de sentença, e agrupado por cada tipo de sentença considerando a amostra total
Neste arquivo será apresentado o passo a passo do código para leitura dos dados
Carregando pacotes
.libPaths()[1] "C:/Users/carol/OneDrive/Documentos/R/win-library/4.0"
[2] "C:/Program Files/R/R-4.0.5/library"
Selecionando o diretório
Selecionar o diretório para “puxar” os dados da pasta
Os arquivos do Psytoolkit são salvos separadamente, por participante - e também separados em arquivos de experimento e arquivos de eperimento
Unindo os arquivos separados
dadospiloto1 <- list.files(full.names = FALSE) %>%# organiza arquivos da pasta
sapply(., read_table, col_names = FALSE , simplify = F) %>%
# faz a leitura dos arquivos e transforma em lista
rbindlist(., use.names = TRUE, idcol = "id", fill= TRUE) %>%
# transforma a variavel em um data frame e cria uma coluna com o nome do arquivo de origem
mutate(id = str_sub(id, end = -5)) # para tirar os textos "a mais"
names(dadospiloto1)=c("ID", "exp","questao" ,"tipo", "condicao","RT", "pontuacao", "tempo", "acerto", "resposta") #renomeia o nome de cada coluna do data framedadospiloto1$tempo <- as.numeric(dadospiloto1$tempo)
t1 <- dadospiloto1 %>% group_by(ID, condicao) %>%
summarise(mean(tempo), median(tempo)) #calcula a media e mediana para cada condicao
t2 <- dadospiloto1 %>% group_by(ID, condicao) %>%
summarise(sum(acerto == "Correto") * 100/n()) #soma o numero de acertos, multiplica por 100 e divide pelo numero de trials
final_dados <- list(t1, t2) %>% reduce(inner_join) %>%
mutate_if(., is.numeric, round, 2)
names(final_dados)=c("ID", "condicao", "Mean(tempo)", "Median(tempo)","pontuacao") #renomeia as colunas
write.csv("dadospiloto.csv") "","x"
"1","dadospiloto.csv"
write.csv("final_dados.csv")"","x"
"1","final_dados.csv"
Arquivos
O arquivo dados piloto 1 contém todas as respostas de todos os participantes (como salvo no slide anterior)
O arquivo final_dados já agrupa o tempo e os acertos por condição, em cada participante - assim como define a acurácia em porcentagem
Não utilizado nesse momento…
#remover outliers +- 2dp
#dados <- subset(filtro,filtro$RT > mean(filtro$RT, na.rm = TRUE) -
#2*sd(filtro$RT, na.rm = TRUE) &
#filtro$RT < mean(filtro$RT, na.rm = TRUE) +
#2*sd(filtro$RT, na.rm = TRUE))
#filtro <- dadospiloto %>% filter(ID != "", Status == "Correto",
#Block != "training")Construindo tabelas
library(reactable)
table <- reactable(final_dados,
defaultColDef = colDef(
minWidth = 100,
width = 150,
style = list(padding = "0 13px"), html = TRUE
)
)
table <- reactable(final_dados, searchable = TRUE)
table# table
# save widget
# library(htmltools)
# saveWidget(table, file="../HtmlWidget/reactable1.html")library(reactable)
table <- reactable(
final_dados,
searchable = TRUE,
filterable = TRUE,
highlight = TRUE,
striped = TRUE,
bordered = TRUE,
resizable = TRUE,
defaultColDef = colDef(
minWidth = 100,
width = 200,
align = "center",
style = list(padding = "0 13px"),
html = TRUE
)
)
table <- reactable(final_dados, searchable = TRUE)
tableTempo e % de acertos por participante em cada bloco (tipo de sentença)
summary_condition <- final_dados %>%
group_by(condicao) %>%
summarise(media_acuracia = mean(pontuacao, na.rm = TRUE)) %>%
ungroup()
summary_condition$media_acuracia <- round(summary_condition$media_acuracia, 2)
library(ggplot2)Tabela com % média de acertos por condição
library(reactable)
table1 <- reactable(
summary_condition,
columns = list(
condicao = colDef(name = "condicao"),
media_acuracia = colDef(
name = "media_acuracia",
sortable=TRUE
)
),
striped = TRUE,
highlight = TRUE,
bordered = TRUE
)
table1 <- reactable(summary_condition, searchable = TRUE)
table1summary_condition_ID <- final_dados %>%
group_by(ID) %>%
summarise(media_acuracia_ID = mean(pontuacao, na.rm = TRUE)) %>%
ungroup()
summary_condition_ID$media_acuracia_ID <- round(summary_condition_ID$media_acuracia_ID, 2) #reduzindo o numero de casas decimais
library(ggplot2)Tabela com % média de acertos por participante
library(reactable)
table1_ID <- reactable(
summary_condition_ID,
columns = list(
ID = colDef(name = "ID"),
media_acuracia_ID = colDef(
name = "media_acuracia",
sortable=TRUE
)
),
striped = TRUE,
highlight = TRUE,
bordered = TRUE
)
table1_ID <- reactable(summary_condition_ID, searchable = TRUE)
table1_IDGráfico
% acurácia em cada bloco
# Supondo que seu data frame original se chame df
summary_condition <- summary_condition %>%
group_by(condicao) %>%
summarise(
media_acuracia = media_acuracia,
se = sd(media_acuracia) / sqrt(n())
)
# Criar o gráfico de barras com erro padrão
ggplot(summary_condition, aes(x = condicao, y = media_acuracia)) +
geom_bar(stat = "identity", fill = "steelblue") +
geom_errorbar(aes(ymin = media_acuracia - se, ymax = media_acuracia + se),
width = 0.2) +
labs(x = "Condição", y = "Média de Acurácia") +
theme_grey() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))library(ggplot2)
ggplot(dadospiloto1, aes(x = condicao, y = tempo)) +
geom_boxplot(fill = "skyblue") +
labs(x = "Condição", y = "Tempo") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 60, hjust = 1))library(dplyr)
final_dados <- final_dados %>%
rename(tempo = `Mean(tempo)`)Carregando tabelas com info do questionário
Carregando tabelas com informações do questionário e outras preenchidas separadamente (idade, gênero dos participantes + informações do survey)
Unir a tabela com os dados do experimento
library(readr)
info_piloto <- read_delim("info_piloto.csv",
delim = ";", escape_double = FALSE, trim_ws = TRUE,
show_col_types = FALSE)
#junta os dados dos dois bancos
piloto_final_info <- stringdist_join(info_piloto, dadospiloto1,
by='ID', # junta os bancos de dados de acordo com a coluna ID
mode='inner', #use left join
method = "jw", #use jw distance metric
max_dist= 0.1,
distance_col='dist') %>%
group_by(ID.x) %>% slice_min(order_by=dist, n=1)
#write_csv(final, file = "dados_final_piloto.csv")
reactable(piloto_final_info)