---
title: "Generosity vs Justice V6"
author: 'Marcus + Lizy + Nadia'
date: "8/2/2023"
format:
html:
code-fold: true
code-tools: true
fontsize: 16px
self-contained: true
toc: true
toc-location: left
output:
html_document:
code_folding: hide
number_sections: true
toc: true
toc_float: true
toc_collapsed: true
toc_depth: 3
keep_md: true
header-includes:
- \usepackage{Roboto Condensed}
knitr:
opts_chunk:
dev: ragg_png
execute:
warning: false
---
# Overview and Methodology
- Study of third party judgments of donors motivated by a justice or generosity virtue
- Data collected August 2, 2023
- N = 200
# Setup {.tabset .tabset-pills}
## Libraries and functions {.unlisted .unnumbered}
```{r setup, message=F, results='hide', warning=FALSE}
knitr:: opts_chunk$ set (warning = FALSE , message = FALSE )
Mypackages <-
c ("lme4" ,"tidyverse" ,"effects" ,"ggplot2" ,"psych" ,
"MASS" ,"Rmisc" ,"lmerTest" ,"ggthemes" , "knitr" ,
"lsmeans" ,"pastecs" ,"sjstats" ,"car" ,"ordinal" ,
"Rcpp" ,"corrplot" , "ggpubr" , "EnvStats" ,
"easyStats" , "cowplot" ,"see" ,"datawizard" , "ggcorrplot" , "RColorBrewer" )
#install.packages(Mypackages) #you must remove the # in this comment if you need to install the packages!
lapply (Mypackages,
require,
character.only = TRUE )
options (knitr.kable.NA = '—' )
set.seed (1 )
```
## Load Data
```{r, message=F, results='hide', warning=FALSE}
# read in data files
gjg <- read.csv ("/Users/mtrenfield17/Desktop/Research/Boston College Research/Morality Lab Research/Generosity Vs Justice Project/just_vs_gen_v6/Gen_Just_V6 (1).csv" )
```
## Reshaping data
```{r}
# fixing coding error
gjg$ vigFirstVirtue <- ifelse (gjg$ vigOrder == "justiceCommitFirst" , "justice" ,
ifelse (gjg$ vigOrder == "genCommitFirst" , "generosity" ,
ifelse (gjg$ vigOrder == "justiceValueFirst" , "justice" ,
ifelse (gjg$ vigOrder == "genValueFirst" , "generosity" , NA ))))
gjg$ vigSecondVirtue <- ifelse (gjg$ vigOrder == "justiceCommitFirst" , "generosity" ,
ifelse (gjg$ vigOrder == "genCommitFirst" , "justice" ,
ifelse (gjg$ vigOrder == "justiceValueFirst" , "generosity" ,
ifelse (gjg$ vigOrder == "genValueFirst" , "justice" , NA ))))
# changing appropriate DVs to numeric
cols_to_convert <- c ("age" , "income" , "ses" , "political_overall" , "political_social" , "political_economic" , "attn_self" , "pid" )
gjg[cols_to_convert] <- lapply (gjg[cols_to_convert], as.numeric)
gjg$ reputation_signal_just <- NA
gjg$ reputation_signal_gen <- NA
gjg$ reputation_signal_just <- ifelse (gjg$ vigFirstVirtue == "justice" , gjg$ reputation_signal_1, gjg$ reputation_signal_2)
gjg$ reputation_signal_gen <- ifelse (gjg$ vigFirstVirtue == "justice" , gjg$ reputation_signal_2, gjg$ reputation_signal_1)
convert_vigOrder_columns <- function (data, column_just, column_gen, vigFirstVirtue_col) {
# Create new columns for "_just" and "_gen"
data[[column_just]] <- ifelse (data[[vigFirstVirtue_col]] == "justice" ,
data[[paste0 (column_just, "_1" )]], data[[paste0 (column_just, "_2" )]])
data[[column_gen]] <- ifelse (data[[vigFirstVirtue_col]] == "justice" ,
data[[paste0 (column_just, "_2" )]], data[[paste0 (column_just, "_1" )]])
# Replace missing values with NA
data[[column_just]][is.na (data[[column_just]])] <- NA
data[[column_gen]][is.na (data[[column_gen]])] <- NA
# Remove "_1" and "_2" from the column names
names (data[[column_just]]) <- gsub ("_1$" , "_just" , names (data[[column_just]]))
names (data[[column_gen]]) <- gsub ("_2$" , "_gen" , names (data[[column_gen]]))
# Return the modified data frame
return (data)
}
gjg <- convert_vigOrder_columns (gjg, "norm_signal" , "norm_signal_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "norm_signal" ] <- "norm_signal_just"
gjg <- convert_vigOrder_columns (gjg, "approval" , "approval_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "approval" ] <- "approval_just"
gjg <- convert_vigOrder_columns (gjg, "moral" , "moral_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "moral" ] <- "moral_just"
gjg <- convert_vigOrder_columns (gjg, "genuine" , "genuine_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "genuine" ] <- "genuine_just"
gjg <- convert_vigOrder_columns (gjg, "deliberate" , "deliberate_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "deliberate" ] <- "deliberate_just"
gjg <- convert_vigOrder_columns (gjg, "spontaneous" , "spontaneous_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "spontaneous" ] <- "spontaneous_just"
gjg <- convert_vigOrder_columns (gjg, "emotion" , "emotion_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "emotion" ] <- "emotion_just"
gjg <- convert_vigOrder_columns (gjg, "logic" , "logic_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "logic" ] <- "logic_just"
gjg <- convert_vigOrder_columns (gjg, "quick" , "quick_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "quick" ] <- "quick_just"
gjg <- convert_vigOrder_columns (gjg, "slow" , "slow_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "slow" ] <- "slow_just"
gjg <- convert_vigOrder_columns (gjg, "warm" , "warm_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "warm" ] <- "warm_just"
gjg <- convert_vigOrder_columns (gjg, "good.natured" , "good.natured_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "good.natured" ] <- "good.natured_just"
gjg <- convert_vigOrder_columns (gjg, "tolerant" , "tolerant_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "tolerant" ] <- "tolerant_just"
gjg <- convert_vigOrder_columns (gjg, "sincere" , "sincere_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "sincere" ] <- "sincere_just"
gjg <- convert_vigOrder_columns (gjg, "competent" , "competent_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "competent" ] <- "competent_just"
gjg <- convert_vigOrder_columns (gjg, "confident" , "confident_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "confident" ] <- "confident_just"
gjg <- convert_vigOrder_columns (gjg, "independent" , "independent_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "independent" ] <- "independent_just"
gjg <- convert_vigOrder_columns (gjg, "competitive" , "competitive_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "competitive" ] <- "competitive_just"
gjg <- convert_vigOrder_columns (gjg, "intelligent" , "intelligent_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "intelligent" ] <- "intelligent_just"
gjg <- convert_vigOrder_columns (gjg, "politics" , "politics_gen" , "vigFirstVirtue" )
names (gjg)[names (gjg) == "politics" ] <- "politics_just"
```
# Attention check
```{r,message=F, results='hide', warning=FALSE}
# filtering out failures/nonresponses to attention checks
length (gjg$ pid)
gjg <- gjg %>%
filter (attn_self> 2 )
length (gjg$ pid)
```
# Demographics
```{r,message=F, results='hide', warning=FALSE}
# Subset your data frame to include only the demographic columns
numeric_demos <- gjg[,c ("age" , "income" , "ses" , "political_social" , "political_economic" )]
# descriptive stats for numeric demos
describeBy (numeric_demos)
gjg$ gender <- as.factor (as.character (gjg$ gender))
levels (gjg$ gender)
table (gjg$ gender)
gjg$ gender <- ifelse (gjg$ gender == 1 , "Man" ,
ifelse (gjg$ gender == 2 , "Woman" ,
ifelse (gjg$ gender == 3 , "Nonbinary person or Other" ,
ifelse (gjg$ gender == 4 , NA , NA ))))
prop.table (table (gjg$ gender, useNA= "always" ))
gjg$ race<- as.factor (gjg$ race)
levels (gjg$ race)
table (gjg$ race)
gjg$ race <- ifelse (gjg$ race == 1 , "American Indian or Alaskan Native" ,
ifelse (gjg$ race == 2 , "Asian" ,
ifelse (gjg$ race == 3 , "Black" ,
ifelse (gjg$ race == 100 , "Middle Eastern" ,
ifelse (gjg$ race == 4 , "Native Hawaiian or Other Pacific Islander" ,
ifelse (gjg$ race == 5 , "White" ,
ifelse (gjg$ race == 6 , "Latinx" ,
ifelse (gjg$ race == 7 | gjg$ race == 99 , "Unlisted" ,
ifelse (gjg$ race == "" , "Unlisted" ,
ifelse (grepl ("," , gjg$ race), "Multiracial" , NA ))))))))))
gjg$ race<- as.factor (gjg$ race)
levels (gjg$ race)
table (gjg$ race)
prop.table (table (gjg$ race))
gjg$ income <- as.factor (as.character (gjg$ income))
levels (gjg$ income)
table (gjg$ income)
gjg$ income <- ifelse (gjg$ income == 1 , "<$10,000" ,
ifelse (gjg$ income == 2 , "$10,000-$19,999" ,
ifelse (gjg$ income == 3 , "$20,000-$29,999" ,
ifelse (gjg$ income == 4 , "$30,000-$39,999" ,
ifelse (gjg$ income == 5 , "$40,000-$49,999" ,
ifelse (gjg$ income == 6 , "$50,000-$74,999" ,
ifelse (gjg$ income == 7 , "$75,000-$99,999" ,
ifelse (gjg$ income == 8 , "$100,000-$149,999" ,
ifelse (gjg$ income == 9 , ">$150,000" , NA )))))))))
prop.table (table (gjg$ income, useNA= "always" ))
gjg$ education <- as.factor (as.character (gjg$ education))
levels (gjg$ education)
table (gjg$ education)
gjg$ education <- ifelse (gjg$ education == 1 , "Less than a high school diploma" ,
ifelse (gjg$ education == 2 , "High school degree or equivalent" ,
ifelse (gjg$ education == 3 , "Some college, no degree" ,
ifelse (gjg$ education == 4 , "Associate Degree" ,
ifelse (gjg$ education == 5 , "Bachelor's Degree" ,
ifelse (gjg$ education == 6 , "Postgraduate Degree" , NA ))))))
prop.table (table (gjg$ education, useNA= "always" ))
gjg$ political_party <- as.factor (as.character (gjg$ political_party))
levels (gjg$ political_party)
table (gjg$ political_party)
gjg$ political_party <- ifelse (gjg$ political_party == 1 , "Republican" ,
ifelse (gjg$ political_party == 2 , "Democrat" ,
ifelse (gjg$ political_party == 3 , "Independent" ,
ifelse (gjg$ political_party == 4 , "Something else" , NA ))))
prop.table (table (gjg$ political_party, useNA= "always" ))
# Create composite political measures
gjg$ polit_self <- ifelse (gjg$ political_overall %in% c (1 , 2 , 3 ), "Democrat" ,
ifelse (gjg$ political_overall == 4 , "Moderate" ,
ifelse (gjg$ political_overall %in% c (5 , 6 , 7 ), "Republican" , NA )))
```
# Correlation
```{r fig.dim = c(12, 10)}
cols_to_convert <- c ("reputation_signal_just" , "reputation_signal_gen" , "norm_signal_just" , "norm_signal_gen" , "approval_just" , "approval_gen" , "moral_just" , "moral_gen" , "genuine_just" , "genuine_gen" , "deliberate_just" , "deliberate_gen" , "spontaneous_just" , "spontaneous_gen" , "emotion_just" , "emotion_gen" , "logic_just" , "logic_gen" , "quick_just" , "quick_gen" , "slow_just" , "slow_gen" , "warm_just" , "warm_gen" , "good.natured_just" , "good.natured_gen" , "tolerant_just" , "tolerant_gen" , "sincere_just" , "sincere_gen" , "competent_just" , "competent_gen" , "confident_just" , "confident_gen" , "independent_just" , "independent_gen" , "competitive_just" , "competitive_gen" , "intelligent_just" , "intelligent_gen" , "politics_just" , "politics_gen" , "age" , "ses" , "political_overall" , "political_social" , "political_economic" )
names (gjg)
gjg[cols_to_convert] <- lapply (gjg[cols_to_convert], as.numeric)
DVs <- gjg[c ("reputation_signal_just" ,"reputation_signal_gen" ,"norm_signal_just" ,"norm_signal_gen" ,"approval_just" ,"approval_gen" ,"moral_just" ,"moral_gen" ,"genuine_just" ,"genuine_gen" ,"deliberate_just" ,"deliberate_gen" ,"spontaneous_just" ,"spontaneous_gen" ,"emotion_just" ,"emotion_gen" ,"logic_just" ,"logic_gen" ,"quick_just" ,"quick_gen" ,"slow_just" ,"slow_gen" ,"warm_just" ,"warm_gen" ,"good.natured_just" ,"good.natured_gen" ,"tolerant_just" ,"tolerant_gen" ,"sincere_just" ,"sincere_gen" ,"competent_just" ,"competent_gen" ,"confident_just" ,"confident_gen" , "independent_just" ,"independent_gen" ,"competitive_just" ,"competitive_gen" ,"intelligent_just" ,"intelligent_gen" , "politics_just" , "politics_gen" , "age" , "ses" , "political_overall" , "political_social" , "political_economic" )]
# Compute pairwise correlations
corr_DVs <- cor (DVs, use = "pairwise.complete.obs" )
# Plot the correlation matrix
corrplot (corr_DVs, is.corr = TRUE , type = "lower" , lower = "circle" , tl.cex = 0.7 , insig = "label_sig" , diag = TRUE )
# New columns for composite of warmth and competence
gjg <- gjg %>%
mutate (warmth_just= (warm_just+ good.natured_just+ tolerant_just+ sincere_just)/ 4 )%>%
mutate (warmth_gen= (warm_gen+ good.natured_gen+ tolerant_gen+ sincere_gen)/ 4 )%>%
mutate (competence_just= (competent_just+ confident_just+ independent_just+ competitive_just+
intelligent_just)/ 5 )%>%
mutate (competence_gen= (competent_gen+ confident_gen+ independent_gen+ competitive_gen+
intelligent_gen)/ 5 )
# DVs 2
DVs_2 <- gjg[c ("reputation_signal_just" ,"reputation_signal_gen" ,"norm_signal_just" ,"norm_signal_gen" ,"approval_just" ,"approval_gen" ,"moral_just" ,"moral_gen" ,"genuine_just" ,"genuine_gen" ,"deliberate_just" ,"deliberate_gen" ,"spontaneous_just" ,"spontaneous_gen" ,"emotion_just" ,"emotion_gen" ,"logic_just" ,"logic_gen" ,"quick_just" ,"quick_gen" ,"slow_just" ,"slow_gen" ,"warmth_just" ,"warmth_gen" ,"competence_just" ,"competence_gen" , "politics_just" , "politics_gen" , "age" , "ses" , "political_overall" , "political_social" , "political_economic" )]
# Compute pairwise correlations
corr_DVs_2 <- cor (DVs_2, use = "pairwise.complete.obs" )
# Plot the correlation matrix
corrplot (corr_DVs_2, is.corr = TRUE , type = "lower" , lower = "circle" , tl.cex = 0.7 , insig = "label_sig" , diag = TRUE )
# DVs just
DVs_just <- gjg[c ("reputation_signal_just" ,"norm_signal_just" , "approval_just" , "moral_just" , "genuine_just" , "deliberate_just" , "spontaneous_just" , "emotion_just" , "logic_just" , "quick_just" , "slow_just" , "warm_just" , "good.natured_just" , "tolerant_just" , "sincere_just" , "competent_just" , "confident_just" , "independent_just" , "competitive_just" , "intelligent_just" , "warmth_just" , "competence_just" ,"politics_just" , "age" , "ses" , "political_overall" , "political_social" , "political_economic" )]
# Compute pairwise correlations
corr_DVs_just <- cor (DVs_just, use = "pairwise.complete.obs" )
# Plot the correlation matrix
corrplot (corr_DVs_just, is.corr = TRUE , type = "lower" , lower = "circle" , tl.cex = 0.7 , insig = "label_sig" , diag = TRUE )
# DVs gen
DVs_gen <- gjg[c ("reputation_signal_gen" ,"norm_signal_gen" , "approval_gen" , "moral_gen" , "genuine_gen" , "deliberate_gen" , "spontaneous_gen" , "emotion_gen" , "logic_gen" , "quick_gen" , "slow_gen" , "warm_gen" , "good.natured_gen" , "tolerant_gen" , "sincere_gen" , "competent_gen" , "confident_gen" , "independent_gen" , "competitive_gen" , "intelligent_gen" , "warmth_gen" , "competence_gen" ,"politics_gen" , "age" , "ses" , "political_overall" , "political_social" , "political_economic" )]
# Compute pairwise correlations
corr_DVs_gen <- cor (DVs_gen, use = "pairwise.complete.obs" )
# Plot the correlation matrix
corrplot (corr_DVs_gen, is.corr = TRUE , type = "lower" , lower = "circle" , tl.cex = 0.7 , insig = "label_sig" , diag = TRUE )
# DVs collapsed
# renaming DVs with underscores in name
gjg <- gjg %>%
dplyr:: rename ("reputationSignal_just" = "reputation_signal_just" ,
"reputationSignal_gen" = "reputation_signal_gen" ,
"normSignal_just" = "norm_signal_just" ,
"normSignal_gen" = "norm_signal_gen" )
gjg_long<- gjg %>% gather (DV, resp, "reputationSignal_just" ,"reputationSignal_gen" ,"normSignal_just" ,"normSignal_gen" ,"approval_just" ,"approval_gen" ,"moral_just" ,"moral_gen" ,"genuine_just" ,"genuine_gen" ,"deliberate_just" ,"deliberate_gen" ,"spontaneous_just" ,"spontaneous_gen" ,"emotion_just" ,"emotion_gen" ,"logic_just" ,"logic_gen" ,"quick_just" ,"quick_gen" ,"slow_just" ,"slow_gen" ,"warm_just" ,"warm_gen" ,"good.natured_just" ,"good.natured_gen" ,"tolerant_just" ,"tolerant_gen" ,"sincere_just" ,"sincere_gen" ,"competent_just" ,"competent_gen" ,"confident_just" ,"confident_gen" , "independent_just" ,"independent_gen" ,"competitive_just" ,"competitive_gen" ,"intelligent_just" ,"intelligent_gen" ,"warmth_just" ,"warmth_gen" ,"competence_just" ,"competence_gen" , "politics_just" , "politics_gen" )
gjg_long<- gjg_long %>%
separate (DV, into= c ("DV" , "motive" ), sep= "_" )
gjg_long <- spread (gjg_long, DV, resp)
DVs_col <- gjg_long[c ("reputationSignal" ,"normSignal" , "approval" , "moral" , "genuine" , "deliberate" , "spontaneous" , "emotion" , "logic" , "quick" , "slow" , "warm" , "good.natured" , "tolerant" , "sincere" , "competent" , "confident" , "independent" , "competitive" , "intelligent" , "warmth" , "competence" ,"politics" , "age" , "ses" , "political_overall" , "political_social" , "political_economic" )]
# Compute pairwise correlations
corr_DVs_col <- cor (DVs_col, use = "pairwise.complete.obs" )
# Plot the correlation matrix
corrplot (corr_DVs_col, is.corr = TRUE , type = "lower" , lower = "circle" , tl.cex = 0.7 , insig = "label_sig" , diag = TRUE )
```
# Changing to long format
```{r}
# splitting data into gen and just motives
names (gjg)[names (gjg) == "reputation_signal_1" ] <- "reputationSignal1"
names (gjg)[names (gjg) == "reputation_signal_2" ] <- "reputationSignal2"
names (gjg)[names (gjg) == "norm_signal_1" ] <- "normSignal1"
names (gjg)[names (gjg) == "norm_signal_2" ] <- "normSignal2"
names (gjg)[names (gjg) == "approval_1" ] <- "approval1"
names (gjg)[names (gjg) == "approval_2" ] <- "approval2"
names (gjg)[names (gjg) == "moral_1" ] <- "moral1"
names (gjg)[names (gjg) == "moral_2" ] <- "moral2"
names (gjg)[names (gjg) == "genuine_1" ] <- "genuine1"
names (gjg)[names (gjg) == "genuine_2" ] <- "genuine2"
names (gjg)[names (gjg) == "deliberate_1" ] <- "deliberate1"
names (gjg)[names (gjg) == "deliberate_2" ] <- "deliberate2"
names (gjg)[names (gjg) == "spontaneous_1" ] <- "spontaneous1"
names (gjg)[names (gjg) == "spontaneous_2" ] <- "spontaneous2"
names (gjg)[names (gjg) == "emotion_1" ] <- "emotion1"
names (gjg)[names (gjg) == "emotion_2" ] <- "emotion2"
names (gjg)[names (gjg) == "logic_1" ] <- "logic1"
names (gjg)[names (gjg) == "logic_2" ] <- "logic2"
names (gjg)[names (gjg) == "quick_1" ] <- "quick1"
names (gjg)[names (gjg) == "quick_2" ] <- "quick2"
names (gjg)[names (gjg) == "slow_1" ] <- "slow1"
names (gjg)[names (gjg) == "slow_2" ] <- "slow2"
names (gjg)[names (gjg) == "warm_1" ] <- "warm1"
names (gjg)[names (gjg) == "warm_2" ] <- "warm2"
names (gjg)[names (gjg) == "good.natured_1" ] <- "good.natured1"
names (gjg)[names (gjg) == "good.natured_2" ] <- "good.natured2"
names (gjg)[names (gjg) == "tolerant_1" ] <- "tolerant1"
names (gjg)[names (gjg) == "tolerant_2" ] <- "tolerant2"
names (gjg)[names (gjg) == "sincere_1" ] <- "sincere1"
names (gjg)[names (gjg) == "sincere_2" ] <- "sincere2"
names (gjg)[names (gjg) == "competent_1" ] <- "competent1"
names (gjg)[names (gjg) == "competent_2" ] <- "competent2"
names (gjg)[names (gjg) == "confident_1" ] <- "confident1"
names (gjg)[names (gjg) == "confident_2" ] <- "confident2"
names (gjg)[names (gjg) == "independent_1" ] <- "independent1"
names (gjg)[names (gjg) == "independent_2" ] <- "independent2"
names (gjg)[names (gjg) == "competitive_1" ] <- "competitive1"
names (gjg)[names (gjg) == "competitive_2" ] <- "competitive2"
names (gjg)[names (gjg) == "intelligent_1" ] <- "intelligent1"
names (gjg)[names (gjg) == "intelligent_2" ] <- "intelligent2"
names (gjg)[names (gjg) == "politics_1" ] <- "politics1"
names (gjg)[names (gjg) == "politics_2" ] <- "politics2"
gjg_long<- gjg %>% gather (DV, resp, "reputationSignal_just" ,"reputationSignal_gen" ,"normSignal_just" ,"normSignal_gen" ,"approval_just" ,"approval_gen" ,"moral_just" ,"moral_gen" ,"genuine_just" ,"genuine_gen" ,"deliberate_just" ,"deliberate_gen" ,"spontaneous_just" ,"spontaneous_gen" ,"emotion_just" ,"emotion_gen" ,"logic_just" ,"logic_gen" ,"quick_just" ,"quick_gen" ,"slow_just" ,"slow_gen" ,"warm_just" ,"warm_gen" ,"good.natured_just" ,"good.natured_gen" ,"tolerant_just" ,"tolerant_gen" ,"sincere_just" ,"sincere_gen" ,"competent_just" ,"competent_gen" ,"confident_just" ,"confident_gen" , "independent_just" ,"independent_gen" ,"competitive_just" ,"competitive_gen" ,"intelligent_just" ,"intelligent_gen" ,"warmth_just" ,"warmth_gen" ,"competence_just" ,"competence_gen" , "politics_just" , "politics_gen" )
gjg_long<- gjg_long %>%
separate (DV, into= c ("DV" , "motive" ), sep= "_" )
gjg_long <- spread (gjg_long, DV, resp)
```
# Political Perceptions
No significance.
```{r fig.dim=c(12,10)}
plot_cooker7 <- function (dv, iv, Title, x_axis_labs, y_label, sample_size) {
part1 <- ggviolin (gjg_long, x = dv, y = iv, color = dv,
alpha = 0.1 , fill = dv, xlab = "Motive" ,
trim = TRUE , ylab = y_label) +
stat_summary (fun.data = "mean_cl_normal" , geom = "crossbar" , fatten = 1 ) +
scale_y_continuous (breaks = c (1 : 7 )) +
labs (title = paste0 (Title, " (n = " , sample_size, ")" )) +
scale_x_discrete (labels = x_axis_labs) +
theme (panel.background = element_rect (fill = "transparent" ),
legend.position = "right" , ## Consider “gray97” for fill
plot.title = element_text (face = "bold" , hjust = 0.5 , size = 16 ),
plot.subtitle = element_text (hjust = 0.5 ),
panel.grid.major.y = element_line (color= 'grey75' ),
axis.text.x = element_text (face = "plain" , size = 13 , color = "black" ),
axis.text.y = element_text (face = "plain" , size = 13 , color = "black" ),
axis.title.y = element_text (face = "plain" , size = 13 , color = "black" ,
margin = margin (t = 0 , r = 10 , b = 0 , l = 0 )), ## lower X axis title
panel.border = element_rect (color = "black" , fill = NA , size = 1 ))
ggpar (part1, legend = "none" )
}
percep_plot_list <- list (plot_cooker7 ("motive" , "politics" , "Donor Politics" , c ("justice" ,"generosity" )," " , 198 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Donor Politics" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_politics <- lmer (politics ~ motive + (1 | pid), data = gjg_long)
summary (mod_politics)
# effect size = 0.102
d <- 0.1566 / sqrt (2.366 )
# by own politics
mod_politics2 <- lmer (politics ~ motive * polit_self + (1 | pid), data = gjg_long)
summary (mod_politics2)
```
# Factor Analyses
## Confirmatory Factor Analysis for V3 Factors, 6 Factor
These 6 factors are a reasonably good fit.
```{r message=F, results='hide', warning=FALSE}
gjg_long3 <- gjg_long[, ! names (gjg_long) %in% c ("attn_bucket" ,"gender_text" ,"race_text" ,"income_text" ,"education_text" ,"political_party_text" ,"political_party_4_TEXT" ,"openFeedback" ,"confusion" ,"attn_self" ,"polit_comp" ,"pid" ,"age" ,"gender" ,"race" ,"income" ,"education" ,"ses" ,"political_party" ,"political_social" ,"political_economic" ,"warmth" ,"competence" ,"motive" ,"political_overall" ,"reputationSignal1" ,"reputationSignal2" ,"normSignal1" ,"normSignal2" ,"approval1" ,"approval2" ,"moral1" ,"moral2" ,"genuine1" ,"genuine2" ,"deliberate1" ,"deliberate2" ,"spontaneous1" ,"spontaneous2" ,"emotion1" ,"emotion2" ,"logic1" ,"logic2" ,"quick1" ,"quick2" ,"slow1" ,"slow2" ,"warm1" ,"warm2" ,"good.natured1" ,"good.natured2" ,"tolerant1" ,"tolerant2" ,"sincere1" ,"sincere2" ,"competent1" ,"competent2" ,"confident1" ,"confident2" , "independent1" ,"independent2" ,"competitive1" ,"competitive2" ,"intelligent1" ,"intelligent2" ,"warmth1" ,"warmth2" ,"competence1" ,"competence2" , "politics1" , "politics2" , "diffOrgPolit1" , "diffOrgPolit2" , "political_party_4_TEXT" , "vigOrder" , "firstSentence" , "secondSentence" , "vigFirstVirtue" , "vigSecondVirtue" , "nameOne" , "nameTwo" , "sameOrg" , "sameOrgPolit" , "diffOrgPolit" , "politics" , "polit_self" , "hypothesis" , "strange" , "believe" )]
write.csv (cor (gjg_long3)> 0.8 , file= "Suspect_Correlations.csv" )
write.csv (cor (gjg_long3), file= "Correlation_Values.csv" )
#install.packages("lavaan")
library (lavaan)
path <- '
f1 =~ warm + good.natured + tolerant + sincere
f2 =~ logic + independent + intelligent + confident + competent
f3 =~ approval + moral + genuine
f4 =~ reputationSignal
f5 =~ quick + spontaneous
f6 =~ emotion
'
model <- cfa (path, data= gjg_long3)
summary (model, fit.measures= TRUE )
```
## Exploratory Factor Analysis, 5 Factor
```{r message=F, results='hide', warning=FALSE}
#KMO test
KMO (gjg_long3)
cortest.bartlett (gjg_long3)
#reject the null
ev <- eigen (cor (gjg_long3))
ev$ values
scree (gjg_long3, pc= FALSE )
fa.parallel (gjg_long3, fa= "fa" )
Nfacs <- 5
fit <- factanal (gjg_long3, Nfacs, rotation= "promax" )
print (fit, digits= 2 , cutoff= 0.3 , sort= TRUE )
#diagram
loads <- fit$ loadings
fa.diagram (loads)
```
# Linear Mixed Effects Models
```{r message=F, results='hide', warning=FALSE}
# new columns for Factor 2-competence (plus logic, minus competitive), Factor 3-moral goodness (approval, moral, genuine), Factor 3-warmth (minus sincere), Factor 5-decision speed (quick, spontaneous)
gjg <- gjg %>%
mutate (competence2_just= (competent_just+ confident_just+ independent_just+ logic_just+
intelligent_just)/ 5 )%>%
mutate (competence2_gen= (competent_gen+ confident_gen+ independent_gen+ logic_gen+
intelligent_gen)/ 5 )%>%
mutate (moralGoodness2_just= (approval_just+ moral_just+ genuine_just)/ 3 )%>%
mutate (moralGoodness2_gen= (approval_gen+ moral_gen+ genuine_gen)/ 3 ) %>%
mutate (decisionSpeed_just= (quick_just+ spontaneous_just)/ 2 )%>%
mutate (decisionSpeed_gen= (quick_gen+ spontaneous_gen)/ 2 )
gjg_long<- gjg %>% gather (DV, resp, "reputationSignal_just" ,"reputationSignal_gen" ,"normSignal_just" ,"normSignal_gen" ,"approval_just" ,"approval_gen" ,"moral_just" ,"moral_gen" ,"genuine_just" ,"genuine_gen" ,"deliberate_just" ,"deliberate_gen" ,"spontaneous_just" ,"spontaneous_gen" ,"emotion_just" ,"emotion_gen" ,"logic_just" ,"logic_gen" ,"quick_just" ,"quick_gen" ,"slow_just" ,"slow_gen" ,"warm_just" ,"warm_gen" ,"good.natured_just" ,"good.natured_gen" ,"tolerant_just" ,"tolerant_gen" ,"sincere_just" ,"sincere_gen" ,"competent_just" ,"competent_gen" ,"confident_just" ,"confident_gen" , "independent_just" ,"independent_gen" ,"competitive_just" ,"competitive_gen" ,"intelligent_just" ,"intelligent_gen" ,"warmth_just" ,"warmth_gen" ,"competence_just" ,"competence_gen" ,"competence2_just" ,"competence2_gen" ,"moralGoodness2_just" ,"moralGoodness2_gen" ,"decisionSpeed_just" ,"decisionSpeed_gen" )
# splitting data into gen and just motives
gjg_long<- gjg_long %>%
separate (DV, into= c ("DV" , "motive" ), sep= "_" )
gjg_long <- spread (gjg_long, DV, resp)
```
## Mixed Effects Model Warmth (Factor 1)
No significance.
```{r message=F, results='hide', warning=FALSE}
plot_cooker <- function (dv, iv, Title, x_axis_labs, y_label, sample_size) {
part1 <- ggviolin (gjg_long, x = dv, y = iv, color = dv,
alpha = 0.1 , fill = dv, xlab = "Motive" ,
trim = TRUE , ylab = y_label) +
stat_summary (fun.data = "mean_cl_normal" , geom = "crossbar" , fatten = 1 ) +
scale_y_continuous (breaks = c (1 : 5 )) +
labs (title = paste0 (Title, " (n = " , sample_size, ")" )) +
scale_x_discrete (labels = x_axis_labs) +
theme (panel.background = element_rect (fill = "transparent" ),
legend.position = "right" , ## Consider “gray97” for fill
plot.title = element_text (face = "bold" , hjust = 0.5 , size = 16 ),
plot.subtitle = element_text (hjust = 0.5 ),
panel.grid.major.y = element_line (color= 'grey75' ),
axis.text.x = element_text (face = "plain" , size = 13 , color = "black" ),
axis.text.y = element_text (face = "plain" , size = 13 , color = "black" ),
axis.title.y = element_text (face = "plain" , size = 13 , color = "black" ,
margin = margin (t = 0 , r = 10 , b = 0 , l = 0 )), ## lower X axis title
panel.border = element_rect (color = "black" , fill = NA , size = 1 ))
ggpar (part1, legend = "none" )
}
percep_plot_list <- list (plot_cooker ("motive" , "warmth" , "Warmth" , c ("justice" ,"generosity" )," " , 198 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Factor 1 (Warmth)" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_warmth <- lmer (warmth ~ motive + (1 | pid), data = gjg_long)
summary (mod_warmth)
```
## Mixed Effects Model Competence (Factor 2)
Just donors are perceived to be significantly more competent than generous donors.
```{r message=F, results='hide', warning=FALSE}
percep_plot_list <- list (plot_cooker ("motive" , "competence2" , "Competence" , c ("justice" ,"generosity" )," " , 198 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Factor 2 (Competence)" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_competence <- lmer (competence2 ~ motive + (1 | pid), data = gjg_long)
summary (mod_competence)
```
## Mixed Effects Model Moral Goodness (Factor 3)
Just donors are perceived to be significantly more morally good than generous donors.
```{r message=F, results='hide', warning=FALSE}
percep_plot_list <- list (plot_cooker ("motive" , "moralGoodness2" , "Moral Goodness" , c ("justice" ,"generosity" )," " , 198 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Factor 3 (Moral Goodness)" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_moralGoodness <- lmer (moralGoodness2 ~ motive + (1 | pid), data = gjg_long)
summary (mod_moralGoodness)
```
## Mixed Effects Model Reputation Signaling (Factor 4)
Generous donors are perceived to be engaging in reputation signaling significantly more than just donors.
```{r message=F, results='hide', warning=FALSE}
percep_plot_list <- list (plot_cooker ("motive" , "reputationSignal" , "Reputation Signaling" , c ("justice" ,"generosity" )," " , 198 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Factor 4 (Reputation Signaling)" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_reputationSignal<- lmer (reputationSignal ~ motive + (1 | pid), data = gjg_long)
summary (mod_reputationSignal)
```
## Mixed Effects Model Decision Speed (Factor 5)
No significance.
```{r message=F, results='hide', warning=FALSE}
percep_plot_list <- list (plot_cooker ("motive" , "decisionSpeed" , "Decision Speed" , c ("justice" ,"generosity" )," " , 198 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Factor 5 (Decision Speed)" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_decisionSpeed<- lmer (decisionSpeed ~ motive + (1 | pid), data = gjg_long)
summary (mod_decisionSpeed)
```
## Mixed Effects Model Emotion (Factor 6)
Just donors are perceived to donate based on emotion significantly more than generous donors.
```{r message=F, results='hide', warning=FALSE}
percep_plot_list <- list (plot_cooker ("motive" , "emotion" , "Emotion" , c ("justice" ,"generosity" )," " , 198 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Factor 6 (Emotion)" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_emotion<- lmer (emotion ~ motive + (1 | pid), data = gjg_long)
summary (mod_emotion)
```
## Mixed Effects Model Norm Signaling
Just donors are perceived to engage in norm signaling significantly more than generous donors.
```{r message=F, results='hide', warning=FALSE}
percep_plot_list <- list (plot_cooker ("motive" , "normSignal" , "Norm Signaling" , c ("justice" ,"generosity" )," " , 198 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Norm Signaling" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_normSignal<- lmer (normSignal ~ motive + (1 | pid), data = gjg_long)
summary (mod_normSignal)
```
# Effects of Sentence Type
```{r}
# making new columns for commit and value
names (gjg)[names (gjg) == "reputationSignal1" ] <- "reputationSignal_1"
names (gjg)[names (gjg) == "reputationSignal2" ] <- "reputationSignal_2"
names (gjg)[names (gjg) == "normSignal1" ] <- "normSignal_1"
names (gjg)[names (gjg) == "normSignal2" ] <- "normSignal_2"
names (gjg)[names (gjg) == "approval1" ] <- "approval_1"
names (gjg)[names (gjg) == "approval2" ] <- "approval_2"
names (gjg)[names (gjg) == "moral1" ] <- "moral_1"
names (gjg)[names (gjg) == "moral2" ] <- "moral_2"
names (gjg)[names (gjg) == "genuine1" ] <- "genuine_1"
names (gjg)[names (gjg) == "genuine2" ] <- "genuine_2"
names (gjg)[names (gjg) == "deliberate1" ] <- "deliberate_1"
names (gjg)[names (gjg) == "deliberate2" ] <- "deliberate_2"
names (gjg)[names (gjg) == "spontaneous1" ] <- "spontaneous_1"
names (gjg)[names (gjg) == "spontaneous2" ] <- "spontaneous_2"
names (gjg)[names (gjg) == "emotion1" ] <- "emotion_1"
names (gjg)[names (gjg) == "emotion2" ] <- "emotion_2"
names (gjg)[names (gjg) == "logic1" ] <- "logic_1"
names (gjg)[names (gjg) == "logic2" ] <- "logic_2"
names (gjg)[names (gjg) == "quick1" ] <- "quick_1"
names (gjg)[names (gjg) == "quick2" ] <- "quick_2"
names (gjg)[names (gjg) == "slow1" ] <- "slow_1"
names (gjg)[names (gjg) == "slow2" ] <- "slow_2"
names (gjg)[names (gjg) == "warm1" ] <- "warm_1"
names (gjg)[names (gjg) == "warm2" ] <- "warm_2"
names (gjg)[names (gjg) == "good.natured1" ] <- "good.natured_1"
names (gjg)[names (gjg) == "good.natured2" ] <- "good.natured_2"
names (gjg)[names (gjg) == "tolerant1" ] <- "tolerant_1"
names (gjg)[names (gjg) == "tolerant2" ] <- "tolerant_2"
names (gjg)[names (gjg) == "sincere1" ] <- "sincere_1"
names (gjg)[names (gjg) == "sincere2" ] <- "sincere_2"
names (gjg)[names (gjg) == "competent1" ] <- "competent_1"
names (gjg)[names (gjg) == "competent2" ] <- "competent_2"
names (gjg)[names (gjg) == "confident1" ] <- "confident_1"
names (gjg)[names (gjg) == "confident2" ] <- "confident_2"
names (gjg)[names (gjg) == "independent1" ] <- "independent_1"
names (gjg)[names (gjg) == "independent2" ] <- "independent_2"
names (gjg)[names (gjg) == "competitive1" ] <- "competitive_1"
names (gjg)[names (gjg) == "competitive2" ] <- "competitive_2"
names (gjg)[names (gjg) == "intelligent1" ] <- "intelligent_1"
names (gjg)[names (gjg) == "intelligent2" ] <- "intelligent_2"
names (gjg)[names (gjg) == "politics1" ] <- "politics_1"
names (gjg)[names (gjg) == "politics2" ] <- "politics_2"
gjg$ reputationSignal_commit <- NA
gjg$ reputationSignal_value <- NA
gjg$ reputationSignal_commit <- ifelse (gjg$ vigOrder == "justiceCommitFirst" , gjg$ reputationSignal_1,
ifelse (gjg$ vigOrder == "genCommitFirst" , gjg$ reputationSignal_1, gjg$ reputationSignal_2))
gjg$ reputationSignal_value <- ifelse (gjg$ vigOrder == "justiceCommitFirst" , gjg$ reputationSignal_2,
ifelse (gjg$ vigOrder == "genCommitFirst" , gjg$ reputationSignal_2, gjg$ reputationSignal_1))
swapValuesBasedOnVigOrder <- function (data, column, colSuffix1 = "_1" , colSuffix2 = "_2" ) {
# Check if vigOrder is justiceCommitFirst or genCommitFirst
is_commit <- data$ vigOrder %in% c ("justiceCommitFirst" , "genCommitFirst" )
# Create new columns for "_commit" and "_value"
data[[paste0 (column, "_commit" )]] <- ifelse (is_commit, data[[paste0 (column, colSuffix1)]], data[[paste0 (column, colSuffix2)]])
data[[paste0 (column, "_value" )]] <- ifelse (is_commit, data[[paste0 (column, colSuffix2)]], data[[paste0 (column, colSuffix1)]])
# Replace missing values with NA
data[[paste0 (column, "_commit" )]][is.na (data[[paste0 (column, "_commit" )]])] <- NA
data[[paste0 (column, "_value" )]][is.na (data[[paste0 (column, "_value" )]])] <- NA
# Return the modified data frame
return (data)
}
gjg <- swapValuesBasedOnVigOrder (gjg, column = "normSignal" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "approval" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "moral" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "genuine" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "deliberate" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "spontaneous" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "emotion" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "logic" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "quick" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "slow" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "warm" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "good.natured" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "tolerant" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "sincere" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "competent" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "confident" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "independent" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "competitive" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "intelligent" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "politics" , colSuffix1 = "_1" , colSuffix2 = "_2" )
```
## Changing to long format
```{r}
# splitting data into commit and value sentences
names (gjg)[names (gjg) == "reputationSignal_1" ] <- "reputationSignal1"
names (gjg)[names (gjg) == "reputationSignal_2" ] <- "reputationSignal2"
names (gjg)[names (gjg) == "normSignal_1" ] <- "normSignal1"
names (gjg)[names (gjg) == "normSignal_2" ] <- "normSignal2"
names (gjg)[names (gjg) == "approval_1" ] <- "approval1"
names (gjg)[names (gjg) == "approval_2" ] <- "approval2"
names (gjg)[names (gjg) == "moral_1" ] <- "moral1"
names (gjg)[names (gjg) == "moral_2" ] <- "moral2"
names (gjg)[names (gjg) == "genuine_1" ] <- "genuine1"
names (gjg)[names (gjg) == "genuine_2" ] <- "genuine2"
names (gjg)[names (gjg) == "deliberate_1" ] <- "deliberate1"
names (gjg)[names (gjg) == "deliberate_2" ] <- "deliberate2"
names (gjg)[names (gjg) == "spontaneous_1" ] <- "spontaneous1"
names (gjg)[names (gjg) == "spontaneous_2" ] <- "spontaneous2"
names (gjg)[names (gjg) == "emotion_1" ] <- "emotion1"
names (gjg)[names (gjg) == "emotion_2" ] <- "emotion2"
names (gjg)[names (gjg) == "logic_1" ] <- "logic1"
names (gjg)[names (gjg) == "logic_2" ] <- "logic2"
names (gjg)[names (gjg) == "quick_1" ] <- "quick1"
names (gjg)[names (gjg) == "quick_2" ] <- "quick2"
names (gjg)[names (gjg) == "slow_1" ] <- "slow1"
names (gjg)[names (gjg) == "slow_2" ] <- "slow2"
names (gjg)[names (gjg) == "warm_1" ] <- "warm1"
names (gjg)[names (gjg) == "warm_2" ] <- "warm2"
names (gjg)[names (gjg) == "good.natured_1" ] <- "good.natured1"
names (gjg)[names (gjg) == "good.natured_2" ] <- "good.natured2"
names (gjg)[names (gjg) == "tolerant_1" ] <- "tolerant1"
names (gjg)[names (gjg) == "tolerant_2" ] <- "tolerant2"
names (gjg)[names (gjg) == "sincere_1" ] <- "sincere1"
names (gjg)[names (gjg) == "sincere_2" ] <- "sincere2"
names (gjg)[names (gjg) == "competent_1" ] <- "competent1"
names (gjg)[names (gjg) == "competent_2" ] <- "competent2"
names (gjg)[names (gjg) == "confident_1" ] <- "confident1"
names (gjg)[names (gjg) == "confident_2" ] <- "confident2"
names (gjg)[names (gjg) == "independent_1" ] <- "independent1"
names (gjg)[names (gjg) == "independent_2" ] <- "independent2"
names (gjg)[names (gjg) == "competitive_1" ] <- "competitive1"
names (gjg)[names (gjg) == "competitive_2" ] <- "competitive2"
names (gjg)[names (gjg) == "intelligent_1" ] <- "intelligent1"
names (gjg)[names (gjg) == "intelligent_2" ] <- "intelligent2"
names (gjg)[names (gjg) == "politics_1" ] <- "politics1"
names (gjg)[names (gjg) == "politics_2" ] <- "politics2"
# New columns for composite of warmth and competence
gjg <- gjg %>%
mutate (warmth_commit= (warm_commit+ good.natured_commit+ tolerant_commit+ sincere_commit)/ 4 )%>%
mutate (warmth_value= (warm_value+ good.natured_value+ tolerant_value+ sincere_value)/ 4 )%>%
mutate (competence_commit= (competent_commit+ confident_commit+ independent_commit+ competitive_commit+ intelligent_commit)/ 5 )%>%
mutate (competence_value= (competent_value+ confident_value+ independent_value+ competitive_value+ intelligent_value)/ 5 )
gjg_long<- gjg %>% gather (DV, resp, "reputationSignal_commit" ,"reputationSignal_value" ,"normSignal_commit" ,"normSignal_value" ,"approval_commit" ,"approval_value" ,"moral_commit" ,"moral_value" ,"genuine_commit" ,"genuine_value" ,"deliberate_commit" ,"deliberate_value" ,"spontaneous_commit" ,"spontaneous_value" ,"emotion_commit" ,"emotion_value" ,"logic_commit" ,"logic_value" ,"quick_commit" ,"quick_value" ,"slow_commit" ,"slow_value" ,"warm_commit" ,"warm_value" ,"good.natured_commit" ,"good.natured_value" ,"tolerant_commit" ,"tolerant_value" ,"sincere_commit" ,"sincere_value" ,"competent_commit" ,"competent_value" ,"confident_commit" ,"confident_value" , "independent_commit" ,"independent_value" ,"competitive_commit" ,"competitive_value" ,"intelligent_commit" ,"intelligent_value" ,"warmth_commit" ,"warmth_value" ,"competence_commit" ,"competence_value" , "politics_commit" , "politics_value" )
gjg_long<- gjg_long %>%
separate (DV, into= c ("DV" , "sentence" ), sep= "_" )
gjg_long <- spread (gjg_long, DV, resp)
```
## Political Perceptions
No significance.
```{r}
percep_plot_list <- list (plot_cooker7 ("sentence" , "politics" , "Donor Politics" , c ("commit" ,"value" )," " , 198 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Donor Politics" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_politics <- lmer (politics ~ sentence + (1 | pid), data = gjg_long)
summary (mod_politics)
# by own politics
mod_politics2 <- lmer (politics ~ sentence * polit_self + (1 | pid), data = gjg_long)
summary (mod_politics2)
```
## Linear Mixed Effects Models
```{r message=F, results='hide', warning=FALSE}
# new columns for Factor 2-competence (plus logic, minus competitive), Factor 3-moral goodness (approval, moral, genuine), Factor 3-warmth (minus sincere), Factor 5-decision speed (quick, spontaneous)
gjg <- gjg %>%
mutate (competence2_commit= (competent_commit+ confident_commit+ independent_commit+ logic_commit+
intelligent_commit)/ 5 )%>%
mutate (competence2_value= (competent_value+ confident_value+ independent_value+ logic_value+
intelligent_value)/ 5 )%>%
mutate (moralGoodness2_commit= (approval_commit+ moral_commit+ genuine_commit)/ 3 )%>%
mutate (moralGoodness2_value= (approval_value+ moral_value+ genuine_value)/ 3 ) %>%
mutate (decisionSpeed_commit= (quick_commit+ spontaneous_commit)/ 2 )%>%
mutate (decisionSpeed_value= (quick_value+ spontaneous_value)/ 2 )
gjg_long<- gjg %>% gather (DV, resp, "reputationSignal_commit" ,"reputationSignal_value" ,"normSignal_commit" ,"normSignal_value" ,"approval_commit" ,"approval_value" ,"moral_commit" ,"moral_value" ,"genuine_commit" ,"genuine_value" ,"deliberate_commit" ,"deliberate_value" ,"spontaneous_commit" ,"spontaneous_value" ,"emotion_commit" ,"emotion_value" ,"logic_commit" ,"logic_value" ,"quick_commit" ,"quick_value" ,"slow_commit" ,"slow_value" ,"warm_commit" ,"warm_value" ,"good.natured_commit" ,"good.natured_value" ,"tolerant_commit" ,"tolerant_value" ,"sincere_commit" ,"sincere_value" ,"competent_commit" ,"competent_value" ,"confident_commit" ,"confident_value" , "independent_commit" ,"independent_value" ,"competitive_commit" ,"competitive_value" ,"intelligent_commit" ,"intelligent_value" ,"warmth_commit" ,"warmth_value" ,"competence_commit" ,"competence_value" , "politics_commit" , "politics_value" ,"competence2_commit" ,"competence2_value" ,"moralGoodness2_commit" ,"moralGoodness2_value" ,"decisionSpeed_commit" ,"decisionSpeed_value" )
# splitting data into gen and just motives
gjg_long<- gjg_long %>%
separate (DV, into= c ("DV" , "sentence" ), sep= "_" )
gjg_long <- spread (gjg_long, DV, resp)
```
### Mixed Effects Model Warmth (Factor 1)
No significance.
```{r message=F, results='hide', warning=FALSE}
percep_plot_list <- list (plot_cooker ("sentence" , "warmth" , "Warmth" , c ("commit" ,"value" )," " , 198 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Factor 1 (Warmth)" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_warmth <- lmer (warmth ~ sentence + (1 | pid), data = gjg_long)
summary (mod_warmth)
```
### Mixed Effects Model Competence (Factor 2)
"Commitment" language is perceived to be significantly more competent than "value" language.
```{r message=F, results='hide', warning=FALSE}
percep_plot_list <- list (plot_cooker ("sentence" , "competence2" , "Competence" , c ("commit" ,"value" )," " , 198 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Factor 2 (Competence)" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_competence <- lmer (competence2 ~ sentence + (1 | pid), data = gjg_long)
summary (mod_competence)
table (gjg$ vigOrder)
```
### Mixed Effects Model Moral Goodness (Factor 3)
No significance.
```{r message=F, results='hide', warning=FALSE}
percep_plot_list <- list (plot_cooker ("sentence" , "moralGoodness2" , "Moral Goodness" , c ("commit" ,"value" )," " , 198 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Factor 3 (Moral Goodness)" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_moralGoodness <- lmer (moralGoodness2 ~ sentence + (1 | pid), data = gjg_long)
summary (mod_moralGoodness)
```
### Mixed Effects Model Reputation Signaling (Factor 4)
No significance.
```{r message=F, results='hide', warning=FALSE}
percep_plot_list <- list (plot_cooker ("sentence" , "reputationSignal" , "Reputation Signaling" , c ("commit" ,"value" )," " , 198 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Factor 4 (Reputation Signaling)" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_reputationSignal<- lmer (reputationSignal ~ sentence + (1 | pid), data = gjg_long)
summary (mod_reputationSignal)
```
### Mixed Effects Model Decision Speed (Factor 5)
"Value" language is perceived to make decisions significantly more quickly/spontaneously than "commitment" language.
```{r message=F, results='hide', warning=FALSE}
percep_plot_list <- list (plot_cooker ("sentence" , "decisionSpeed" , "Decision Speed" , c ("commit" ,"value" )," " , 198 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Factor 5 (Decision Speed)" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_decisionSpeed<- lmer (decisionSpeed ~ sentence + (1 | pid), data = gjg_long)
summary (mod_decisionSpeed)
```
### Mixed Effects Model Emotion (Factor 6)
"Value" language is perceived to be significantly more from emotion than "commitment" language.
```{r message=F, results='hide', warning=FALSE}
percep_plot_list <- list (plot_cooker ("sentence" , "emotion" , "Emotion" , c ("commit" ,"value" )," " , 198 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Factor 6 (Emotion)" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_emotion<- lmer (emotion ~ sentence + (1 | pid), data = gjg_long)
summary (mod_emotion)
```
### Mixed Effects Model Norm Signaling
No significance.
```{r message=F, results='hide', warning=FALSE}
percep_plot_list <- list (plot_cooker ("sentence" , "normSignal" , "Norm Signaling" , c ("commit" ,"value" )," " , 198 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Norm Signaling" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_normSignal<- lmer (normSignal ~ sentence + (1 | pid), data = gjg_long)
summary (mod_normSignal)
```
# Interactive Effects of Sentence and Motive
```{r}
# making new columns for commit and value
names (gjg)[names (gjg) == "reputationSignal1" ] <- "reputationSignal_1"
names (gjg)[names (gjg) == "reputationSignal2" ] <- "reputationSignal_2"
names (gjg)[names (gjg) == "normSignal1" ] <- "normSignal_1"
names (gjg)[names (gjg) == "normSignal2" ] <- "normSignal_2"
names (gjg)[names (gjg) == "approval1" ] <- "approval_1"
names (gjg)[names (gjg) == "approval2" ] <- "approval_2"
names (gjg)[names (gjg) == "moral1" ] <- "moral_1"
names (gjg)[names (gjg) == "moral2" ] <- "moral_2"
names (gjg)[names (gjg) == "genuine1" ] <- "genuine_1"
names (gjg)[names (gjg) == "genuine2" ] <- "genuine_2"
names (gjg)[names (gjg) == "deliberate1" ] <- "deliberate_1"
names (gjg)[names (gjg) == "deliberate2" ] <- "deliberate_2"
names (gjg)[names (gjg) == "spontaneous1" ] <- "spontaneous_1"
names (gjg)[names (gjg) == "spontaneous2" ] <- "spontaneous_2"
names (gjg)[names (gjg) == "emotion1" ] <- "emotion_1"
names (gjg)[names (gjg) == "emotion2" ] <- "emotion_2"
names (gjg)[names (gjg) == "logic1" ] <- "logic_1"
names (gjg)[names (gjg) == "logic2" ] <- "logic_2"
names (gjg)[names (gjg) == "quick1" ] <- "quick_1"
names (gjg)[names (gjg) == "quick2" ] <- "quick_2"
names (gjg)[names (gjg) == "slow1" ] <- "slow_1"
names (gjg)[names (gjg) == "slow2" ] <- "slow_2"
names (gjg)[names (gjg) == "warm1" ] <- "warm_1"
names (gjg)[names (gjg) == "warm2" ] <- "warm_2"
names (gjg)[names (gjg) == "good.natured1" ] <- "good.natured_1"
names (gjg)[names (gjg) == "good.natured2" ] <- "good.natured_2"
names (gjg)[names (gjg) == "tolerant1" ] <- "tolerant_1"
names (gjg)[names (gjg) == "tolerant2" ] <- "tolerant_2"
names (gjg)[names (gjg) == "sincere1" ] <- "sincere_1"
names (gjg)[names (gjg) == "sincere2" ] <- "sincere_2"
names (gjg)[names (gjg) == "competent1" ] <- "competent_1"
names (gjg)[names (gjg) == "competent2" ] <- "competent_2"
names (gjg)[names (gjg) == "confident1" ] <- "confident_1"
names (gjg)[names (gjg) == "confident2" ] <- "confident_2"
names (gjg)[names (gjg) == "independent1" ] <- "independent_1"
names (gjg)[names (gjg) == "independent2" ] <- "independent_2"
names (gjg)[names (gjg) == "competitive1" ] <- "competitive_1"
names (gjg)[names (gjg) == "competitive2" ] <- "competitive_2"
names (gjg)[names (gjg) == "intelligent1" ] <- "intelligent_1"
names (gjg)[names (gjg) == "intelligent2" ] <- "intelligent_2"
names (gjg)[names (gjg) == "politics1" ] <- "politics_1"
names (gjg)[names (gjg) == "politics2" ] <- "politics_2"
# function to create new cols
swapValuesBasedOnVigOrder <- function (data, columnName, colSuffix1, colSuffix2) {
data[[paste0 (columnName, "_gen_commit" )]] <- ifelse (data$ vigOrder == "genCommitFirst" ,
data[[paste0 (columnName, colSuffix1)]],
ifelse (data$ vigOrder == "justiceValueFirst" , data[[paste0 (columnName, colSuffix2)]], NA ))
data[[paste0 (columnName, "_justice_commit" )]] <- ifelse (data$ vigOrder == "justiceCommitFirst" ,
data[[paste0 (columnName, colSuffix1)]], ifelse (data$ vigOrder == "genValueFirst" , data[[paste0 (columnName, colSuffix2)]], NA ))
data[[paste0 (columnName, "_gen_value" )]] <- ifelse (data$ vigOrder == "genValueFirst" ,
data[[paste0 (columnName, colSuffix1)]], ifelse (data$ vigOrder == "justiceCommitFirst" , data[[paste0 (columnName, colSuffix2)]], NA ))
data[[paste0 (columnName, "_justice_value" )]] <- ifelse (data$ vigOrder == "justiceValueFirst" ,
data[[paste0 (columnName, colSuffix1)]], ifelse (data$ vigOrder == "genCommitFirst" , data[[paste0 (columnName, colSuffix2)]], NA ))
return (data)
}
gjg <- swapValuesBasedOnVigOrder (gjg, column = "reputationSignal" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "normSignal" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "approval" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "moral" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "genuine" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "deliberate" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "spontaneous" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "emotion" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "logic" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "quick" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "slow" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "warm" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "good.natured" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "tolerant" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "sincere" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "competent" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "confident" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "independent" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "competitive" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "intelligent" , colSuffix1 = "_1" , colSuffix2 = "_2" )
gjg <- swapValuesBasedOnVigOrder (gjg, column = "politics" , colSuffix1 = "_1" , colSuffix2 = "_2" )
```
## Changing to long format
```{r}
# splitting data
names (gjg)[names (gjg) == "reputationSignal_1" ] <- "reputationSignal1"
names (gjg)[names (gjg) == "reputationSignal_2" ] <- "reputationSignal2"
names (gjg)[names (gjg) == "normSignal_1" ] <- "normSignal1"
names (gjg)[names (gjg) == "normSignal_2" ] <- "normSignal2"
names (gjg)[names (gjg) == "approval_1" ] <- "approval1"
names (gjg)[names (gjg) == "approval_2" ] <- "approval2"
names (gjg)[names (gjg) == "moral_1" ] <- "moral1"
names (gjg)[names (gjg) == "moral_2" ] <- "moral2"
names (gjg)[names (gjg) == "genuine_1" ] <- "genuine1"
names (gjg)[names (gjg) == "genuine_2" ] <- "genuine2"
names (gjg)[names (gjg) == "deliberate_1" ] <- "deliberate1"
names (gjg)[names (gjg) == "deliberate_2" ] <- "deliberate2"
names (gjg)[names (gjg) == "spontaneous_1" ] <- "spontaneous1"
names (gjg)[names (gjg) == "spontaneous_2" ] <- "spontaneous2"
names (gjg)[names (gjg) == "emotion_1" ] <- "emotion1"
names (gjg)[names (gjg) == "emotion_2" ] <- "emotion2"
names (gjg)[names (gjg) == "logic_1" ] <- "logic1"
names (gjg)[names (gjg) == "logic_2" ] <- "logic2"
names (gjg)[names (gjg) == "quick_1" ] <- "quick1"
names (gjg)[names (gjg) == "quick_2" ] <- "quick2"
names (gjg)[names (gjg) == "slow_1" ] <- "slow1"
names (gjg)[names (gjg) == "slow_2" ] <- "slow2"
names (gjg)[names (gjg) == "warm_1" ] <- "warm1"
names (gjg)[names (gjg) == "warm_2" ] <- "warm2"
names (gjg)[names (gjg) == "good.natured_1" ] <- "good.natured1"
names (gjg)[names (gjg) == "good.natured_2" ] <- "good.natured2"
names (gjg)[names (gjg) == "tolerant_1" ] <- "tolerant1"
names (gjg)[names (gjg) == "tolerant_2" ] <- "tolerant2"
names (gjg)[names (gjg) == "sincere_1" ] <- "sincere1"
names (gjg)[names (gjg) == "sincere_2" ] <- "sincere2"
names (gjg)[names (gjg) == "competent_1" ] <- "competent1"
names (gjg)[names (gjg) == "competent_2" ] <- "competent2"
names (gjg)[names (gjg) == "confident_1" ] <- "confident1"
names (gjg)[names (gjg) == "confident_2" ] <- "confident2"
names (gjg)[names (gjg) == "independent_1" ] <- "independent1"
names (gjg)[names (gjg) == "independent_2" ] <- "independent2"
names (gjg)[names (gjg) == "competitive_1" ] <- "competitive1"
names (gjg)[names (gjg) == "competitive_2" ] <- "competitive2"
names (gjg)[names (gjg) == "intelligent_1" ] <- "intelligent1"
names (gjg)[names (gjg) == "intelligent_2" ] <- "intelligent2"
names (gjg)[names (gjg) == "politics_1" ] <- "politics1"
names (gjg)[names (gjg) == "politics_2" ] <- "politics2"
# New columns for composite of warmth and competence
gjg <- gjg %>%
mutate (warmth_gen_commit= (warm_gen_commit+ good.natured_gen_commit+ tolerant_gen_commit+ sincere_gen_commit)/ 4 )%>%
mutate (warmth_justice_commit= (warm_justice_commit+ good.natured_justice_commit+ tolerant_justice_commit+ sincere_justice_commit)/ 4 )%>%
mutate (warmth_gen_value= (warm_gen_value+ good.natured_gen_value+ tolerant_gen_value+ sincere_gen_value)/ 4 )%>%
mutate (warmth_justice_value= (warm_justice_value+ good.natured_justice_value+ tolerant_justice_value+ sincere_justice_value)/ 4 )%>%
mutate (competence_gen_commit= (competent_gen_commit+ confident_gen_commit+ independent_gen_commit+ competitive_gen_commit+ intelligent_gen_commit)/ 5 )%>%
mutate (competence_justice_commit= (competent_justice_commit+ confident_justice_commit+ independent_justice_commit+ competitive_justice_commit+ intelligent_justice_commit)/ 5 )%>%
mutate (competence_gen_value= (competent_gen_value+ confident_gen_value+ independent_gen_value+ competitive_gen_value+ intelligent_gen_value)/ 5 )%>%
mutate (competence_justice_value= (competent_justice_value+ confident_justice_value+ independent_justice_value+ competitive_justice_value+ intelligent_justice_value)/ 5 )
gjg_long<- gjg %>% gather (DV, resp, "reputationSignal_gen_commit" , "reputationSignal_justice_commit" , "reputationSignal_gen_value" , "reputationSignal_justice_value" , "normSignal_gen_commit" , "normSignal_justice_commit" , "normSignal_gen_value" , "normSignal_justice_value" , "approval_gen_commit" , "approval_justice_commit" , "approval_gen_value" , "approval_justice_value" , "moral_gen_commit" , "moral_justice_commit" , "moral_gen_value" , "moral_justice_value" , "genuine_gen_commit" , "genuine_justice_commit" , "genuine_gen_value" , "genuine_justice_value" , "deliberate_gen_commit" , "deliberate_justice_commit" , "deliberate_gen_value" , "deliberate_justice_value" , "spontaneous_gen_commit" , "spontaneous_justice_commit" , "spontaneous_gen_value" , "spontaneous_justice_value" , "emotion_gen_commit" , "emotion_justice_commit" , "emotion_gen_value" , "emotion_justice_value" , "logic_gen_commit" , "logic_justice_commit" , "logic_gen_value" , "logic_justice_value" , "quick_gen_commit" , "quick_justice_commit" , "quick_gen_value" , "quick_justice_value" , "slow_gen_commit" , "slow_justice_commit" , "slow_gen_value" , "slow_justice_value" , "warm_gen_commit" , "warm_justice_commit" , "warm_gen_value" , "warm_justice_value" , "good.natured_gen_commit" , "good.natured_justice_commit" , "good.natured_gen_value" , "good.natured_justice_value" , "tolerant_gen_commit" , "tolerant_justice_commit" , "tolerant_gen_value" , "tolerant_justice_value" , "sincere_gen_commit" , "sincere_justice_commit" , "sincere_gen_value" , "sincere_justice_value" , "competent_gen_commit" , "competent_justice_commit" , "competent_gen_value" , "competent_justice_value" , "confident_gen_commit" , "confident_justice_commit" , "confident_gen_value" , "confident_justice_value" , "independent_gen_commit" , "independent_justice_commit" , "independent_gen_value" , "independent_justice_value" , "competitive_gen_commit" , "competitive_justice_commit" , "competitive_gen_value" , "competitive_justice_value" , "intelligent_gen_commit" , "intelligent_justice_commit" , "intelligent_gen_value" , "intelligent_justice_value" , "warmth_gen_commit" , "warmth_justice_commit" , "warmth_gen_value" , "warmth_justice_value" , "competence_gen_commit" , "competence_justice_commit" , "competence_gen_value" , "competence_justice_value" , "politics_gen_commit" , "politics_justice_commit" , "politics_gen_value" , "politics_justice_value" )
gjg_long<- gjg_long %>%
separate (DV, into= c ("DV" , "motive" , "sentence" ), sep= "_" )
gjg_long <- spread (gjg_long, DV, resp)
```
## Political Perceptions
No significance.
```{r fig.dim=c(12,10)}
plot_cooker7 <- function (data, dv, iv, sentence, Title, x_axis_labs, y_label, sample_size) {
part1 <- ggviolin (data, x = iv, y = dv, group = sentence,
alpha = 0.1 , fill = iv, xlab = "Motive" ,
trim = TRUE , ylab = y_label) +
stat_summary (fun.data = "mean_cl_normal" , geom = "crossbar" , fatten = 1 , na.rm = TRUE ) +
scale_y_continuous (breaks = c (1 : 7 )) +
labs (title = paste0 (Title, " (n = " , sample_size, ")" )) +
scale_x_discrete (labels = x_axis_labs) +
theme (panel.background = element_rect (fill = "transparent" ),
legend.position = "right" ,
plot.title = element_text (face = "bold" , hjust = 0.5 , size = 16 ),
plot.subtitle = element_text (hjust = 0.5 ),
panel.grid.major.y = element_line (color = 'grey75' ),
axis.text.x = element_text (face = "plain" , size = 13 , color = "black" ),
axis.text.y = element_text (face = "plain" , size = 13 , color = "black" ),
axis.title.y = element_text (face = "plain" , size = 13 , color = "black" ,
margin = margin (t = 0 , r = 10 , b = 0 , l = 0 )),
panel.border = element_rect (color = "black" , fill = NA , size = 1 ))
return (part1)
}
# Remove rows with NAs in the "politics" and "motive" columns
gjg_long_no_na <- gjg_long[complete.cases (gjg_long[, c ("politics" , "motive" )]), ]
# Plot for "commit" sentence
plot_commit <- plot_cooker7 (
data = gjg_long_no_na,
dv = "politics" ,
iv = "motive" ,
sentence = "commit" ,
Title = "Donor Politics - Commit" ,
x_axis_labs = c ("generosity" , "justice" ),
y_label = " " ,
sample_size = 198
)
# Plot for "value" sentence
plot_value <- plot_cooker7 (
data = gjg_long_no_na,
dv = "politics" ,
iv = "motive" ,
sentence = "value" ,
Title = "Donor Politics - Value" ,
x_axis_labs = c ("generosity" , "justice" ),
y_label = " " ,
sample_size = 198
)
# Arrange the plots in a grid
percep_plot_arranged <- ggarrange (plot_commit, plot_value, ncol = 1 , nrow = 2 , heights = c (0.5 , 0.5 ))
# Add an overall title to the plot
overall_percep_title <- ggdraw () +
draw_label ("Donor Politics" , fontface = "bold" )
# Arrange the title and plots in a final grid
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_politics <- lmer (politics ~ motive * sentence + (1 | pid), data = gjg_long_no_na)
summary (mod_politics)
# by own politics
mod_politics2 <- lmer (politics ~ motive * sentence * polit_self + (1 | pid), data = gjg_long_no_na)
summary (mod_politics2)
```
## Linear Mixed Effects Models
```{r message=F, results='hide', warning=FALSE}
# new columns for Factor 2-competence (plus logic, minus competitive), Factor 3-moral goodness (approval, moral, genuine), Factor 3-warmth (minus sincere), Factor 5-decision speed (quick, spontaneous)
gjg_long_no_na <- gjg_long_no_na %>%
mutate (competence2= (competent+ confident+ independent+ logic+ intelligent)/ 5 )%>%
mutate (moralGoodness2= (approval+ moral+ genuine)/ 3 )%>%
mutate (decisionSpeed= (quick+ spontaneous)/ 2 )
```
### Mixed Effects Model Warmth (Factor 1)
No significance.
```{r message=F, results='hide', warning=FALSE}
plot_cooker <- function (data, dv, iv, sentence, Title, x_axis_labs, y_label, sample_size) {
part1 <- ggviolin (data, x = iv, y = dv, group = sentence,
alpha = 0.1 , fill = iv, xlab = "Motive" ,
trim = TRUE , ylab = y_label) +
stat_summary (fun.data = "mean_cl_normal" , geom = "crossbar" , fatten = 1 , na.rm = TRUE ) +
scale_y_continuous (breaks = c (1 : 5 )) +
labs (title = paste0 (Title, " (n = " , sample_size, ")" )) +
scale_x_discrete (labels = x_axis_labs) +
theme (panel.background = element_rect (fill = "transparent" ),
legend.position = "right" ,
plot.title = element_text (face = "bold" , hjust = 0.5 , size = 16 ),
plot.subtitle = element_text (hjust = 0.5 ),
panel.grid.major.y = element_line (color = 'grey75' ),
axis.text.x = element_text (face = "plain" , size = 13 , color = "black" ),
axis.text.y = element_text (face = "plain" , size = 13 , color = "black" ),
axis.title.y = element_text (face = "plain" , size = 13 , color = "black" ,
margin = margin (t = 0 , r = 10 , b = 0 , l = 0 )),
panel.border = element_rect (color = "black" , fill = NA , size = 1 ))
return (part1)
}
# Plot for "commit" sentence
plot_commit <- plot_cooker (
data = gjg_long_no_na,
dv = "warmth" ,
iv = "motive" ,
sentence = "commit" ,
Title = "Warmth - Commit" ,
x_axis_labs = c ("generosity" , "justice" ),
y_label = " " ,
sample_size = 198
)
# Plot for "value" sentence
plot_value <- plot_cooker (
data = gjg_long_no_na,
dv = "warmth" ,
iv = "motive" ,
sentence = "value" ,
Title = "Warmth - Value" ,
x_axis_labs = c ("generosity" , "justice" ),
y_label = " " ,
sample_size = 198
)
# Arrange the plots in a grid
percep_plot_arranged <- ggarrange (plot_commit, plot_value, ncol = 1 , nrow = 2 , heights = c (0.5 , 0.5 ))
# Add an overall title to the plot
overall_percep_title <- ggdraw () +
draw_label ("Factor 1 (Warmth)" , fontface = "bold" )
# Arrange the title and plots in a final grid
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_warmth <- lmer (warmth ~ motive * sentence + (1 | pid), data = gjg_long_no_na)
summary (mod_warmth)
```
### Mixed Effects Model Competence (Factor 2)
Main effect of justice over generosity, no interaction.
```{r message=F, results='hide', warning=FALSE}
# Plot for "commit" sentence
plot_commit <- plot_cooker (
data = gjg_long_no_na,
dv = "competence2" ,
iv = "motive" ,
sentence = "commit" ,
Title = "Competence - Commit" ,
x_axis_labs = c ("generosity" , "justice" ),
y_label = " " ,
sample_size = 198
)
# Plot for "value" sentence
plot_value <- plot_cooker (
data = gjg_long_no_na,
dv = "competence2" ,
iv = "motive" ,
sentence = "value" ,
Title = "Competence - Value" ,
x_axis_labs = c ("generosity" , "justice" ),
y_label = " " ,
sample_size = 198
)
# Arrange the plots in a grid
percep_plot_arranged <- ggarrange (plot_commit, plot_value, ncol = 1 , nrow = 2 , heights = c (0.5 , 0.5 ))
# Add an overall title to the plot
overall_percep_title <- ggdraw () +
draw_label ("Factor 2 (Competence)" , fontface = "bold" )
# Arrange the title and plots in a final grid
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_competence2 <- lmer (competence2 ~ motive * sentence + (1 | pid), data = gjg_long_no_na)
summary (mod_competence2)
```
### Mixed Effects Model Moral Goodness (Factor 3)
Main effect of justice over generosity, no interaction.
```{r message=F, results='hide', warning=FALSE}
# Plot for "commit" sentence
plot_commit <- plot_cooker (
data = gjg_long_no_na,
dv = "moralGoodness2" ,
iv = "motive" ,
sentence = "commit" ,
Title = "Moral Goodness - Commit" ,
x_axis_labs = c ("generosity" , "justice" ),
y_label = " " ,
sample_size = 198
)
# Plot for "value" sentence
plot_value <- plot_cooker (
data = gjg_long_no_na,
dv = "moralGoodness2" ,
iv = "motive" ,
sentence = "value" ,
Title = "Moral Goodness - Value" ,
x_axis_labs = c ("generosity" , "justice" ),
y_label = " " ,
sample_size = 198
)
# Arrange the plots in a grid
percep_plot_arranged <- ggarrange (plot_commit, plot_value, ncol = 1 , nrow = 2 , heights = c (0.5 , 0.5 ))
# Add an overall title to the plot
overall_percep_title <- ggdraw () +
draw_label ("Factor 3 (Moral Goodness)" , fontface = "bold" )
# Arrange the title and plots in a final grid
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_moralGoodness <- lmer (moralGoodness2 ~ motive * sentence + (1 | pid), data = gjg_long_no_na)
summary (mod_moralGoodness)
```
### Mixed Effects Model Reputation Signaling (Factor 4)
Main effect of generosity over justice and of commitment over value, no interaction.
```{r message=F, results='hide', warning=FALSE}
# Plot for "commit" sentence
plot_commit <- plot_cooker (
data = gjg_long_no_na,
dv = "reputationSignal" ,
iv = "motive" ,
sentence = "commit" ,
Title = "Reputation Signaling - Commit" ,
x_axis_labs = c ("generosity" , "justice" ),
y_label = " " ,
sample_size = 198
)
# Plot for "value" sentence
plot_value <- plot_cooker (
data = gjg_long_no_na,
dv = "reputationSignal" ,
iv = "motive" ,
sentence = "value" ,
Title = "Reputation Signaling - Value" ,
x_axis_labs = c ("generosity" , "justice" ),
y_label = " " ,
sample_size = 198
)
# Arrange the plots in a grid
percep_plot_arranged <- ggarrange (plot_commit, plot_value, ncol = 1 , nrow = 2 , heights = c (0.5 , 0.5 ))
# Add an overall title to the plot
overall_percep_title <- ggdraw () +
draw_label ("Factor 4 (Reputation Signaling)" , fontface = "bold" )
# Arrange the title and plots in a final grid
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_reputationSignal <- lmer (reputationSignal ~ motive * sentence + (1 | pid), data = gjg_long_no_na)
summary (mod_reputationSignal)
```
### Mixed Effects Model Decision Speed (Factor 5)
Main effect of value over commitment, no interaction.
```{r message=F, results='hide', warning=FALSE}
# Plot for "commit" sentence
plot_commit <- plot_cooker (
data = gjg_long_no_na,
dv = "decisionSpeed" ,
iv = "motive" ,
sentence = "commit" ,
Title = "Decision Speed - Commit" ,
x_axis_labs = c ("generosity" , "justice" ),
y_label = " " ,
sample_size = 198
)
# Plot for "value" sentence
plot_value <- plot_cooker (
data = gjg_long_no_na,
dv = "decisionSpeed" ,
iv = "motive" ,
sentence = "value" ,
Title = "Decision Speed - Value" ,
x_axis_labs = c ("generosity" , "justice" ),
y_label = " " ,
sample_size = 198
)
# Arrange the plots in a grid
percep_plot_arranged <- ggarrange (plot_commit, plot_value, ncol = 1 , nrow = 2 , heights = c (0.5 , 0.5 ))
# Add an overall title to the plot
overall_percep_title <- ggdraw () +
draw_label ("Factor 5 (Decision Speed)" , fontface = "bold" )
# Arrange the title and plots in a final grid
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_decisionSpeed <- lmer (decisionSpeed ~ motive * sentence + (1 | pid), data = gjg_long_no_na)
summary (mod_decisionSpeed)
```
### Mixed Effects Model Emotion (Factor 6)
Main effect of justice over generosity and of value over commitment, no interaction.
```{r message=F, results='hide', warning=FALSE}
# Plot for "commit" sentence
plot_commit <- plot_cooker (
data = gjg_long_no_na,
dv = "emotion" ,
iv = "motive" ,
sentence = "commit" ,
Title = "Emotion - Commit" ,
x_axis_labs = c ("generosity" , "justice" ),
y_label = " " ,
sample_size = 198
)
# Plot for "value" sentence
plot_value <- plot_cooker (
data = gjg_long_no_na,
dv = "emotion" ,
iv = "motive" ,
sentence = "value" ,
Title = "Emotion - Value" ,
x_axis_labs = c ("generosity" , "justice" ),
y_label = " " ,
sample_size = 198
)
# Arrange the plots in a grid
percep_plot_arranged <- ggarrange (plot_commit, plot_value, ncol = 1 , nrow = 2 , heights = c (0.5 , 0.5 ))
# Add an overall title to the plot
overall_percep_title <- ggdraw () +
draw_label ("Factor 6 (Emotion)" , fontface = "bold" )
# Arrange the title and plots in a final grid
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_emotion <- lmer (emotion ~ motive * sentence + (1 | pid), data = gjg_long_no_na)
summary (mod_emotion)
```
### Mixed Effects Model Norm Signaling
Main effect of justice over generosity, no interaction.
```{r message=F, results='hide', warning=FALSE}
# Plot for "commit" sentence
plot_commit <- plot_cooker (
data = gjg_long_no_na,
dv = "normSignal" ,
iv = "motive" ,
sentence = "commit" ,
Title = "Norm Signaling - Commit" ,
x_axis_labs = c ("generosity" , "justice" ),
y_label = " " ,
sample_size = 198
)
# Plot for "value" sentence
plot_value <- plot_cooker (
data = gjg_long_no_na,
dv = "normSignal" ,
iv = "motive" ,
sentence = "value" ,
Title = "Norm Signaling - Value" ,
x_axis_labs = c ("generosity" , "justice" ),
y_label = " " ,
sample_size = 198
)
# Arrange the plots in a grid
percep_plot_arranged <- ggarrange (plot_commit, plot_value, ncol = 1 , nrow = 2 , heights = c (0.5 , 0.5 ))
# Add an overall title to the plot
overall_percep_title <- ggdraw () +
draw_label ("Norm Signaling" , fontface = "bold" )
# Arrange the title and plots in a final grid
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_normSignal <- lmer (normSignal ~ motive * sentence + (1 | pid), data = gjg_long_no_na)
summary (mod_normSignal)
```