6
$\begingroup$

Given a series of tests, where we are given one users score, the overall minimum, the overall maximum, and the overall average, how would I estimate the user's z-score on total score (ie. sum of all of the users tests scores compared to the average sum of all test taker's test scores)?

We cannot assume that the lowest scoring person from one test was the lowest scoring in the next test, but I think it is fair to assume that people generally stay within some score bands (although if this can be done without that assumption, that would be better). We can also assume that the group of test takers is the same from test to test.

My intuition tells me that this seems to be some sort of application of Monte Carlo methods, but I can't seem to figure out how to actually do this.

Some example data:

+-----------+------------+------------+------------+------------+--------+
| test_name | usr_score  |    high    |    avg     |    low     | weight |
+-----------+------------+------------+------------+------------+--------+
| Test_1    | 0.94615385 | 1          | 0.92307692 | 0.65384615 |     26 |
| Test_2    | 0.71621622 | 0.95945946 | 0.79459459 | 0.74074074 |     37 |
| Test_3    | 1          | 1          | 0.92222222 | 0.7037037  |     27 |
| Test_4    | 0.85135135 | 0.97297297 | 0.85675676 | 0.66756757 |     37 |
| Test_5    | 0.83333333 | 1          | 0.76666667 | 0          |      6 |
| Test_6    | 1          | 1          | 0.92857143 | 0.66666667 |     21 |
+-----------+------------+------------+------------+------------+--------+

Given this data, we know the user's total score is 135.6 (usr_score $*$ weight). Similarly, the average score is 134.1, the maximum score one test-taker may have is 151.6, and the minimum score one test-taker may have is 102.1, although it is unlikely that one person has either the minimum or maximum score as one person probably didn't always score the best/worst. I'd like to calculate the z-score of the 134.1, but am unsure as to how to do that without the standard deviation.

$\endgroup$
  • 1
    $\begingroup$ Do the same group of users take every test? And for a given a user, do we have their score on every test? $\endgroup$ – norvia May 17 at 22:30
  • 1
    $\begingroup$ @norvia Yes, we can assume that the same group of users take all the tests and we have a given user's score for all tests $\endgroup$ – qag54938bcaoo May 17 at 22:34
4
$\begingroup$

Suppose there are 100 students in all and that test scores are normal. Then the range $W$ of scores has $E(W) \approx 5\sigma,$ where $\sigma$ is the population standard deviation of scores.

I estimated this mean from a simulation in R, as shown below. [In R, range returns min and max, so one needs diff to get the actual range.]

w = replicate(10^5, diff(range(rnorm(100))))
mean(w)
[1] 5.015726

So it might be reasonable to assume that individual students have a standard deviation that is about $1/5$ of the range of the 100 students.

Group size matters in such approximations. If the group/class has only about 30 students, then 4 is a better divisor than 5.

w = replicate(10^5, diff(range(rnorm(30))))
mean(w)
[1] 4.083182

This method probably wouldn't work well for tests where the best students have scores that are close to the maximum possible score. Then the SD of best students might be much smaller than is typical of the population.

Your response to @norvia's question leads me to believe you might have data that would permit a regression approach. If so, you might regress SD on range (max - min) and average scores across the whole group and see if that helps to predict SD for an individual student in the group from his/her average.

If you're trying to get an individual's SD from the range of only $4$ tests during the term, then divide the range by $2.$

w = replicate(10^5, diff(range(rnorm(4))))
mean(w)
[1] 2.059537

For very small normal samples, $S$ is well estimated as a fraction of $W.$

enter image description here

| cite | improve this answer | |
$\endgroup$
  • 1
    $\begingroup$ So to clarify, I can find SD by doing $\frac{max-min}{\sim w}$, given the assumption that not many people score close to maximum. Why would this change the SD if people score close to the maximum? My intuition is that it would only change the SD if there are too many people scoring too high. I'm also confused as to how I would do the regression approach you mentioned. Would you mind expanding slightly? Lastly, is the value in rnorm() the number of tests or the number of students? It seems to switch in the 2 examles given. $\endgroup$ – qag54938bcaoo May 18 at 2:01
  • 1
    $\begingroup$ Would we also not include the average to determine if it is a normal distribution or skewed either way? This method seems prone to failure given outliers that may occur, especially in small "class" size. $\endgroup$ – qag54938bcaoo May 18 at 2:04
  • 1
    $\begingroup$ Suppose $\sigma \approx 15.$ If the highest possible score is 100 and good students tend to average 92, then they might get scores as low as $\mu - \sigma = 77$ with probability about .32, but they can't score as high as $\mu + \sigma > 100.$ // In R, rnorm samples from a normal distribution (standard normal if no other parameters are supplied), The argument is the number of samples to take. All normal dist'ns act alike as to the ratio btw SD and range, so I used std norm for simplicity. For gps of 100 and 30, I used rnorm(100) and rnorm(30), but 1 student w/ 4 tests I used rnorm(4). $\endgroup$ – BruceET May 18 at 4:02
  • 1
    $\begingroup$ I recently gave an Answer to another question showing the basics of regression. You might have two predictor variables (range and avg) to predict SD, but links from that pg are pretty good. // I haven't seen your data, and have just a vague clue from your answ to @norvia's question. So I don't know for sure regression would work. If you have some data to show, maybe that's a topic for another Q&A. $\endgroup$ – BruceET May 18 at 4:10
  • 1
    $\begingroup$ So if we have a lot of students near the top, would we be able to initially assume that we can have scores $>100$ and then change all the scores that are $>100$ to $100$, circumventing the problem of scores too close to 100? // My data is literally a spreadsheet of results from 1 user in the format Test 1,90,100,80,60 where csv headers are test_name,usr_score,high,avg,low. // Given that the $w$ value changes for various student sizes, I ran a little bit of regression and came up with a formula $w=2.4 \log_{30} (10.5x)$. Can this be used instead of the built in values given above? $\endgroup$ – qag54938bcaoo May 18 at 5:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.