13 Workshop 16: Correlations
13.1 Exercise One
Packages and Import Data
13.2 Exercise Two
Prepare Data
# Next, we need to tell R which variables are continuous (as.numeric) and which are categorical (as.factor).
# You can check the names of the variables with this...
names(mydata)
mydata$p_num <- as.numeric(mydata$p_num)
mydata$optimism <- as.numeric(mydata$optimism)
mydata$positive_SC <- as.numeric(mydata$positive_SC)
mydata$negative_SC <- as.numeric(mydata$negative_SC)
mydata$age_years <- as.numeric(mydata$age_years)
mydata$extra_curr <- as.factor(mydata$extra_curr)
mydata$reading_age <- as.numeric(mydata$reading_age)Descriptive Statistics
# Before getting into correlations, we might want a summary of our variables. For the continuous variables, we get descriptives. For the categorical/binary variables, we get frequencies.
summary(mydata)
# If we want to see the descriptives split for different groups, for example, we want to see the descriptives for optimism for extracurricular activities status separately..
descriptives_bygroup <- mydata %>% # Tell R which data set to use. %>% means "and then" so tells R to move on and do something else
group_by(extra_curr) %>% # group_by is telling R to split the data file - put the variable to split by in brackets
summarise(mean_optimism = mean(optimism), sd_optimism = sd(optimism)) # Ask for the mean and standard deviation. statistic_calculated = statistic(variable)
# You then need R to "print" - or display - the calculated descriptives in the console window.
print(descriptives_bygroup)13.3 Exercise Three
Run and interpret Pearson’s correlations (zero order correlations)
# Now we can look at the correlations between these four continuous variables - but we want to mainly focus on the correlations with optimism - our main variable of interest.
mydata %>%
dplyr::select(optimism, positive_SC, negative_SC, age_years) %>%
correlation(p_adjust = "none")
# In addition to giving you the r and p values, it gives the N, so check that this is correct. To write up the correlation, remember that df = N-2.13.4 Exercise Four
Creating scatterplots with lines of best fit
# First, let's graph the correlations between "optimism" with life, and the three other continuous variables. You won't see them until after you make them and then ask R to display them. We will make four scatterplots...
# Optimism and positive self compassion
plot1 <- ggplot(mydata, aes(x = positive_SC, y = optimism)) +
geom_point() +
geom_smooth(method = "lm",
se = FALSE) +
theme_classic()
# Optimism and negative self compassion
plot2 <- ggplot(mydata, aes(x = negative_SC, y = optimism)) +
geom_point() +
geom_smooth(method = "lm",
se = FALSE) +
theme_classic()
# Optimism and age in years
plot3 <- ggplot(mydata, aes(x = age_years, y = optimism)) +
geom_point() +
geom_smooth(method = "lm",
se = FALSE) +
theme_classic()
# To see what the plots look like, we need to arrange them in the "Plot" window. Make sure "gridextra" is ticked in the "Packages" window
grid.arrange(plot1, plot2, plot3, ncol = 3)
# ncol = 3 tells R to put three next to each other13.5 Exercise Five
Run and interpret partial correlations
# Next, let's look at partial correlations, so the three main correlations of interest we just ran, but now controlling for reading age.
# You need to have one set of code for each partial correlation, and make sure "ppcor" is ticked in the "Packages" window.
pcor.test(mydata$optimism, mydata$positive_SC,
mydata$reading_age,
method = "pearson")
pcor.test(mydata$optimism, mydata$negative_SC,
mydata$reading_age,
method = "pearson")
pcor.test(mydata$optimism, mydata$age_years,
mydata$reading_age,
method = "pearson")13.6 Exercise Six
Statistically comparing correlations
# Final thing is comparing correlations across different groups. For example, is the correlation between satisfaction with life and negative life experiences different when comparing people who are single or in a relationship?
# First, we need to tell R which subgroups within our dataset we want to look at - so identify 0 and 1 from the "relationship" variable, and name each one.
None <- mydata[mydata$extra_curr == "0", ]
Activities <- mydata[mydata$extra_curr == "1", ]
# Now we run the two correlations - we need to tell R first which subgroup to use from the naming we just did, and which continuous variable to correlate.
cor.test(None$optimism, None$positive_SC,
method = "pearson")
cor.test(Activities$optimism, Activities$positive_SC,
method = "pearson")
# To compare the correlations statistically, we need the N and the r for each group. The r value is the final value in the output we just created - the final line, under corr.
# To get the N for each group, we ran the "summary" earlier, but you can do it again to save scrolling.
summary(mydata)
# Now we can statistically compare our r values. Make a note of which group you consider to be "1" and which is "2". For this, it will be 1 is single and 2 is in a relationship.
# First, make sure "cocor" is ticked in the "Packages" tab.
# r1 is the first r-value, in this case 0.2009678
# r2 is the second r-value, in this case 0.6345603
# n1 is the first sample size, in this case 73
# n2 is the second sample size, in this case 77
# the code looks like this, so just replace the values as needed... cocor.indep.groups(r1, r2, n1, n2)
cocor.indep.groups(0.2009678, 0.6345603, 73, 77)
# Final thing to do - graph these two correlations on the same plot to aid interpretation.
plot_cc <- ggplot(mydata, aes(x = positive_SC, y = optimism, colour = extra_curr)) +
geom_point(aes(shape = extra_curr)) +
geom_smooth(aes(linetype = extra_curr), method = "lm", se = FALSE) +
labs(title = "Positive self compassion vs Optimism by Extra curricular activities",
x = "Positive self compassion",
y = "Optimism") +
theme_classic() +
scale_color_manual(values = c("0" = "grey", "1" = "black ")) +
scale_linetype_manual(values = c("0" = "solid", "1" = "dashed")) +
scale_shape_manual(values = c("0" = 16, "1" = 3))
print(plot_cc)
# WORKSHOP FINISHED - YAY!!!Well Done. You have reached the end of the workshop