I'm working on a customer satisfaction survey consisting of five questions: customer support, product quality, website user-friendliness, pricing, and delivery times. Each question's scored 1 (worst score) to 5 (best score).
Usually the analysis's done by applying weights to calculate an index score: customer support*0.7, product quality*0.7, website user-friendliness*0.8, pricing*0.9, and delivery times*0.6.
So for a rating of 3 (customer support), 3 (product quality), 4 (website user-friendliness), 5 (pricing) and 3 (delivery times), you get an index score of (3*0.7)+(3*0.7)+(4*0.8)+(5*0.9)+(3*0.6)=13.7.
Customers buying a subscription service complete the survey twice, at the time of the initial purchase as well as at a six month follow-up. The index scores from both time points are used in a linear regression model along with other variables like the age of the customer and what product they purchased to see what the predictors are of follow up overall customer satisfaction, ie:
lm(index_score_follow_up ~ index_score_initial_purchase + product_purchased + age_of_customer, data=df)
What I'd like to do now is to break it down and explore the relationships between the questions that make up the index scores. My concern's that maybe there's a specific problem with eg delivery times, either at the time of the initial purchase or at follow-up, and that an annoyed customer then goes on rating certain other questions lower at one or both time points than they otherwise would have.
What's best practice for something like this? I've been thinking about a network graph, although it doesn't seem to allow me to control for categorical variables the way I could in a regression model:
# For this MWE I used the big5 data set (because I couldn't think of a better one), subsetting two of the big5 groups to represent the two time points of my survey. library("qgraph") # load package data(big5) # load data frame data(big5groups) # load list of groups for data frame big5groups_sub <- big5groups[1:2] # subset two of the groups from the list # Correlations: Q <- qgraph(cor(big5), minimum = 0.25, cut = 0.4, vsize = 1.5, groups = big5groups_sub, legend = TRUE, borders = FALSE) title("Big 2 correlations", line = 2.5)
Any help would be much appreciated!