I have data that given me both a user's score for a test, along with the high, average, and low across the class for every test. How would I estimate the user's percentile with this data?
We know that the students in the class do not change from test to test and every test for this class is in the data below.
I was thinking I would do something along the lines of calculating z-score first, but am unable to actually substantiate how to do this.
I asked a similar question before, but the answerer suggested I reask with data. I would highly recommend a look at that answer for a more detailed approach, however I try to summarize to the best of my understanding:
In order to calculate the z-score, we must first estimate $\sigma$. To do this, we use the function $\sigma = \frac{\max - > \min}{-10.07i^{-0.1376}+10.35}$, where I is the number of tests. We may then proceed by the z-score formula ($\frac{x-\mu}{\sigma}$, where x is usr_score) to find the z-score. However, I'm confused as to how I would turn the z-score given by the above formula to the percentile value. For example, if I were to be given $i=7$, $x=157$, $\max=157$, $\min=103.7$, and $\mu=145.3$, I would get $\sigma \approx 20.147355$ and $z \approx 0.5807$. However, this does not make sense, as that means that the max possible score is still within one standard deviation of the mean.
Some example data:
+-----------+------------+------------+------------+------------+--------+
| test_name | usr_score | max | avg | min | 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 percentile of the user, but am unsure how to do that.
Using the above method of calculating z-score, we get $\mu \approx 19.91362$ and $z \approx 0.075325$ although I have no way of verifying the values. It does, however pass the eye test (given multiple sets of data (many people in different classes) the z-scores look like they are in the correct order when sorted).
Also I am a stat noob programmer, so sorry if this question is trivial.
spline(y= c(0,0.5,1), x=c(102.107,134.1,151.5), xout=135.6)$y
). And this would omit the need for a $\hat{\sigma}$ estimate altogether. :) Also given your comment of "z-scores look like they are in the correct order when sorted" why not just rank all users and then assign the percentiles accordingly? $\endgroup$