Exploratory data analysis into Machiavellianism


The MACH-IV test for measuring machiavellianism

Machiavellianism refers to an interpersonal personality style that is characterised generally by manipultative behaviours and and emotional coldness (Leary & Hoyle, 2009). While a psychological concept, this has been studied in particularly in destructive leadership styles. In fact, it is considered as one of three “Dark Triad” personality traits (Paulhus & Williams, 2002). I recall finding this an interesting area of study in my management studies years ago and happy to have stumbled across some publicly available data on Machiavellianism.

One popular self-assessment test for measuring the Machiavellianism construct and developed by Christie & Geis (1970) is the MACH-IV test. This contains 20 items scored on a Likert-scale and totalled to provide an overall score for Machiavellianism. The maximum score for the test is 100 and a lower score indicating lower levels of Machiavellianism.

The MACH-IV data set

A number of items are reversed for scoring, e.g. strongly disagreeing with the statement “Honesty is the best policy in all cases.” will result in a score of 5 for Machiavellianism. The open data set was downloaded from Open Psychometrics and I would encourage those interested in looking at data relating to online personality tests to visit the site. The data appeared to be already corrected for reverse scoring for relevant items.

The raw data does not contain any pre-calculated scoring for factors. Existing research (Miller, Nicols, & Konopaske, 2019) has indicated numerous factor structures (Christie & Geis, 1970) identified ranging from the original three factors to even nine factors (Panitz, 1989). For this exploratory exercise, I’ve chosen to compute the scoring for four factors identified in Corral & Calvete (2000) which included the following factors:

  1. Negative Interpersonal Tactics (e.g. “Never tell anyone the real reason you did something unless it is useful to do so.”)
  2. Positive Interpersonal Tactics (e.g. “Honesty is the best policy in all cases.”)
  3. Cynical View of Human Nature (e.g. “It is hard to get ahead without cutting corners here and there.”)
  4. Positive View of Human Nature (e.g. “Most people are basically good and kind.”)

Load the relevant R packages. The ggstatsplot package is a powerful package that extends the ggplot2 features to produce suitable graphics that incorporates statistical tests. I have used the ggpubr package previously but the ggstatsplot package is really something else.

We’ll be taking a look at the raw data set containing over 70,000 online responses to the MACH-IV. Firstly, the csv data file needs to be imported.

# read the MACH raw data file
# takes ~5 seconds to read the file
mach_raw <- readr::read_delim(file = "../../../other files/data/mach_data/data.csv",
                              col_names = TRUE,
                              delim = "\t")

Then take a quick look at the data and see how many records there are:

