Convert a non-standardized test data into a standard report for every student taking test of similar difficulty more than once Context :

Suppose that there are 5 sets of exams being conducted, each for the
same purpose. Since they are being conducted over a period of 5 days,
the papers are different but a student can appear at most once. The
number of students appearing on each day is different and so is the
difficulty of the paper depending on the student.

Questions :

*

*Given the test reports of every student, how would you scale the scores (ie, generate the test report of each student) as if every student is writes the same question paper?


*Now suppose a subset (possibly improper) of these students take the test (which is conducted over a period of 5 days and has the "same" difficulty but a student can appear at most once) again. Given their test reports, how would you find the score of each student if we were to consider his/her best score in the two tests (upon proper scaling) and generate a single final test report?
In [2] above, the best score possibly also requires a proper scaling. I am essentially trying to see how we can solve [2]. But that requires us to solve [1] and this is precisely why it looks like a 2-part question (which is against the rules of Stack, if I am not mistaken). I am trying to use the non-standardized test data for a very large (hypothetically, so the misc. dependence factors are reduced) pool of students from the same place into a standardized report for every student.
 A: First, determine if there is a significant difference between exams.  Fit a Generalized Linear Model (GLM) with an appropriate link function $g$ for your exam.  Perhaps this is a Beta regression problem if the scores are on the 0-100% scale.
$$g(Y_i) = \beta_0 + \beta_1 x_i + \epsilon_i$$
where $x_i$ is a categorical variable for the exam (so it is really four variables)
Second, if the overall Likliehood Ratio Test for the model is significant, then there are at least two exams that are different.
Third, if there is a significant exam effect, then scale the exams by the mean exam score for that group so that the mean translates to a particular target score (80%).
Something like this in R:
set.seed(123454)
# number of students
N <- 100
# randomly select a test
x <- sample(c("A","B","C","D","E"), size = N, replace = TRUE)
# randomly create a score for each student
y <- ifelse(x == "A", rbeta(N, 3, 2), ifelse(
  x == "B", rbeta(N, 4, 2), ifelse(
    x == "C", rbeta(N, 5, 2), ifelse(
      x == "D", rbeta(N, 6, 2), ifelse(
        x == "E", rbeta(N, 7, 2), NA)
      )
    )
  )
)

hist(y, breaks = 10)

# fit a simple quasibinomial model with a logit link
#   better to do a beta regression here, but quasibinomial is illustrative
lm1 <- glm(y ~ x, family = quasibinomial(link = "logit"))
lm2 <- glm(y ~ 1, family = quasibinomial(link = "logit"))

anova(lm1, lm2, test = "LRT")

# therefore there are at least two exams that are different

# now scale
mean_values <- by(y, x, mean)
target_mean <- 0.8

# one method of normalizing so that no one goes over 100%
new_scores <- 1 - c((1-y) / (1-mean_values[x]) * (1-target_mean))
mean(new_scores)
by(new_scores, x, mean)
hist(new_scores, breaks = 10)

```

