Essa é a solução para o Tema 1 de Métodos Experimentais do PPGA - Semestre 2024/1, Prof. Leonardo Nicolao
Primeiro passo, importando os dados
setwd("~/Meu Drive/GDrive/UFRGS/Ensino/20231/ADP - Experimentos/Temas/HW1")
getwd()
[1] "/Users/lnicolao/Meu Drive/GDrive/UFRGS/Ensino/20231/ADP - Experimentos/Temas/HW1"
library(readr)
dt1.raw <- read_csv("dados_TCC_Sofia.csv", col_names = FALSE, skip = 3)
Rows: 460 Columns: 68
── Column specification ─────────────────────────────────────────────
Delimiter: ","
chr (6): X4, X9, X16, X17, X60, X61
dbl (52): X3, X5, X6, X7, X14, X15, X18, X19, X20, X21, X22, X23...
lgl (7): X10, X11, X12, X13, X49, X55, X57
dttm (3): X1, X2, X8
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
nomes.base <- read_csv("dados_TCC_Sofia.csv", col_names = FALSE)[1,]
Rows: 463 Columns: 68
── Column specification ─────────────────────────────────────────────
Delimiter: ","
chr (68): X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13,...
ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
names(dt1.raw) <- nomes.base
head(dt1.raw)
Limpando os dados
table(dt1.raw$Finished)
0 1
179 281
names(dt1.raw)
[1] "StartDate"
[2] "EndDate"
[3] "Status"
[4] "IPAddress"
[5] "Progress"
[6] "Duration (in seconds)"
[7] "Finished"
[8] "RecordedDate"
[9] "ResponseId"
[10] "RecipientLastName"
[11] "RecipientFirstName"
[12] "RecipientEmail"
[13] "ExternalReference"
[14] "LocationLatitude"
[15] "LocationLongitude"
[16] "DistributionChannel"
[17] "UserLanguage"
[18] "TERMO"
[19] "Atitude_1"
[20] "Atitude_2"
[21] "Atitude_3"
[22] "Atitude_4"
[23] "Atitude_5"
[24] "Atitude_6"
[25] "Atitude_7"
[26] "Atitude_8"
[27] "Atitude_9"
[28] "Autenticidade_1"
[29] "Autenticidade_2"
[30] "Autenticidade_3"
[31] "Autenticidade_4"
[32] "atributos_69"
[33] "atributos_70"
[34] "atributos_71"
[35] "atributos_72"
[36] "atributos_73"
[37] "atributos_74"
[38] "atributos_75"
[39] "preço"
[40] "check_1"
[41] "check_2"
[42] "check_3"
[43] "check_4"
[44] "check_5"
[45] "check_6"
[46] "Conhece"
[47] "Idade"
[48] "Gênero"
[49] "Gênero_4_TEXT"
[50] "Etnia_1"
[51] "Etnia_2"
[52] "Etnia_3"
[53] "Etnia_4"
[54] "Etnia_5"
[55] "Etnia_6"
[56] "Etnia_7"
[57] "Etnia_6_TEXT"
[58] "Ensino"
[59] "Renda"
[60] "Espaço Aberto"
[61] "Email"
[62] "FL_15_DO_707_sustentavel"
[63] "FL_15_DO_707_funcional"
[64] "FL_15_DO_707_simbolico"
[65] "AtitudeeAutenticidade_DO_Atitude"
[66] "AtitudeeAutenticidade_DO_Autenticidade"
[67] "Percepção_DO_preço"
[68] "Percepção_DO_atributos"
table(dt1.raw$TERMO)
1 2
458 2
dt1 <- subset(dt1.raw, dt1.raw$Finished == 1 & dt1.raw$TERMO == 1)
table(dt1$Finished)
1
279
names(dt1)
[1] "StartDate"
[2] "EndDate"
[3] "Status"
[4] "IPAddress"
[5] "Progress"
[6] "Duration (in seconds)"
[7] "Finished"
[8] "RecordedDate"
[9] "ResponseId"
[10] "RecipientLastName"
[11] "RecipientFirstName"
[12] "RecipientEmail"
[13] "ExternalReference"
[14] "LocationLatitude"
[15] "LocationLongitude"
[16] "DistributionChannel"
[17] "UserLanguage"
[18] "TERMO"
[19] "Atitude_1"
[20] "Atitude_2"
[21] "Atitude_3"
[22] "Atitude_4"
[23] "Atitude_5"
[24] "Atitude_6"
[25] "Atitude_7"
[26] "Atitude_8"
[27] "Atitude_9"
[28] "Autenticidade_1"
[29] "Autenticidade_2"
[30] "Autenticidade_3"
[31] "Autenticidade_4"
[32] "atributos_69"
[33] "atributos_70"
[34] "atributos_71"
[35] "atributos_72"
[36] "atributos_73"
[37] "atributos_74"
[38] "atributos_75"
[39] "preço"
[40] "check_1"
[41] "check_2"
[42] "check_3"
[43] "check_4"
[44] "check_5"
[45] "check_6"
[46] "Conhece"
[47] "Idade"
[48] "Gênero"
[49] "Gênero_4_TEXT"
[50] "Etnia_1"
[51] "Etnia_2"
[52] "Etnia_3"
[53] "Etnia_4"
[54] "Etnia_5"
[55] "Etnia_6"
[56] "Etnia_7"
[57] "Etnia_6_TEXT"
[58] "Ensino"
[59] "Renda"
[60] "Espaço Aberto"
[61] "Email"
[62] "FL_15_DO_707_sustentavel"
[63] "FL_15_DO_707_funcional"
[64] "FL_15_DO_707_simbolico"
[65] "AtitudeeAutenticidade_DO_Atitude"
[66] "AtitudeeAutenticidade_DO_Autenticidade"
[67] "Percepção_DO_preço"
[68] "Percepção_DO_atributos"
Definindo as condições
dt1$condicao <- "Leo"
dt1$condicao[dt1$FL_15_DO_707_funcional==1] <- 0
dt1$condicao[dt1$FL_15_DO_707_simbolico==1] <- -1
dt1$condicao[dt1$FL_15_DO_707_sustentavel==1] <- +1
table(dt1$condicao)
-1 0 1
93 89 97
dt1$condicao.f <- factor(dt1$condicao, levels = c(-1,0,1),
labels = c("Simbólico","Funcional","Sustentável"))
table(dt1$condicao.f)
Simbólico Funcional Sustentável
93 89 97
library(questionr)
freq(dt1$condicao.f, total = TRUE, valid = FALSE)
Gráficos
require(ggsci)
require(ggplot2)
dt1$genero.f <- factor(dt1$Gênero, levels = c(1,2,3),
labels = c("Feminino","Masculino","Não Binário"))
t.genero <- freq(dt1$genero.f, digits = 2, exclude = NA, total = T)
ggplot(t.genero[-4,], aes(x="", y=`%`,fill=rownames(t.genero[-4,]), label = round(`%`,2)))+
geom_bar(width = 1, stat = "identity")+
geom_text(position = position_stack(vjust = 0.5),size = 5)+
scale_fill_npg() +
labs(x=NULL,fill="Gênero",y="%",title="Gênero dos Respondentes")+
coord_polar("y", start=0)
Idade dos Respondentes
mean(dt1$Idade, na.rm = T)
[1] 28.61993
sd(dt1$Idade, na.rm = T)
[1] 10.72758
library(psych)
psych::describe(dt1$Idade)
ggplot(dt1, aes(x=Idade)) +
geom_histogram(aes(y=..density..),binwidth = 1, color="grey",fill="grey")+
geom_density(alpha=.2, fill="green")+
geom_vline(aes(xintercept=mean(Idade,na.rm=T)),color="blue",linetype="dashed",size=1)+
labs(title="Idade dos Respondentes",y=NULL,x="Idade")
Warning: Removed 8 rows containing non-finite outside the scale range
(`stat_bin()`).
Warning: Removed 8 rows containing non-finite outside the scale range
(`stat_density()`).
Renda dos Participantes
dt1$renda.f <- factor(dt1$Renda, levels = seq(1:8),
labels = c("Até R$ 1.100",
"De R$ 1.101 a R$ 3.300",
"De R$ 3.301 a R$ 6.600",
"De R$ 6.601 a R$ 9.900",
"De R$ 9.901 a R$ 13.200",
"De R$ 13.201 a R$ 16.500",
"Acima de R$ 16.501",
"Prefiro não dizer"))
t.renda <- freq(dt1$renda.f, total = T, valid = F, digits = 2)
t.renda
ggplot(data=t.renda[-9,], aes(x=rownames(t.renda[-9,]), y=n)) +
geom_bar(stat="identity", fill="purple")+
labs(title="Renda dos Respondentes", y="Número de Respostas", x="Faixas de Renda")+
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Atitude em Relação à Marca
dt1$atitude.df <- data.frame(dt1$Atitude_1,dt1$Atitude_2,dt1$Atitude_3,
dt1$Atitude_4,dt1$Atitude_5,dt1$Atitude_6,
dt1$Atitude_7,dt1$Atitude_8,dt1$Atitude_9)
dt1$atitude.media <- rowMeans(dt1$atitude.df)
psych::describe(dt1$atitude.media)
ggplot(dt1, aes(x=atitude.media)) +
geom_histogram(aes(y=..density..),binwidth = 1, color="grey",fill="grey")+
geom_density(alpha=.2, fill="cyan")+
geom_vline(aes(xintercept=mean(atitude.media,na.rm=T)),color="blue",linetype="dashed",size=1)+
labs(title="Atitude Média em Relação à Marca",y=NULL,x="Atitude")
Criando uma variável composta para autenticidade
dt1$autenticidade.df <- data.frame(dt1$Autenticidade_1,
dt1$Autenticidade_2,
dt1$Autenticidade_3,
dt1$Autenticidade_4)
dt1$autenticidade <- rowMeans(dt1$autenticidade.df, na.rm = T)
ggplot(dt1, aes(x=autenticidade)) +
geom_histogram(aes(y=..density..),binwidth = 1, color="grey",fill="grey")+
geom_density(alpha=.2, fill="orange")+
geom_vline(aes(xintercept=mean(autenticidade,na.rm=T)),color="red",linetype="dashed",size=1)+
labs(title="Autenticidade da Marca",y=NULL,x="Autenticidade")
Testar o efeito experimental na atitude em relação à marca
descritiva_atitude <- describeBy(dt1$atitude.media, dt1$condicao.f, digits = 2, mat = T)
rownames(descritiva_atitude) <- NULL
descritiva_atitude
anova_atitude <- aov(atitude.media ~ condicao.f, data = dt1)
summary(anova_atitude)
Df Sum Sq Mean Sq F value Pr(>F)
condicao.f 2 10.68 5.341 11.19 2.13e-05 ***
Residuals 276 131.79 0.477
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Existe diferença significativa entre as médias de atitude em relação à marca entre as propagandas apresentadas de forma Sustentável, Funcional e Simbólica, F(2,276) = 11,19, p < 0,05.
Fazendo uma análise de contraste (Tukey) para descobrir de onde vêm as diferenças
TukeyHSD(anova_atitude)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = atitude.media ~ condicao.f, data = dt1)
$condicao.f
diff lwr upr p adj
Funcional-Simbólico 0.08000752 -0.1614495 0.3214645 0.7151336
Sustentável-Simbólico 0.44434591 0.2080316 0.6806602 0.0000402
Sustentável-Funcional 0.36433839 0.1253283 0.6033485 0.0011275
Essa diferença estatisticamente significante é observada entre as condições Sustentável e Simbólica, e Sustentável e Funcional (p < 0,05). As condições Simbólica e Funcional não são significativamente diferentes entre si.
Visualizando esse efeito.
ggplot(data=descritiva_atitude, aes(x=descritiva_atitude[,2], y=mean)) +
geom_bar(stat="identity", fill="darkgreen")+
labs(title="Atitude Média por Condição Experimental", y="Atitude Média", x="Condições Experimentais")+
coord_cartesian(ylim=c(1,7))
descritiva_autenticidade <- describeBy(dt1$autenticidade, dt1$condicao.f, digits = 2, mat = T)
rownames(descritiva_autenticidade) <- NULL
descritiva_autenticidade
anova_autenticidade <- aov(autenticidade ~ condicao.f, data = dt1)
summary(anova_autenticidade)
Df Sum Sq Mean Sq F value Pr(>F)
condicao.f 2 3.58 1.7899 3.469 0.0325 *
Residuals 276 142.39 0.5159
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
TukeyHSD(anova_autenticidade)
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = autenticidade ~ condicao.f, data = dt1)
$condicao.f
diff lwr upr p adj
Funcional-Simbólico 0.01624985 -0.2347285204 0.2672282 0.9872497
Sustentável-Simbólico 0.24539962 -0.0002332771 0.4910325 0.0502793
Sustentável-Funcional 0.22914977 -0.0192851678 0.4775847 0.0775715
O posicionamento de marca que é percebido como mais autêntico é o Sustentável, F(2,276) = 3,46, p = 0,0325.
Colocando em gráfico
ggplot(data=descritiva_autenticidade, aes(x=descritiva_autenticidade[,2], y=mean)) +
geom_bar(stat="identity", fill="lightblue")+
labs(title="Autenticidade Média por Condição Experimental", y="Autenticidade Média", x="Condições Experimentais")+
coord_cartesian(ylim=c(1,7))
Fim do Tema 2
#Fim do Tema 2