# take a glance at data set
# check number of records
glimpse(mach_raw)
## Observations: 73,489
## Variables: 105
## $ Q1A          <dbl> 3, 5, 5, 2, 5, 4, 3, 4, 5, 5, 5, 4, 5, 4, 4, 2, 4...
## $ Q1I          <dbl> 6, 17, 16, 12, 13, 4, 11, 6, 17, 7, 1, 2, 15, 15,...
## $ Q1E          <dbl> 21017, 3818, 4186, 9373, 9465, 9451, 3933, 10501,...
## $ Q2A          <dbl> 3, 5, 5, 4, 5, 3, 3, 4, 5, 4, 5, 2, 5, 4, 5, 4, 1...
## $ Q2I          <dbl> 7, 9, 12, 1, 7, 5, 10, 15, 11, 19, 16, 14, 1, 17,...
## $ Q2E          <dbl> 18600, 7850, 2900, 10171, 5284, 6467, 3760, 3773,...
## $ Q3A          <dbl> 5, 1, 1, 2, 2, 5, 2, 3, 3, 3, 1, 3, 5, 2, 2, 4, 4...
## $ Q3I          <dbl> 20, 16, 2, 7, 19, 15, 17, 2, 10, 9, 17, 6, 3, 3, ...
## $ Q3E          <dbl> 14957, 5902, 7160, 10117, 8872, 17534, 4684, 1062...
## $ Q4A          <dbl> 2, 3, 1, 1, 1, 3, 4, 2, 1, 5, 1, 4, 3, 1, 1, 4, 1...
## $ Q4I          <dbl> 5, 15, 4, 4, 4, 3, 12, 8, 14, 3, 13, 9, 10, 10, 5...
## $ Q4E          <dbl> 12038, 5798, 2733, 4346, 4312, 10033, 1931, 8846,...
## $ Q5A          <dbl> 3, 5, 5, 5, 2, 4, 3, 5, 4, 4, 5, 4, 5, 5, 5, 2, 4...
## $ Q5I          <dbl> 10, 1, 9, 13, 5, 9, 19, 1, 15, 12, 18, 17, 18, 20...
## $ Q5E          <dbl> 21089, 7301, 5549, 16775, 32253, 9767, 6920, 1019...
## $ Q6A          <dbl> 1, 1, 1, 1, 1, 3, 3, 4, 1, 4, 2, 4, 1, 2, 1, 4, 5...
## $ Q6I          <dbl> 8, 8, 15, 20, 10, 8, 16, 9, 20, 8, 7, 18, 12, 7, ...
## $ Q6E          <dbl> 7730, 3185, 2097, 4901, 7852, 3684, 3313, 5161, 5...
## $ Q7A          <dbl> 2, 1, 1, 3, 2, 3, 2, 1, 1, 3, 1, 2, 1, 2, 2, 2, 5...
## $ Q7I          <dbl> 16, 5, 1, 10, 18, 11, 5, 20, 13, 4, 2, 10, 8, 4, ...
## $ Q7E          <dbl> 10618, 10833, 4322, 6365, 19931, 10883, 3551, 694...
## $ Q8A          <dbl> 4, 4, 5, 2, 4, 3, 4, 5, 3, 2, 2, 1, 5, 1, 5, 4, 3...
## $ Q8I          <dbl> 12, 2, 17, 5, 17, 20, 20, 11, 2, 11, 6, 4, 11, 6,...
## $ Q8E          <dbl> 10175, 5130, 4563, 6098, 9923, 5850, 2155, 5178, ...
## $ Q9A          <dbl> 3, 2, 1, 4, 2, 2, 4, 4, 5, 5, 3, 4, 3, 2, 1, 5, 5...
## $ Q9I          <dbl> 9, 13, 11, 14, 12, 7, 13, 17, 9, 6, 12, 13, 17, 1...
## $ Q9E          <dbl> 22181, 15996, 3513, 11333, 9615, 12834, 5126, 660...
## $ Q10A         <dbl> 3, 1, 1, 2, 2, 2, 3, 2, 5, 2, 4, 4, 5, 3, 2, 4, 3...
## $ Q10I         <dbl> 18, 6, 20, 6, 3, 12, 4, 16, 6, 2, 11, 8, 2, 19, 6...
## $ Q10E         <dbl> 35969, 8834, 11082, 17063, 14182, 31001, 5196, 13...
## $ Q11A         <dbl> 1, 1, 1, 1, 1, 1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1...
## $ Q11I         <dbl> 2, 20, 6, 18, 15, 18, 9, 14, 5, 10, 10, 3, 20, 8,...
## $ Q11E         <dbl> 11265, 4113, 7217, 6680, 9492, 8817, 4939, 6117, ...
## $ Q12A         <dbl> 5, 5, 5, 5, 4, 4, 2, 5, 4, 2, 5, 4, 5, 5, 5, 2, 4...
## $ Q12I         <dbl> 14, 14, 18, 15, 20, 6, 6, 18, 1, 20, 20, 5, 6, 13...
## $ Q12E         <dbl> 10618, 3336, 3286, 6799, 15650, 22034, 3561, 7035...
## $ Q13A         <dbl> 4, 5, 5, 1, 4, 4, 4, 1, 3, 2, 4, 4, 5, 2, 4, 1, 2...
## $ Q13I         <dbl> 17, 4, 19, 2, 14, 16, 7, 3, 19, 15, 8, 7, 16, 18,...
## $ Q13E         <dbl> 15993, 5882, 4783, 14912, 24308, 13150, 3257, 362...
## $ Q14A         <dbl> 1, 2, 1, 1, 1, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 1...
## $ Q14I         <dbl> 15, 10, 7, 19, 8, 10, 18, 4, 4, 1, 9, 19, 4, 16, ...
## $ Q14E         <dbl> 11212, 6450, 4200, 2784, 7264, 4950, 1588, 7862, ...
## $ Q15A         <dbl> 5, 5, 5, 4, 5, 5, 4, 4, 4, 5, 4, 1, 5, 5, 4, 4, 1...
## $ Q15I         <dbl> 3, 3, 3, 9, 2, 19, 3, 7, 8, 16, 15, 1, 19, 1, 16,...
## $ Q15E         <dbl> 7331, 4467, 4384, 6233, 6081, 3483, 3260, 3508, 2...
## $ Q16A         <dbl> 2, 1, 1, 1, 1, 1, 1, 2, 2, 5, 1, 2, 1, 2, 2, 1, 4...
## $ Q16I         <dbl> 19, 19, 13, 8, 6, 13, 1, 12, 3, 14, 5, 20, 5, 11,...
## $ Q16E         <dbl> 9830, 4937, 3115, 4635, 5417, 6051, 3355, 4152, 6...
## $ Q17A         <dbl> 4, 2, 1, 1, 1, 1, 3, 1, 1, 3, 2, 2, 1, 4, 3, 3, 1...
## $ Q17I         <dbl> 1, 7, 10, 17, 16, 14, 8, 5, 16, 17, 14, 11, 14, 9...
## $ Q17E         <dbl> 26415, 8267, 32398, 17987, 24339, 19117, 2259, 96...
## $ Q18A         <dbl> 4, 4, 5, 5, 4, 5, 4, 4, 5, 4, 5, 4, 5, 2, 5, 4, 4...
## $ Q18I         <dbl> 4, 12, 8, 16, 11, 1, 15, 10, 12, 13, 19, 15, 13, ...
## $ Q18E         <dbl> 9933, 4419, 3084, 7297, 7153, 16373, 3570, 7910, ...
## $ Q19A         <dbl> 4, 5, 5, 3, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5...
## $ Q19I         <dbl> 13, 11, 5, 3, 1, 17, 2, 19, 7, 5, 3, 12, 9, 5, 4,...
## $ Q19E         <dbl> 13578, 13532, 4284, 12788, 10697, 9884, 1965, 641...
## $ Q20A         <dbl> 4, 3, 3, 4, 1, 2, 1, 4, 5, 2, 5, 2, 1, 4, 3, 1, 1...
## $ Q20I         <dbl> 11, 18, 14, 11, 9, 2, 14, 13, 18, 18, 4, 16, 7, 1...
## $ Q20E         <dbl> 36383, 13346, 7537, 14067, 21721, 22501, 3686, 14...
## $ country      <chr> "GB", "US", "US", "CH", "NL", "US", "NL", "CA", "...
## $ introelapse  <dbl> 49, 38, 4, 60, 37, 3, 2, 40, 1544, 42, 2, 13, 9, ...
## $ testelapse   <dbl> 328, 143, 143, 191, 302, 244, 73, 185, 175, 129, ...
## $ surveyelapse <dbl> 426, 150, 157, 269, 334, 158, 119, 361, 132, 173,...
## $ TIPI1        <dbl> 6, 2, 1, 6, 2, 2, 6, 3, 3, 6, 2, 3, 7, 3, 4, 4, 7...
## $ TIPI2        <dbl> 5, 5, 7, 5, 5, 4, 7, 5, 6, 5, 5, 7, 4, 6, 6, 3, 6...
## $ TIPI3        <dbl> 6, 6, 6, 5, 5, 6, 7, 6, 3, 7, 5, 6, 7, 6, 7, 6, 6...
## $ TIPI4        <dbl> 1, 2, 7, 7, 6, 2, 2, 2, 6, 5, 2, 2, 5, 1, 5, 7, 1...
## $ TIPI5        <dbl> 7, 4, 5, 7, 7, 3, 6, 6, 7, 5, 1, 6, 7, 5, 5, 7, 7...
## $ TIPI6        <dbl> 3, 6, 7, 2, 6, 7, 4, 7, 4, 5, 6, 7, 4, 6, 0, 5, 1...
## $ TIPI7        <dbl> 7, 5, 1, 6, 5, 5, 7, 5, 5, 6, 3, 5, 7, 6, 6, 3, 6...
## $ TIPI8        <dbl> 4, 4, 4, 2, 3, 2, 5, 3, 5, 1, 1, 2, 1, 2, 2, 5, 4...
## $ TIPI9        <dbl> 7, 6, 1, 2, 4, 7, 5, 6, 3, 4, 7, 7, 5, 7, 6, 4, 6...
## $ TIPI10       <dbl> 1, 5, 4, 3, 5, 1, 1, 4, 1, 1, 4, 6, 7, 4, 1, 4, 2...
## $ VCL1         <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
## $ VCL2         <dbl> 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1...
## $ VCL3         <dbl> 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0...
## $ VCL4         <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
## $ VCL5         <dbl> 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1...
## $ VCL6         <dbl> 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1...
## $ VCL7         <dbl> 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0...
## $ VCL8         <dbl> 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0...
## $ VCL9         <dbl> 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0...
## $ VCL10        <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
## $ VCL11        <dbl> 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1...
## $ VCL12        <dbl> 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1...
## $ VCL13        <dbl> 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1...
## $ VCL14        <dbl> 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1...
## $ VCL15        <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1...
## $ VCL16        <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
## $ education    <dbl> 2, 2, 1, 4, 2, 1, 2, 4, 2, 2, 3, 2, 1, 3, 3, 4, 2...
## $ urban        <dbl> 3, 2, 1, 3, 2, 1, 3, 3, 3, 2, 1, 3, 3, 1, 3, 1, 3...
## $ gender       <dbl> 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1...
## $ engnat       <dbl> 1, 1, 1, 2, 2, 2, 2, 1, 2, 1, 1, 1, 2, 2, 2, 1, 2...
## $ age          <dbl> 26, 18, 15, 31, 20, 17, 19, 37, 18, 17, 26, 40, 7...
## $ screenw      <dbl> 1440, 1536, 375, 1280, 360, 1366, 360, 1680, 1366...
## $ screenh      <dbl> 900, 864, 667, 720, 640, 768, 640, 945, 768, 667,...
## $ hand         <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1...
## $ religion     <dbl> 7, 1, 2, 6, 4, 1, 2, 1, 2, 1, 4, 12, 1, 1, 2, 2, ...
## $ orientation  <dbl> 1, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1...
## $ race         <dbl> 30, 60, 10, 60, 60, 70, 60, 10, 10, 60, 60, 30, 6...
## $ voted        <dbl> 1, 2, 2, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2...
## $ married      <dbl> 2, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 3, 2...
## $ familysize   <dbl> 5, 2, 2, 2, 2, 3, 2, 1, 2, 2, 3, 2, 2, 3, 2, 3, 3...
## $ major        <chr> "Marketing ", "mathematics", "Chemistry", "intern...
count(mach_raw)
## # A tibble: 1 x 1
##       n
##   <int>
## 1 73489

