forked from anath703/UVA_BASKETBALL_STRESS
-
Notifications
You must be signed in to change notification settings - Fork 0
/
readiness_only.R
105 lines (82 loc) · 3.66 KB
/
readiness_only.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# Load libraries
library(lavaan)
library(semPlot)
library(lavaanPlot)
# Look at the dataset
Data<-read.csv('/Users/anoopnath/Desktop/MSDS/Capstone/stress_only.csv') #created in stress_only_data
# Define your model specification
model.specs <-'
# measurment model
physical_readiness =~ Physical_Performance_Capability + Overall_Recovery + Overall_Stress_Score+ Muscular_Stress_Score + Number_of_Sore_Areas
emotional_readiness=~ Mental_Performance_Capability + Hours_of_Sleep_Previous_Night+ Lack_of_Activation_Score + Negative_Emotional_State_Score+ Emotional_Balance
# residual correlations
Negative_Emotional_State_Score ~~ Emotional_Balance
Mental_Performance_Capability ~~ Emotional_Balance
Mental_Performance_Capability ~~ Negative_Emotional_State_Score
Lack_of_Activation_Score ~~ Negative_Emotional_State_Score
#Countermovement_Depth_cm ~~ Muscular_Stress_Score
Muscular_Stress_Score ~~ Number_of_Sore_Areas
Physical_Performance_Capability ~~ Mental_Performance_Capability
Overall_Stress_Score ~~ Muscular_Stress_Score
Overall_Recovery ~~ Mental_Performance_Capability
physical_readiness~~emotional_readiness
'
fit <-sem(model= model.specs, data = Data)
## ------------------------------------------
## merge factor scores to original data.frame
## and calculate percentiles
## ------------------------------------------
fscores <- lavPredict(fit)
idx <- lavInspect(fit, "case.idx")
## loop over factors to append factor scores to Data
for (fs in colnames(fscores)) {
Data[idx, fs] <- fscores[ , fs]
}
# Calculate the percentiles
physical_readiness_ecdf <- ecdf(Data$physical_readiness)
Data$physical_readiness_percentile <- physical_readiness_ecdf(Data$physical_readiness) * 100
emotional_readiness_ecdf <- ecdf(Data$emotional_readiness)
Data$emotional_readiness_percentile <- emotional_readiness_ecdf(Data$emotional_readiness) * 100
## ------------------------------------------
#fitMeasures(fit)
summary(fit, standardized = TRUE,
fit.measures= TRUE, rsquare= TRUE
)
#modificationindices(fit, sort= TRUE)
semPaths(object = fit, whatLabels = "std",
edge.label.cex = 1,
what = "std",
edge.color = "black")
lavaanPlot(model = fit,
edge_options = list(color = "grey"), coefs= TRUE, covs= TRUE, digits =3)
fitmeasures(fit, c('rmsea', 'srmr', 'cfi', 'rmsea.pvalue', 'aic' ))
##################Visualizations######################
# Load required libraries
library(ggplot2)
# Load the data (replace this line with your actual data loading method)
# Data <- read.csv("your_data_file.csv")
# Make sure the Date column is in the correct format
Data$Date <- as.Date(Data$Date)
# Function to plot readiness scores over time for a specific player
plot_readiness_scores <- function(player_id, data) {
# Filter data for the specific player
player_data <- data[data$Player_ID == player_id, ]
# Check if there's data for the player
if (nrow(player_data) == 0) {
cat("No data available for Player_ID:", player_id)
return(NULL)
}
# Create the plot
plot <- ggplot(player_data, aes(x = Date)) +
geom_line(aes(y = physical_readiness_percentile, color = "Physical Readiness")) +
geom_line(aes(y = emotional_readiness_percentile, color = "Emotional Readiness")) +
scale_color_manual(values = c("Physical Readiness" = "blue", "Emotional Readiness" = "red")) +
labs(title = paste("Readiness Scores for Player", player_id),
x = "Date",
y = "Readiness Percentile",
color = "Readiness Type") +
theme_minimal()
return(plot)
}
# Plot the readiness scores for a specific player (replace with desired Player_ID)
plot_readiness_scores(110, Data)