Replace “Your Name” with your actual name.
Please complete this exam on your own. Include your R code, interpretations, and answers within this document.
Read Chapter 2 (Types of Data Psychologists Collect) and answer the following:
Nominal are categories without any order, an example is types of flavors: vanilla, chocolate, orange. Ordinal is categories with order, but unequal spacing, an example is” strongly agree to strongly disagree. Interval is numbers with spacinf but not zero, an example is SAT scores. Ratio is values with equal spacing and zero, example is time in milliseconds.
Scores on a depression inventory: Interval. Response time in milliseconds: Ratio. Likert scale of agreement: Ordinal. Diagnostic categories: Nominal. Age in years: Ratio.
Referring to Chapter 3 (Measurement Errors in Psychological Research):
Random error is unpredictable changes in measurement, example is a participant gets distracted during a memory experiment. Systematic error is a bias in measurement is a broken timer may underestimate reaction time in a memory test.
The measurement error affects the validity of a study of the relationship between stress and academic performance because your results will be messed up, therefore leading to it being inaccurate. To minimize these errors researchers could use reliable tools, increase sample size, and repeat experiments to validate results.
The code below creates a simulated dataset for a psychological experiment. Run the below code chunk without making any changes:
# Create a simulated dataset
set.seed(123) # For reproducibility
# Number of participants
n <- 50
# Create the data frame
data <- data.frame(
participant_id = 1:n,
reaction_time = rnorm(n, mean = 300, sd = 50),
accuracy = rnorm(n, mean = 85, sd = 10),
gender = sample(c("Male", "Female"), n, replace = TRUE),
condition = sample(c("Control", "Experimental"), n, replace = TRUE),
anxiety_pre = rnorm(n, mean = 25, sd = 8),
anxiety_post = NA # We'll fill this in based on condition
)
# Make the experimental condition reduce anxiety more than control
data$anxiety_post <- ifelse(
data$condition == "Experimental",
data$anxiety_pre - rnorm(n, mean = 8, sd = 3), # Larger reduction
data$anxiety_pre - rnorm(n, mean = 3, sd = 2) # Smaller reduction
)
# Ensure anxiety doesn't go below 0
data$anxiety_post <- pmax(data$anxiety_post, 0)
# Add some missing values for realism
data$reaction_time[sample(1:n, 3)] <- NA
data$accuracy[sample(1:n, 2)] <- NA
# View the first few rows of the dataset
head(data)
## participant_id reaction_time accuracy gender condition anxiety_pre
## 1 1 271.9762 87.53319 Female Control 31.30191
## 2 2 288.4911 84.71453 Female Experimental 31.15234
## 3 3 377.9354 84.57130 Female Experimental 27.65762
## 4 4 303.5254 98.68602 Male Control 16.93299
## 5 5 306.4644 82.74229 Female Control 24.04438
## 6 6 385.7532 100.16471 Female Control 22.75684
## anxiety_post
## 1 29.05312
## 2 19.21510
## 3 20.45306
## 4 13.75199
## 5 17.84736
## 6 19.93397
Now, perform the following computations*:
library(psych)
# Calculate descriptive statistics for reaction_time grouped by condition
describeBy(data$reaction_time, data$condition, mat = TRUE, digits = 2)
## item group1 vars n mean sd median trimmed mad min max
## X11 1 Control 1 30 301.40 48.54 299.68 300.42 55.38 201.67 408.45
## X12 2 Experimental 1 17 295.75 38.37 288.49 295.61 43.74 215.67 377.94
## range skew kurtosis se
## X11 206.78 0.14 -0.66 8.86
## X12 162.27 0.00 -0.27 9.31
# Calculate descriptive statistics for accuracy grouped by condition
describeBy(data$accuracy, data$condition, mat = TRUE, digits = 2)
## item group1 vars n mean sd median trimmed mad min max range
## X11 1 Control 1 29 85.49 9.86 85.53 85.68 8.77 61.91 105.50 43.59
## X12 2 Experimental 1 19 88.06 8.20 88.32 87.76 9.86 74.28 106.87 32.59
## skew kurtosis se
## X11 -0.15 -0.35 1.83
## X12 0.45 -0.45 1.88
anxiety_change
that represents the difference between pre
and post anxiety scores (pre minus post). Then calculate the mean
anxiety change for each condition.library(dplyr)
# Create a new variable for anxiety change
data <- data %>%
mutate(anxiety_change = anxiety_pre - anxiety_post)
# Calculate mean anxiety change
data %>%
group_by(condition) %>%
summarise(mean_anxiety_change = mean(anxiety_change, na.rm = TRUE))
## # A tibble: 2 × 2
## condition mean_anxiety_change
## <chr> <dbl>
## 1 Control 3.79
## 2 Experimental 8.64
The mean anxiety for the control group is 3.79. The mean anxiety for the experimental group is 8.64
Using the concepts from Chapter 4 (Descriptive Statistics and Basic Probability in Psychological Research):
mean_rt <- 350
sd_rt <- 75
# (a) Probability of reaction time > 450ms
p_greater_450 <- 1 - pnorm(450, mean = mean_rt, sd = sd_rt)
# (b) Probability of reaction time between 300ms and 400ms
p_between_300_400 <- pnorm(400, mean = mean_rt, sd = sd_rt) - pnorm(300, mean = mean_rt, sd = sd_rt)
p_greater_450
## [1] 0.09121122
## [1] 0.4950149
A) The probability that a randomly selected student will have a raction time greater than 450ms is 0.09. B) the probability that a participant will have a reaction time between 300ms and 400ms is 0.49.
Using the dataset created in Part 2, perform the following data cleaning and manipulation tasks:
clean_data
.performance_category
that
categorizes participants based on their accuracy:
# Your code here```
library(dplyr)
# Calculate the overall mean reaction time
mean_reaction_time <- mean(clean_data$reaction_time, na.rm = TRUE)
# Filter the dataset
filtered_data <- clean_data %>%
filter(condition == "Experimental" & reaction_time < mean_reaction_time)
# Your code here```{r filter-participants, error = TRUE, message = FALSE, warning = FALSE}
library(dplyr)
# Calculate the overall mean reaction time
mean_reaction_time <- mean(clean_data$reaction_time, na.rm = TRUE)
# Filter the dataset
filtered_data <- clean_data %>%
filter(condition == "Experimental" & reaction_time < mean_reaction_time)
First, I removed rows that had missing values, which created a new dataset called clean_data. Then I created a new variable called performance_category which classified participants based on their accuracy. 90 or above accuracy was high, between 70 and 90 was participants with medium accuracy and 70 was participants with low accuracy. Last I filtered the dataset to include only participants in the experimental who had a faster reaction time than the mean.
Using the psych package, create a correlation plot for the simulated dataset created in Part 2. Include the following steps:
corPlot()
function to create a correlation plot.# Your code here. Hint: first, with dplyr create a new dataset that selects only the numeric variable (reaction_time, accuracy, anxiety_pre, anxiety_post, and anxiety_change if you created it).
library(dplyr)
library(psych)
numeric_data <- clean_data %>%
select(reaction_time, accuracy, anxiety_pre, anxiety_post, anxiety_change)
# Create a correlation plot
corPlot(cor(numeric_data, use = "pairwise.complete.obs"),
numbers = TRUE, # Display correlation values
upper = FALSE, # Show only lower triangle
main = "Correlation Plot of Key Variables")
## Error in plot.new(): figure margins too large
There is a strong correlation between anziety_pre and anxiety_post. Another strong correlation is between anxiety_change and anxiety_pre. A suprising relationship is between reaction time and accuracy. These correlations can inform further research in psychology since anxiety negatively affects performance. Future studies can explore ways to reduce anxiety in high pressure situations.
Reflect on how the statistical concepts and R techniques covered in this course apply to psychological research:
Describe a specific research question in psychology that interests you. What type of data would you collect, what statistical analyses would be appropriate, and what potential measurement errors might you need to address?
How has learning R for data analysis changed your understanding of psychological statistics? What do you see as the biggest advantages and challenges of using R compared to other statistical software?
1) How does social media usage affect anxiety levels in teenagers? To study this, I would collect data on daily screen time on social media as well as self reports on their anxiety levels using surveys. I would use correlation tests to see if more social media use is linked with higher anxiety. I could use regression analysis. A potential measurement error I may need to address could come from self reported data from the surveys. People may under or overestimate their anxiety levels or hours of screen time. 2) Learning R for data analysis changed my understanding of psychological statistics because I can see how useful it is for this topic. The biggest advantage of R is that is free and widely accsesible, and it has tools for visualizing collected data. The biggest challenge would be learning coding for those that are new to it.
Ensure to knit your document to HTML format, checking that all content is correctly displayed before submission. Publish your assignment to RPubs and submit the URL to canvas.