Next let’s apply some data transformations such as computing the four subscales from Corral & Calvete (2000), calculating the total Machiavelliansim score and recoding some categorical variables. I also use the the countrycode package to convert the country for which the response was recorded into the continent. There’s a few other categorical variables we can recode but for now, I’ve only recoded key variables, e.g. gender, marital status etc.

There’s a few outliers for the age variable recorded by the respondents so I’ve simply excluded those who recorded their age >= 200.

# get names of item scores only
mach_items <- names(mach_raw) %>% str_subset(pattern = "^Q")
mach_q_items <- names(mach_raw) %>% str_subset(pattern = "(.*Q*A)")
mach_pos_items <- c("Q6A", "Q7A", "Q9A", "Q10A", "Q3A", "Q16A", "Q4A", "Q11A", "Q14A", "Q19A")

# get names of the Ten Item Personality Inventory
mach_tipi_items <- names(mach_raw) %>% str_subset(pattern = "(.*TIPI)")

# get names of predictor variables
mach_pred_names <- c("country","education","urban","gender","engnat","age","screenw","screenh","hand","religion","orientation","race","voted","married","familysize")

# filter only those items scores that are complete
# exclude "major" as this is freetext
# positive items need to be reversed
mach_df <- mach_raw %>% 
  mutate(Total.Mach.Score = Q1A + Q2A + Q3A + Q4A + Q5A + Q6A + Q7A + Q8A + Q9A + Q10A + Q11A + Q12A + Q13A + Q14A + Q15A + Q16A + Q17A + Q18A + Q19A + Q20A,
         NIT.Subscore = Q1A + Q15A + Q2A + Q12A,
         PIT.Subscore = Q6A + Q7A + Q9A + Q10A + Q3A + Q16A,
         CVHM.Subscore = Q5A + Q17A + Q13A + Q20A + Q8A + Q18A,
         PVHM.Subscore = Q4A + Q11A + Q14A + Q19A,
         High.Mach.Ind = ifelse(Total.Mach.Score >60, "Yes", "No"),
         education = dplyr::recode(education,
                                   `0` = "Unspecified", `1` = "Less than high school", `2` = "High school", `3` = "University degree", `4` = "Graduate degree"),
         gender = dplyr::recode(gender, 
                                `0` = "Unspecified", `1` = "Male", `2` = "Female", `3` = "Other"),
         orientation = dplyr::recode(orientation,
                                     `0` = "Unspecified", `1` = "Heterosexual", `2` = "Bisexual", `3` = "Homosexual", `4` = "Asexual", `5` = "Other"),
         married = dplyr::recode(married,
                                 `0` = "Unspecified", `1` = "Never married", `2` = "Currently married", `3` = "Previously married"),
         Continent = ifelse(country == "NONE" | is.na(country), "No Country Recorded",
                            countrycode::countrycode(country, origin = "iso2c", destination = "continent"))) %>% 
  tidyr::drop_na(., c(mach_items, mach_pred_names)) %>% 
  filter(age < 200) %>% 
  select(-major) 

