---
title: "Generosity vs Justice V5"
author: 'Marcus + Lizy + Nadia'
date: "7/24/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 July 19, 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_v5/Gen_just_V5 (1).csv" )
```
## Reshaping data
```{r}
# 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$ vigOrder == "justiceFirst" , gjg$ reputation_signal_1, gjg$ reputation_signal_2)
gjg$ reputation_signal_gen <- ifelse (gjg$ vigOrder == "justiceFirst" , gjg$ reputation_signal_2, gjg$ reputation_signal_1)
convert_vigOrder_columns <- function (data, column_just, column_gen, vigOrder_col) {
# Create new columns for "_just" and "_gen"
data[[column_just]] <- ifelse (data[[vigOrder_col]] == "justiceFirst" ,
data[[paste0 (column_just, "_1" )]], data[[paste0 (column_just, "_2" )]])
data[[column_gen]] <- ifelse (data[[vigOrder_col]] == "justiceFirst" ,
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" , "vigOrder" )
names (gjg)[names (gjg) == "norm_signal" ] <- "norm_signal_just"
gjg <- convert_vigOrder_columns (gjg, "approval" , "approval_gen" , "vigOrder" )
names (gjg)[names (gjg) == "approval" ] <- "approval_just"
gjg <- convert_vigOrder_columns (gjg, "moral" , "moral_gen" , "vigOrder" )
names (gjg)[names (gjg) == "moral" ] <- "moral_just"
gjg <- convert_vigOrder_columns (gjg, "genuine" , "genuine_gen" , "vigOrder" )
names (gjg)[names (gjg) == "genuine" ] <- "genuine_just"
gjg <- convert_vigOrder_columns (gjg, "deliberate" , "deliberate_gen" , "vigOrder" )
names (gjg)[names (gjg) == "deliberate" ] <- "deliberate_just"
gjg <- convert_vigOrder_columns (gjg, "spontaneous" , "spontaneous_gen" , "vigOrder" )
names (gjg)[names (gjg) == "spontaneous" ] <- "spontaneous_just"
gjg <- convert_vigOrder_columns (gjg, "emotion" , "emotion_gen" , "vigOrder" )
names (gjg)[names (gjg) == "emotion" ] <- "emotion_just"
gjg <- convert_vigOrder_columns (gjg, "logic" , "logic_gen" , "vigOrder" )
names (gjg)[names (gjg) == "logic" ] <- "logic_just"
gjg <- convert_vigOrder_columns (gjg, "quick" , "quick_gen" , "vigOrder" )
names (gjg)[names (gjg) == "quick" ] <- "quick_just"
gjg <- convert_vigOrder_columns (gjg, "slow" , "slow_gen" , "vigOrder" )
names (gjg)[names (gjg) == "slow" ] <- "slow_just"
gjg <- convert_vigOrder_columns (gjg, "warm" , "warm_gen" , "vigOrder" )
names (gjg)[names (gjg) == "warm" ] <- "warm_just"
gjg <- convert_vigOrder_columns (gjg, "good.natured" , "good.natured_gen" , "vigOrder" )
names (gjg)[names (gjg) == "good.natured" ] <- "good.natured_just"
gjg <- convert_vigOrder_columns (gjg, "tolerant" , "tolerant_gen" , "vigOrder" )
names (gjg)[names (gjg) == "tolerant" ] <- "tolerant_just"
gjg <- convert_vigOrder_columns (gjg, "sincere" , "sincere_gen" , "vigOrder" )
names (gjg)[names (gjg) == "sincere" ] <- "sincere_just"
gjg <- convert_vigOrder_columns (gjg, "competent" , "competent_gen" , "vigOrder" )
names (gjg)[names (gjg) == "competent" ] <- "competent_just"
gjg <- convert_vigOrder_columns (gjg, "confident" , "confident_gen" , "vigOrder" )
names (gjg)[names (gjg) == "confident" ] <- "confident_just"
gjg <- convert_vigOrder_columns (gjg, "independent" , "independent_gen" , "vigOrder" )
names (gjg)[names (gjg) == "independent" ] <- "independent_just"
gjg <- convert_vigOrder_columns (gjg, "competitive" , "competitive_gen" , "vigOrder" )
names (gjg)[names (gjg) == "competitive" ] <- "competitive_just"
gjg <- convert_vigOrder_columns (gjg, "intelligent" , "intelligent_gen" , "vigOrder" )
names (gjg)[names (gjg) == "intelligent" ] <- "intelligent_just"
gjg <- convert_vigOrder_columns (gjg, "politics" , "politics_gen" , "vigOrder" )
names (gjg)[names (gjg) == "politics" ] <- "politics_just"
gjg <- convert_vigOrder_columns (gjg, "diff_org_polit" , "diff_org_polit_gen" , "vigOrder" )
names (gjg)[names (gjg) == "diff_org_polit" ] <- "diff_org_polit_just"
```
# Attention check
```{r,message=F, results='hide', warning=FALSE}
# filtering out failures/nonresponses to attention checks
length (gjg$ pid)
gjg <- gjg %>%
filter (! is.na (attn_bucket), attn_self> 2 )
length (gjg$ pid)
```
1 participant failed the attention check.
# 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" , "same_org_polit" , "diff_org_polit_just" , "diff_org_polit_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" , "same_org_polit" , "diff_org_polit_just" , "diff_org_polit_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" , "same_org_polit" , "diff_org_polit_just" , "diff_org_polit_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" , "diff_org_polit_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" , "diff_org_polit_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" ,
"diffOrgPolit_just" = "diff_org_polit_just" ,
"diffOrgPolit_gen" = "diff_org_polit_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" , "diffOrgPolit_just" , "diffOrgPolit_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" , "diffOrgPolit" , "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"
names (gjg)[names (gjg) == "same_org" ] <- "sameOrg"
names (gjg)[names (gjg) == "same_org_polit" ] <- "sameOrgPolit"
names (gjg)[names (gjg) == "diff_org_polit_1" ] <- "diffOrgPolit1"
names (gjg)[names (gjg) == "diff_org_polit_2" ] <- "diffOrgPolit2"
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" , "diffOrgPolit_just" , "diffOrgPolit_gen" )
gjg_long<- gjg_long %>%
separate (DV, into= c ("DV" , "motive" ), sep= "_" )
gjg_long <- spread (gjg_long, DV, resp)
```
# Linear Mixed Effects
Norm signaling, approval, moral, and genuine are significant.
```{r fig.dim=c(12,10)}
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" )
}
# mixed effects model
gjg_long$ motive <- as.factor (gjg_long$ motive)
mod_reputationSignaling <- lmer (reputationSignal ~ motive + (1 | pid), data = gjg_long)
summary (mod_reputationSignaling)
percep_plot_list <- list (plot_cooker ("motive" , "reputationSignal" , "Reputation Signal" , c ("generosity" ,"justice" )," " , 199 ),plot_cooker ("motive" , "normSignal" , "Norm Signal" , c ("generosity" , "justice" )," " , 199 ),plot_cooker ("motive" , "approval" , "Approval" , c ("generosity" , "justice" )," " , 199 ),plot_cooker ("motive" , "moral" , "Moral" , c ("generosity" , "justice" )," " , 199 ),plot_cooker ("motive" , "genuine" , "Genuine" , c ("generosity" , "justice" )," " , 199 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 2 , nrow = 3 )
overall_percep_title <- ggdraw () +
draw_label ("Perception DVs" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_reputationSignaling <- lmer (reputationSignal ~ motive + (1 | pid), data = gjg_long)
summary (mod_reputationSignaling)
mod_normSignaling <- lmer (normSignal ~ motive + (1 | pid), data = gjg_long)
summary (mod_normSignaling)
mod_approval <- lmer (approval ~ motive + (1 | pid), data = gjg_long)
summary (mod_approval)
mod_moral <- lmer (moral ~ motive + (1 | pid), data = gjg_long)
summary (mod_moral)
mod_genuine <- lmer (genuine ~ motive + (1 | pid), data = gjg_long)
summary (mod_genuine)
```
Spontaneous, logic, and slow are significant (deliberate is marginally significant).
```{r fig.dim=c(12,10)}
percep_plot_list <- list (plot_cooker ("motive" , "deliberate" , "Deliberate" , c ("generosity" ,"justice" )," " , 199 ),plot_cooker ("motive" , "spontaneous" , "Spontaneous" , c ("generosity" , "justice" )," " , 199 ),plot_cooker ("motive" , "emotion" , "Emotion" , c ("generosity" , "justice" )," " , 199 ),plot_cooker ("motive" , "logic" , "Logic" , c ("generosity" , "justice" )," " , 199 ),plot_cooker ("motive" , "quick" , "Quick" , c ("generosity" , "justice" ),"" , 199 ),plot_cooker ("motive" ,"slow" ,"Slow" ,c ("generosity" ,"justice" )," " , 199 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 2 , nrow = 3 )
overall_percep_title <- ggdraw () +
draw_label ("Deliberation DVs" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_deliberate <- lmer (deliberate ~ motive + (1 | pid), data = gjg_long)
summary (mod_deliberate)
mod_spontaneous <- lmer (spontaneous ~ motive + (1 | pid), data = gjg_long)
summary (mod_spontaneous)
mod_emotion <- lmer (emotion ~ motive + (1 | pid), data = gjg_long)
summary (mod_emotion)
mod_logic <- lmer (logic ~ motive + (1 | pid), data = gjg_long)
summary (mod_logic)
mod_quick <- lmer (quick ~ motive + (1 | pid), data = gjg_long)
summary (mod_quick)
mod_slow <- lmer (slow ~ motive + (1 | pid), data = gjg_long)
summary (mod_slow)
```
Warmth and competence are both significant.
```{r fig.dim=c(12,10)}
percep_plot_list <- list (plot_cooker ("motive" , "warmth" , "Warmth" , c ("generosity" ,"justice" )," " , 199 ),plot_cooker ("motive" , "competence" , "Competence" , c ("generosity" , "justice" )," " , 199 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 2 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Warmth/Competence DVs" , 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)
mod_competence <- lmer (competence ~ motive + (1 | pid), data = gjg_long)
summary (mod_competence)
```
Warm, good-natured, and tolerant are significant (sincere is marginally significant).
```{r fig.dim=c(12,10)}
percep_plot_list <- list (plot_cooker ("motive" , "warm" , "Warm" , c ("generosity" ,"justice" )," " , 199 ),plot_cooker ("motive" , "good.natured" , "Good-Natured" , c ("generosity" , "justice" )," " , 199 ),plot_cooker ("motive" , "tolerant" , "Tolerant" , c ("generosity" , "justice" )," " , 199 ),plot_cooker ("motive" , "sincere" , "Sincere" , c ("generosity" , "justice" )," " , 199 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 2 , nrow = 2 )
overall_percep_title <- ggdraw () +
draw_label ("Warmth DVs" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_warm <- lmer (warm ~ motive + (1 | pid), data = gjg_long)
summary (mod_warm)
mod_good.natured <- lmer (good.natured ~ motive + (1 | pid), data = gjg_long)
summary (mod_good.natured)
mod_tolerant <- lmer (tolerant ~ motive + (1 | pid), data = gjg_long)
summary (mod_tolerant)
mod_sincere <- lmer (sincere ~ motive + (1 | pid), data = gjg_long)
summary (mod_sincere)
```
Confident, independent, and competitive are significant (competent is marginally significant).
```{r fig.dim=c(12,10)}
percep_plot_list <- list (plot_cooker ("motive" , "competent" , "Competent" , c ("generosity" ,"justice" )," " , 199 ),plot_cooker ("motive" , "confident" , "Confident" , c ("generosity" , "justice" )," " , 199 ),plot_cooker ("motive" , "independent" , "Independent" , c ("generosity" , "justice" )," " , 199 ),plot_cooker ("motive" , "competitive" , "Competitive" , c ("generosity" , "justice" )," " , 199 ),plot_cooker ("motive" , "intelligent" , "Intelligent" , c ("generosity" , "justice" )," " , 199 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 2 , nrow = 3 )
overall_percep_title <- ggdraw () +
draw_label ("Competence DVs" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_competent <- lmer (competent ~ motive + (1 | pid), data = gjg_long)
summary (mod_competent)
mod_confident <- lmer (confident ~ motive + (1 | pid), data = gjg_long)
summary (mod_confident)
mod_independent <- lmer (independent ~ motive + (1 | pid), data = gjg_long)
summary (mod_independent)
mod_competitive <- lmer (competitive ~ motive + (1 | pid), data = gjg_long)
summary (mod_competitive)
mod_intelligent <- lmer (intelligent ~ motive + (1 | pid), data = gjg_long)
summary (mod_intelligent)
```
## 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 ("generosity" ,"justice" )," " , 199 ))
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.163
d <- 0.2412 / sqrt (2.196 )
# by own politics
mod_politics2 <- lmer (politics ~ motive * polit_self + (1 | pid), data = gjg_long)
summary (mod_politics2)
```
Marginally significant.
```{r fig.dim=c(12,10)}
percep_plot_list <- list (plot_cooker7 ("motive" , "diffOrgPolit" , "Organization Politics" , c ("generosity" ,"justice" )," " , 199 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Organization Politics" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_orgPolitics <- lmer (diffOrgPolit ~ motive + (1 | pid), data = gjg_long)
summary (mod_orgPolitics)
# effect size = 0.245
d <- 0.3622 / sqrt (2.18 )
# by own politics
mod_orgPolitics2 <- lmer (diffOrgPolit ~ motive * polit_self + (1 | pid), data = gjg_long)
summary (mod_orgPolitics2)
```
64% of people thought Jon and Will donated to different organizations (36% to same). Among the "same org" group, the average perceived political leaning of the org is significantly different from 4 (more liberal).
```{r message=F, results='hide', warning=FALSE}
# percent of people who thought they donated to same org
prop.table (table (gjg$ sameOrg, useNA= "always" )) # 64% different, 36% same
table (gjg$ sameOrgPolit)
gjg$ sameOrgPolit <- ifelse (gjg$ sameOrgPolit == 10 , 1 ,
ifelse (gjg$ sameOrgPolit == 1 , 2 ,
ifelse (gjg$ sameOrgPolit == 2 , 3 ,
ifelse (gjg$ sameOrgPolit == 3 , 4 ,
ifelse (gjg$ sameOrgPolit == 4 , 5 ,
ifelse (gjg$ sameOrgPolit == 5 , 6 ,
ifelse (gjg$ sameOrgPolit == 6 , 7 , NA )))))))
prop.table (table (gjg$ sameOrgPolit))
shapiro.test (gjg$ sameOrgPolit)
sameorg_test <- wilcox.test (gjg$ sameOrgPolit, mu= 4 )
mean (gjg$ sameOrgPolit, na.rm= T)
```
# Exploratory Factor Analyses
## Running Factor Analysis for Generosity, 5 factor
```{r message=F, results='hide', warning=FALSE}
#deleting unrelated columns
gjg_long2 <- gjg_long[, ! names (gjg_long) %in% c ("attn_bucket" ,"openFeedback" ,"confusion" ,"attn_self" ,"polit_comp" ,"pid" ,"age" ,"gender" ,"race" ,"income" ,"education" ,"ses" ,"political_party" ,"political_overall" ,"political_social" ,"political_economic" ,"warmth" ,"competence" ,"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" )]
#generous factor analysis
gjg_long_gen <- subset (gjg_long2, motive != "just" )
gjg_long_gen <- gjg_long_gen[, ! names (gjg_long_gen) %in% c ("motive" )]
which (is.na (gjg_long_gen), arr.ind = TRUE )
str (gjg_long_gen)
gjg_long_gen<- as.data.frame (gjg_long_gen)
gjg_long_gen<- na.omit (gjg_long_gen)
#evaluating correlation matrix
write.csv (cor (gjg_long_gen)> 0.8 , file= "Suspect_Correlations.csv" )
write.csv (cor (gjg_long_gen), file= "Correlation_Values.csv" )
#KMO test
KMO (gjg_long_gen)
cortest.bartlett (gjg_long_gen)
#reject the null
ev <- eigen (cor (gjg_long_gen))
ev$ values
scree (gjg_long_gen, pc= FALSE )
fa.parallel (gjg_long_gen, fa= "fa" )
Nfacs <- 5
fit <- factanal (gjg_long_gen, Nfacs, rotation= "promax" )
print (fit, digits= 2 , cutoff= 0.3 , sort= TRUE )
loads <- fit$ loadings
fa.diagram (loads)
```
## Running Factor Analysis for Justice, 4 factor
```{r message=F, results='hide', warning=FALSE}
gjg_long_just <- subset (gjg_long2, motive != "gen" )
gjg_long_just <- gjg_long_just[, ! names (gjg_long_just) %in% c ("motive" )]
which (is.na (gjg_long_just), arr.ind = TRUE )
str (gjg_long_just)
gjg_long_just<- as.data.frame (gjg_long_just)
gjg_long_just<- na.omit (gjg_long_just)
#evaluating correlation matrix
write.csv (cor (gjg_long_just)> 0.8 , file= "Suspect_Correlations.csv" )
write.csv (cor (gjg_long_just), file= "Correlation_Values.csv" )
#KMO test
KMO (gjg_long_just)
cortest.bartlett (gjg_long_just)
#reject the null
ev <- eigen (cor (gjg_long_just))
ev$ values
scree (gjg_long_just, pc= FALSE )
fa.parallel (gjg_long_just, fa= "fa" )
Nfacs <- 4
fit <- factanal (gjg_long_just, Nfacs, rotation= "promax" )
print (fit, digits= 2 , cutoff= 0.3 , sort= TRUE )
loads <- fit$ loadings
fa.diagram (loads)
```
## Running Factor Analysis Overall, 5 factor
```{r message=F, results='hide', warning=FALSE}
#deleting unrelated columns
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" )]
write.csv (cor (gjg_long3)> 0.8 , file= "Suspect_Correlations.csv" )
write.csv (cor (gjg_long3), file= "Correlation_Values.csv" )
#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 for 5 Factors
```{r message=F, results='hide', warning=FALSE}
#new columns for Factor 1-competence (plus logic, minus competitive), Factor 2-moral goodness (approval, moral, genuine, sincere), Factor 3-warmth (minus sincere), Factor 4-decision speed (quick, spontaneous), Factor 5-decision style (slow, competitive, norm signal)
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 (moralGoodness_just= (approval_just+ moral_just+ genuine_just+ sincere_just)/ 4 )%>%
mutate (moralGoodness_gen= (approval_gen+ moral_gen+ genuine_gen+ sincere_gen)/ 4 )%>%
mutate (warmth2_just= (warm_just+ good.natured_just+ tolerant_just)/ 3 )%>%
mutate (warmth2_gen= (warm_gen+ good.natured_gen+ tolerant_gen)/ 3 )%>%
mutate (decisionSpeed_just= (quick_just+ spontaneous_just)/ 2 )%>%
mutate (decisionSpeed_gen= (quick_gen+ spontaneous_gen)/ 2 )%>%
mutate (decisionStyle_just= (slow_just+ competitive_just+ normSignal_just)/ 3 )%>%
mutate (decisionStyle_gen= (slow_gen+ competitive_gen+ normSignal_gen)/ 3 )
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" ,"moralGoodness_just" ,"moralGoodness_gen" ,"warmth2_just" , "warmth2_gen" ,"decisionSpeed_just" ,"decisionSpeed_gen" ,"decisionStyle_just" ,"decisionStyle_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 Competence (Factor 1)
Just donors are perceived to be significantly more competent than generous donors.
```{r fig.dim=c(12,10)}
percep_plot_list <- list (plot_cooker ("motive" , "competence2" , "Competence" , c ("justice" ,"generosity" )," " , 199 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Factor 1 (Competence)" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_competence2 <- lmer (competence2 ~ motive + (1 | pid), data = gjg_long)
summary (mod_competence2)
```
#### Mixed Effects Model Moral Goodness (Factor 2)
Generous donors are perceived to be significantly more morally good than just donors.
```{r fig.dim=c(12,10)}
percep_plot_list <- list (plot_cooker ("motive" , "moralGoodness" , "Moral Goodness" , c ("justice" ,"generosity" )," " , 199 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Factor 2 (Moral Goodness)" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_moralGoodness <- lmer (moralGoodness ~ motive + (1 | pid), data = gjg_long)
summary (mod_moralGoodness)
```
#### Mixed Effects Model Warmth (Factor 3)
Generous donors are perceived to be significantly more warm than just donors.
```{r fig.dim=c(12,10)}
percep_plot_list <- list (plot_cooker ("motive" , "warmth2" , "Warmth" , c ("justice" ,"generosity" )," " , 199 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Factor 3 (Warmth)" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_warmth2 <- lmer (warmth2 ~ motive + (1 | pid), data = gjg_long)
summary (mod_warmth2)
```
#### Mixed Effects Model Decision Speed (Factor 4)
Generous donors are perceived to make decisions significantly more quickly/spontaneously than just donors.
```{r fig.dim=c(12,10)}
percep_plot_list <- list (plot_cooker ("motive" , "decisionSpeed" , "Decision Speed" , c ("justice" ,"generosity" )," " , 199 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Factor 4 (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 Decision Speed (Factor 5)
Just donors are perceived to make decisions significantly more slowly/competitively and engage in norm signaling more than just donors.
```{r fig.dim=c(12,10)}
percep_plot_list <- list (plot_cooker ("motive" , "decisionStyle" , "Decision Style" , c ("justice" ,"generosity" )," " , 199 ))
percep_plot_arranged <- ggarrange (plotlist = percep_plot_list, ncol = 1 , nrow = 1 )
overall_percep_title <- ggdraw () +
draw_label ("Factor 5 (Decision Style)" , fontface = "bold" )
plot_grid (overall_percep_title, percep_plot_arranged, ncol = 1 , rel_heights = c (0.1 , 0.9 ))
mod_decisionStyle <- lmer (decisionStyle ~ motive + (1 | pid), data = gjg_long)
summary (mod_decisionStyle)
```
# Confirmatory Factor Analyses
## Running Factor Analysis for V3 Factors, 6 Factor
These 6 factors are a reasonably good fit.
```{r message=F, results='hide', warning=FALSE}
#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 )
```
### Linear Mixed Effects for 6 Factors (from V3)
```{r message=F, results='hide', warning=FALSE}
#new column for Factor 3-moral goodness (approval, moral, genuine)
gjg <- gjg %>%
mutate (moralGoodness2_just= (approval_just+ moral_just+ genuine_just)/ 3 )%>%
mutate (moralGoodness2_gen= (approval_gen+ moral_gen+ genuine_gen)/ 3 )
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)
Generous donors are perceived to be significantly warmer than just donors.
```{r message=F, results='hide', warning=FALSE}
percep_plot_list <- list (plot_cooker ("motive" , "warmth" , "Warmth" , c ("justice" ,"generosity" )," " , 199 ))
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" )," " , 199 ))
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)
Generous donors are perceived to be significantly more morally good than just donors.
```{r message=F, results='hide', warning=FALSE}
percep_plot_list <- list (plot_cooker ("motive" , "moralGoodness2" , "Moral Goodness" , c ("justice" ,"generosity" )," " , 199 ))
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)
No significant findings.
```{r message=F, results='hide', warning=FALSE}
percep_plot_list <- list (plot_cooker ("motive" , "reputationSignal" , "Reputation Signaling" , c ("justice" ,"generosity" )," " , 199 ))
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)
Generous donors are perceived to make decisions significantly more quickly/spontaneously than just donors.
```{r message=F, results='hide', warning=FALSE}
percep_plot_list <- list (plot_cooker ("motive" , "decisionSpeed" , "Decision Speed" , c ("justice" ,"generosity" )," " , 199 ))
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)
No significant findings.
```{r message=F, results='hide', warning=FALSE}
percep_plot_list <- list (plot_cooker ("motive" , "emotion" , "Emotion" , c ("justice" ,"generosity" )," " , 199 ))
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)
```
## Running Factor Analysis for Original Factors, 6 Factor
Not as good of a fit.
```{r message=F, results='hide', warning=FALSE}
library (lavaan)
path <- '
f1 =~ warm + good.natured + tolerant + sincere
f2 =~ independent + intelligent + confident + competent + competitive
f3 =~ approval + moral + genuine
f4 =~ quick + spontaneous + emotion + slow + deliberate + logic
f5 =~ reputationSignal
f6 =~ normSignal
'
model <- cfa (path, data= gjg_long3)
summary (model, fit.measures= TRUE )
```