Алгоритм того, как много учеников в классе добились большего успеха, чем ученик, учитывая эту информацию - PullRequest
1 голос
/ 21 марта 2011

Я хочу сделать простое приложение, которое будет принимать:

  1. количество учеников
  2. средний класс (оценка / 100)
  3. средний балл (оценка/ 100)
  4. стандартное отклонение класса
  5. текущая оценка учащегося (оценка / 100)

Результат будет на сколько учеников успевал лучше этого ученика.

Меня интересует максимально возможная оценка этой информации.

Я просто не знаю, как рассчитать это.

Оценки в моих данныхУ набора такое же среднее, как у медианы, поэтому, пожалуйста, просто объясните, как это сделать таким образом.

Ответы [ 2 ]

1 голос
/ 21 марта 2011

Комментаторы выше верны, что без дополнительной информации вы не сможете точно это зафиксировать. Тем не менее, как любит говорить Стив Джобс, настоящие артисты отправляют, поэтому вот что я хотел бы сделать, если вам нужна оценка парка балов.

Два самых простых способа сделать это - предположить, что данные распределены нормально или из бета-версии (поскольку оценки ограничены 0-100). Поскольку вы сказали, что среднее и медиана близки в ваших данных, я дам код для расчета количества, исходя из нормального распределения.

Нормальное распределение имеет два параметра: среднее значение и дисперсию. Наилучшей оценкой среднего значения, которое вы получите, является выборочное среднее значение из данных, а наилучшей оценкой дисперсии будет квадрат стандартного отклонения. Итак, если вы хотите узнать, сколько учеников сделали хуже, чем конкретный балл, вам нужна функция кумулятивного распределения.

double mu=sample_mean;
double sigma=sample_std_deviation;
int numStudents=sample_size;
int NumberBetterThan(double score,double mu,double sigma,int numStudents)
{
   double temp=(score-mu)/sqrt(2*pow(sigma,2.0));
   temp=0.5*(1+erf(temp));
   int result=numStudents*(1.0-temp); // truncates to int but you can return a float if you are ok with a fractional number of students
   return(result);

}

erf - функция ошибок из статистики. Вы можете найти код на С ++ для его реализации во многих местах в Интернете. Одним из таких мест является здесь .

1 голос
/ 21 марта 2011

Вам нужно знать больше среднего, медианного и стандартного отклонения, чтобы иметь распределение вероятностей баллов, и вам нужно это распределение, чтобы выяснить, сколько учеников успели лучше.

Если вы предполагаете распределение вероятностей (или знаете распределение, потому что учитель получил оценку по этой кривой), число учеников, которые получили более высокие результаты, будет (cdf(maximum possible score) - cdf(student's score)) * number of students, где cdf - кумулятивная функция распределения для этого распределения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...