Correlograms for visualising relationships

A correlogram is simply an image representing a correlation matrix. This can be created by using the ggstatsplot::ggcorrmat which will, by default, provide (1) the correlation coefficients; (2) a marker for statistical significance; and (3) the sample size. All these features are very convenient given that you don’t need to build it from scratch from ggplot2.

Below I combine purrr::map and ggstatsplot::ggcorrmat to run through each groups within the chosen variable (i.e. gender, marital status) and render a correlogram for a number of continuous variables. TIPI refers to the Ten Item Personality Inventory items that were asked as part of the online questionnaire. NIT is a subscore calculated from the MACH-IV and refers to Negative Interpersonal Tactics, PIT refers to Positive Interpersonal Tactics, CVHM refers to Cynical View of Human Nature and lastly, PVHM refers to Positive View of Human Nature.

Grouped by gender

It looks like that the TIPI7 (i.e. “Sympathetic, warm”) item exhibits generally a weak correlation, but the highest value, with the PIT.Subscore (e.g. includes items like “Honesty is the best policy in all cases.”) and is consistently across Male and Female respondents. While the correlation isn’t strong, it’s intuitive to expect that typically positive personality traits such as “sympathetic” and “warm” ones might be associated with higher endorsements of being honest towards others.

There’s no surprise that the Machiavellian-related subscores (e.g. NIT) and non-Machiavellian-related subscores (e.g. PIT) were negatively and moderately correlated suggesting only moderate discriminant validity. Gender, broadly, doesn’t appear to moderate the series of correlations reported in the plots.

