I'm quite new here so please excuse me if this isn't a suitable question.

I'm developing a site for students to allow them to upload their virtual transcripts (grade report) to our site and allow us to do various manipulations (add an upcoming assignment, drop an assignment, etc.) so we have a large amount of information of students across our school (many gigabytes of data). I was wondering what kind of statistical analysis I can do upon that information. Is there a more popular application of statistics for something like this that I can look at? (Stocks? etc...)

Here's a quick overview of what kind of information I have on hand:

  • Assignment Earned Points/Assignment Possible Points
  • Category of each assignment
  • Weight of each category.
  • Names of Assignments, Class, Teacher
  • Current Letter and Numeric Grade in the class.

We then calculate category totals, and create a grade history based on their assignment history and class weight settings.

We hope to do simple things like getting the average and standard deviation of the scores of an assignment. Then we'll display a user's average and percentile (calculated from average/standard deviation, we're assuming normal distribution but this is a bad assumption...) of the data. (But I think a confidence interval instead of a mean would be more appropriate, but we'll complete that implementation at a later date). We have a minimum cutoff currently at 5 to ensure users can't just estimate what another specific user is getting but to also ensure that the data is somewhat statistically valid. Is there a better way of determining a cutoff for the data? What are some other neat things we can do with this data? I feel like we're barely scraping the surface and hope that there's some things that we can't think of that would be useful for a student to look at.

Another problem: the data isn't always fresh, we only get data as they upload it and some users update more frequently than others. However, we wish to create a history graph that depicts the class's average grade history. We store data every time the user updates on what grade they have in each class at the time of the update. But, it's hard to determine what constitutes as a class average given outdated and incomplete data. I was thinking of using a weighted average, where we take the last grade a student has updated up to a point X, then weight that point in the average depending on how many points were factored into that score. So if a student who updated when the gradebook only had 100 points in it will not be as important as a student who recently updated with 1500 points in the grade book. Is there a better approach to this?

I have an introductory understand to statistics (AP Statistics which should be equivalent to a first year into stats course in college). But I've forgotten most of it so it would help if you guys could simplify things a bit for me as well. Oh and I'm programming this through PHP. I'm using the MySQL stddev() and avg() functions to calculate standard deviation and average. I have a T-Score list @ 90% confidence for 1-200 df and an inverse normal function. I also have a 2-pass standard deviation and mean function written in PHP as well.

Edit 1: I'm targeting this website towards high school students.

Edit 2: Here is what we have so far: Mock up of what we have so far


2 Answers 2


If I may make some suggestions:

  • I would not implement a confidence interval because most students don't really understand what it is anyway. An inter-quartile range would be more appropriate instead

  • Most(?) professors cook their grades to have a normal distribution, so the presence of the normal distribution should not surprise you

  • Other things that could be useful for students using the system is a calculator that will tell them what grades they need on the remaining assignments and tests to obtain a desired final grade

  • In the grade history aspect, you might want to include reference to the number of people in the class and such basic points of reference like their major, their pre-requisites grades, etc. (I'm assuming here that you want to create a grade history for each time the course is taken, not just a grade history for assignment x versus assignment y.)

  • The raw scores versus curved scores should also be interesting to see, however it doesn't seem like you would have access to that information.

Edited to add comment on fairness of displaying data with few reports:

If you don't know the class population ahead of time, you could (I assume) mention to the user that the percentile is based on x students reporting and that the answer will not be final until all students report.

The mechanism of the system you're describing seems odd to me, though. From my experience as a student, the professor publishes the distribution of grades and you as a student can see approximately where you fall. To have a system where it's the students who are doing the completely voluntary reporting of their grades risks misuse. If it's voluntary you can't make people participate and moreover you can't make them tell the truth of the actual grade they received. This is more a school policy thing though, which isn't really your problem.

  • $\begingroup$ Thank you for the suggestions! However, I forgot to mention that I'm creating this site for a high school site, so some of the points might not be valid such as we won't have majors, and that high school teachers usually don't care about normal distribution (unlike college where some departments enforce a normal distribution, or something roughly like that). But yes I will take into mind to use quartiles instead of confidence intervals. And I'll look into having a calculator to get to a target grade. $\endgroup$
    – Mike Shi
    Commented Dec 29, 2013 at 2:35
  • $\begingroup$ Basically our high school does not publish statistics the distribution of grades through our online student information system (powerschool). Even if teachers had access to this information, they're usually too busy to attend to those students who wish to see such statistics. So, we have to collect our own statistics through users who wish to user our service. As part of the service of providing statistics, we will most likely make it mandatory that their data be available for general statistics functions (mean, std dev, etc.) that will obfuscate their individual data point/personal info. $\endgroup$
    – Mike Shi
    Commented Dec 29, 2013 at 4:53

I've seen students' scores of different kinds. The distribution often exhibits one or more tresholds reflecting what they might want or have to achieve. And even with untresheld and continuous scores the distributions are not normal but rather skewed towards higher scores. You should test the normality assumption. As for the percentiles, I would use the empirical, with regard to the aforementioned.

  • $\begingroup$ How would I be able to calculate percentiles accounting for a skewed data? I'd love to look at the data that I have at hand but the database is too large to be exported to my computer. However, in the past, we did look at the distribution for a single class and it was approximately normal. $\endgroup$
    – Mike Shi
    Commented Dec 29, 2013 at 0:07
  • 2
    $\begingroup$ For empirical percentiles you don't think of any distributional issues, because it is an order statistic. It is calculated: Take any student's score, count how many students scored less than this score, to this count add one half of the frequency of the score of interest in the sample, and divide this sum by the total number of students in the sample, then multiply by 100. It's the empirical percentile of this student. $\endgroup$ Commented Dec 29, 2013 at 0:23
  • $\begingroup$ However, for the percentile for a class, where we don't have the most up to date data, how would we calculate a percentile to make sure the student isn't place too lowly because they've updated recently after a terrible test while everyone else remains to be updated? $\endgroup$
    – Mike Shi
    Commented Dec 29, 2013 at 1:48
  • $\begingroup$ In that case, can't you just not calculate the percentage at all until x number of students (or say 50% of the class) have uploaded their scores? Maybe I'm missing something, but I don't see the point of calculating a percentile that will likely be meaningless once more than half the class uploads their scores. $\endgroup$
    – rocinante
    Commented Dec 29, 2013 at 2:06
  • 1
    $\begingroup$ Don't apologise, we are all here to learn from one another. It's true that your sample data could not necessarily be representative of the real population. However, I don't think this is the case here. When you're taking a sample from a population, you have some degree of control over how that sample is taken. Most statistical results are valid because the sample is a simple random sample taken from the population, i.e. it is representative of the population. Here, the sample is not representative at all. There is selection bias because it is up to the students to submit their grades first. $\endgroup$
    – rocinante
    Commented Dec 29, 2013 at 3:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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