Complete R Code
#import dataframe
personality_df <- read.delim("~/Design of Experiments/data.csv")
#delete unapplicable columns from dataframe. Leave only extroversion score columns and factors
extro <- subset(personality_df, select = -c(race, source, country, N1:O10))
#make sure it worked
str(extro_df)
#define new vector to represent total extroversion score
Escore <- c(20 + extro$E1 - extro$E2 + extro$E3 - extro$E4 + extro$E5 - extro$E6 + extro$E7 - extro$E8 + extro$E9 - extro$E10)
#verify it worked
Escore[1]
#add extroversion total score as column to dataframe
extro$E_Total <- Escore
#check to see column was added
head(extro)
#clean data by extracting rows with impossible values
clean_extro <- subset(extro, age <= 122)
clean_extro <- subset(clean_extro, gender > 0)
clean_extro <- subset(clean_extro, hand >0)
clean_extro <- subset(clean_extro, engnat >0)
#group age in 6 levels. change variable type from character to factor
clean_extro$age <- replace(clean_extro$age, clean_extro$age < 20, "<20")
clean_extro$age <- replace(clean_extro$age, clean_extro$age >= 20 & clean_extro$age < 30, "20-29")
clean_extro$age <- replace(clean_extro$age, clean_extro$age >= 30 & clean_extro$age < 40, "30-39")
clean_extro$age <- replace(clean_extro$age, clean_extro$age >= 40 & clean_extro$age < 50, "40-49")
clean_extro$age <- replace(clean_extro$age, clean_extro$age >= 50 & clean_extro$age < 60, "50-59" )
clean_extro$age <- replace(clean_extro$age, clean_extro$age >= 60 | clean_extro$age ==100 | clean_extro$age ==118, "60<=")
clean_extro$age <- as.factor(clean_extro$age)
#check structure of data
str(clean_extro)
#display summary statistics
summary(clean_extro)
#graphical analysis
#histogram
hist(clean_extro$E_Total, main = "Extroversion Score", xlab = "Score")
#boxplots of 4 factors
boxplot(clean_extro$E_Total ~ clean_extro$age, main = "Extroversion response to Age", ylab = "Extroversion Score", xlab = "Age")
boxplot(clean_extro$E_Total ~ clean_extro$gender, main = "Extroversion response to Gender", ylab = "Extroversion Score", xlab = "Gender", names = c("Male", "Female", "Other"))
boxplot(clean_extro$E_Total ~ clean_extro$hand, main = "Extroversion response to Dominate Hand", ylab = "Extroversion Score", xlab = "Dominate Hand", names = c("Right", "Left", "Both"))
boxplot(clean_extro$E_Total ~ clean_extro$engnat, main = "Extroversion response to Native English Speaker", ylab = "Extroversion Score", xlab = "Native English Speakder", names = c("Yes", "No"))
#one factor anova tests
summary(aov(clean_extro$E_Total ~ clean_extro$age))
summary(aov(clean_extro$E_Total ~ clean_extro$gender))
summary(aov(clean_extro$E_Total ~ clean_extro$hand))
summary(aov(clean_extro$E_Total ~ clean_extro$engnat))
#two factor anova tests and interaction plots
#age and gender
summary(aov(clean_extro$E_Total ~ clean_extro$age*clean_extro$gender))
interaction.plot(clean_extro$age, clean_extro$gender, clean_extro$E_Total, xlab = "Age", ylab = "Extroversion Score", trace.label = "Gender")
#age and hand dominance
summary(aov(clean_extro$E_Total ~ clean_extro$age*clean_extro$hand))
interaction.plot(clean_extro$age, clean_extro$hand, clean_extro$E_Total, xlab = "Age", ylab = "Extroversion Score", trace.label = "Hand")
#age and native english speaker
summary(aov(clean_extro$E_Total ~ clean_extro$age*clean_extro$engnat))
interaction.plot(clean_extro$age, clean_extro$engnat, clean_extro$E_Total, xlab = "Age", ylab = "Extroversion Score", trace.label = "Native English Speaker")
#gender and hand dominance
summary(aov(clean_extro$E_Total ~ clean_extro$gender*clean_extro$hand))
interaction.plot(clean_extro$gender, clean_extro$hand, clean_extro$E_Total, xlab = "Gender", ylab = "Extroversion Score", trace.label = "Dominate Hand")
#gender and native english speaker
summary(aov(clean_extro$E_Total ~ clean_extro$gender*clean_extro$engnat))
interaction.plot(clean_extro$gender, clean_extro$engnat, clean_extro$E_Total, xlab = "Gender", ylab = "Extroversion Score", trace.label = "Native English Speaker")
#hand dominance and native english speaker
summary(aov(clean_extro$E_Total ~ clean_extro$hand*clean_extro$engnat))
interaction.plot(clean_extro$hand, clean_extro$engnat, clean_extro$E_Total, xlab = "Dominate Hand", ylab = "Extroversion Score", trace.label = "Native English Speaker")