# create a list of correlograms based on gender groups
# exclude the unspecified group
purrr::map(.x = unique(mach_df$gender) %>% .[.!="Unspecified"], ~ mach_df %>% 
             dplyr::filter(gender == .x)  %>% 
             select(mach_tipi_items, NIT.Subscore, PIT.Subscore, CVHM.Subscore, PVHM.Subscore, Total.Mach.Score) %>% 
             ggstatsplot::ggcorrmat(
               data = ., 
               cor.vars = TIPI1:Total.Mach.Score, # both the personality and MACH continuous variables
               matrix.type = "lower",
               title = .x,
               lab.size = 3
             ) +
             theme(legend.position = "right",
                   legend.text = element_text(size = 8),
                   plot.margin = grid::unit(c(0,0,0,0), "mm")))

Grouped by marital status

# create a list of correlograms based on marital status
# exclude the unspecified group
purrr::map(.x = unique(mach_df$married) %>% .[.!="Unspecified"], ~ mach_df %>% 
             dplyr::filter(married == .x)  %>% 
             select(mach_tipi_items, NIT.Subscore, PIT.Subscore, CVHM.Subscore, PVHM.Subscore, Total.Mach.Score) %>% 
             ggstatsplot::ggcorrmat(
               data = ., 
               cor.vars = TIPI1:Total.Mach.Score, # both the personality and MACH continuous variables
               matrix.type = "lower",
               title = .x,
               lab.size = 3
             ) +
             theme(legend.position = "right",
                   legend.text = element_text(size = 8),
                   plot.margin = grid::unit(c(0,0,0,0), "mm")))

