How should I statistically analyze pre and post test Likert scale data? So I used a survey, where I had the participants answer 4 Likert-scale questions both before and after a presentation. Ended up with 7 participants total. Since I want to compare their responses pre and post, I had them enter in a 4-digit code before each survey.
I know my data is ordinal, so should I be using a paired Wilcoxon signed rank test?
Would I need to run a separate test for each of the questions, or is there a way to combine them with a test like this?
 A: @ChristianHenning comments "Not knowing what the questions are and the aim of your study, I don't know whether it makes sense to define a single score...." That is the crux of the matter.
Adding or averaging ordinal Likert scores to get an overall survey score is always controversial. However, in a later comment you mention several of the questions on the survey and I think averaging may be reasonable. You should look at several
of these scores to see if you feel average scores are
meaningful for your purposes.
Perhaps you are averaging Likert-5 scores for
the seven subjects, before and after the training.
If so, you might have Before b and After a average survey scores
as below.
b; a
[1] 0.4 3.1 2.8 3.4 1.8 3.0 1.0
[1] 0.9 3.9 3.1 4.5 3.5 3.9 2.0

In my fictitious data, every one of the seven
participants had a somewhat larger average score
After than Before. Also, as one would expect, there is a positive correlation in the scores.
cor(a, b)
[1] 0.9332438

On the scatterplot below, all seven points lie above the 45-degree line through the origin.
plot(b,a)
abline(0, 1, col="blue")


A paired Wilcoxon signed rank test in R (essentially a one-sample test on the seven
$b - a$ improvements) shows a significant improvement at the 2% level of significance
(The P-value $0.01563 < 0.02 = 2\%.$
wilcox.test(b, a, pair=T)

        Wilcoxon signed rank test

data:  b and a
V = 0, p-value = 0.01563
alternative hypothesis: 
 true location shift is not equal to 0

Of course, your real data may give different
results than the fictitious data I used for
this illustration.
Note: In case you are interested, my fictitious data were sampled in R
as shown below:
set.seed(2022)
b = round(4*rbeta(7, 1, 2),1)
i = round(2*rbeta(7, 1, 1),1)
a = b + i