Box/violin charts for between-group comparisons

The ggstatsplot::ggbetweenstats function allows us to provide group comparisons and report results from key statistical tests (e.g. ANOVA to see if group differences are statistically significant). The great thing about this is that the results are automatically reported in the title of the ggplot2 object. Other theme options can be modified too.

Both the boxplot and violin plot are added to display distribution of the values as well as the density. The mean score is denoted by the red dot for each continent.

I’ve added pairwise.comparisons to see if the differences between continents are statistically significant. You can simply turn them off by specifying this parameter as FALSE. It’s probably a good idea given how cluttered the following charts look with the pairwise comparisons included.

On average, respondents from Asia (14.93) and Africa (14.94) appeared to endorse higher Negative Interpersonal Tactics (NIT subscore) than the other continents with the respondents from Americas (13.27) and Oceania (13.47) with the lowest mean NIT subscores. The mean point difference between these groups appear quite minimal though.


# ANOVA and t-tests to measure differences between groups
# loop through the subscales and produce a boxplot+violin plot
purrr::map(.x = c("NIT.Subscore", "PIT.Subscore", "CVHM.Subscore", "PVHM.Subscore"), ~ mach_df %>% 
             dplyr::select(Continent, .x) %>% 
             ggstatsplot::ggbetweenstats(
               data = .,
               x = Continent,
               y = !!.x,
               plot.type = "boxviolin",
               messages = FALSE,
               ggtheme = ggplot2::theme_classic(),
               title = paste0(.x, " by Continent"),
               mean.plotting = TRUE,
               caption = "Source: Open Psychometrics - MACH-IV raw data",
               pairwise.comparisons = TRUE, # display results from pairwise comparisons
               pairwise.display = "significant" # only show significant results
             ) +
             theme(legend.position = "none",
                   axis.text.x = element_text(size = 8),
                   axis.title.x = element_text(size = 8),
                   axis.title.y = element_text(size = 8),
                   axis.text.y = element_text(size = 8),
                   plot.margin = grid::unit(c(0,0,0,0), "mm")))

Key Takeaways

I previously used the ggpubr package which is still contains excellent tools for producing publication-ready plots using the ggplot2 package but the ggstatsplot package appears to provide rich features for creating plots with crucial statistical information. There are several other functions in the package that could assist with suitable graphical representations - see https://indrajeetpatil.github.io/ggstatsplot/index.html.

Only weak correlations were identified when looking at the gender groups - there are plenty other variables to group the correlations by. However, those who identified more strongly as being sympathetic, warm demonstrated a higher rating of positive interpersonal tactics - albeit weak associations. Respondents who responded from a location in Africa or Asia strongly endorsed, on average, negative interpersonal tactics compared to those who responded from a location in Americas and Oceania. The between group differences appear to be minimal though.

References

Christie, R., & Geis, F. (1970). Studies in machiavellianism. Retrieved from https://books.google.com.au/books?id=NM1EAAAAIAAJ

Corral, S., & Calvete, E. (2000). Machiavellianism: Dimensionality of the mach iv and its relation to self-monitoring in a spanish sample. The Spanish Journal of Psychology, 3, 3–13.

Leary, M. R., & Hoyle, R. H. (2009). Handbook of individual differences in social behavior. Guilford Press.

Miller, B. K., Nicols, K., & Konopaske, R. (2019). Measurement invariance tests of revisions to archaically worded items in the mach iv scale. PloS One, 14(10).

Panitz, E. (1989). Psychometric investigation of the mach iv scale measuring machiavellianism. Psychological Reports, 64(3), 963–968.

Paulhus, D. L., & Williams, K. M. (2002). The dark triad of personality: Narcissism, machiavellianism, and psychopathy. Journal of Research in Personality, 36(6), 556–563.