在一系列测试中得分最高的学生

机器算法验证 统计学意义 p 值 排行 意思是 分位数
2022-03-30 17:17:43

我有一些学生和他们在一系列测试中的分数,所有这些在我的模型中都具有同等重要性。我想确定得分最高的学生(例如前 10%)。

我的第一个想法是平均百分位数并从那里开始工作。但是,我想不出一种方法来将统计显着性归因于我得到的结果。

我的第二个想法如下。首先,一次进行一项测试,并将所有学生在该测试中的分数转换为 -scores其次,对每个学生进行单样本zt

H0:所有测试的平均分数等于 0。:所有测试的平均分数大于 0。z
HAz

这个程序会给我每个学生的值。然后我可以设置一个阈值使得只有大约 10% 的学生达到低于值。pTpT

这种方法有意义吗?它的警告是什么?另一方面,如果它没有意义,你能画出一个替代方案吗?

我的兴趣是一种处理问题类别的方法,其中我有一组对象(大约数千个)以及它们在一系列同样重要的事件中的分数,即不一定只有学生测试场景.

3个回答

您描述的方法似乎很复杂(而且可能相当不准确)。据推测,测试衡量的是某种特质(例如智力)或能力(例如数学能力)或经验(例如学习),并且您希望在该结构上得分最高的前 10% 的学生。你还提到有一系列的测试,这表明你有几个分数。如果这些测试是相关的,并且对您来说它们测量的是相同的能力,那么您为什么不简单地总结所有测试的分数呢?然后,您可以使用这些原始分数的前 10% 来确定前 10%。

如果您想更复杂一点,您可以使用探索性/确认性因素分析来根据每个量表之间的关联和您希望评估的能力来计算加权分数。

您还可以使用项目反应理论的各个方面来确定最强的应试者。

一个问题是您提到“统计意义”。我不知道你在这里指的是什么。您似乎想要识别个人,这似乎比统计显着性和零假设检验更具描述性。如果您想要某种关于您的估计有多可靠的指数,那么估计或错误/信息将是有价值的,而不是统计意义本身。

我同意上面的评论,如果问题更精确一点,这会更容易。

这里有一些需要考虑的事情。

set.seed(1)

## simulate data: refine to reflect attributes of interest

n <- 30  ## test count
m <- 100 ## student count

## student "ability": student rows, test columns
sa <- matrix(round(runif(m*n,30,80)), nrow=m)

te <- 5 ## test error

## test scores:
ts <- matrix(round(rnorm(m*n, sa, te)),nrow=m)
rownames(ts) <- seq(m)

方法一:

使用汇总度量来折叠学生在测试中的可变性。

## test score summary
tss <- apply(ts,1,mean)

qqnorm(tss); qqline(tss, col=2)

在此处输入图像描述

取 tss 作为参数匹配的正态分布样本:

ps <-pnorm(tss, mean(tss), sd(tss))

## top 10% students
(a <- rownames(ts[ps>0.9,]))

[1] "4"  "14" "23" "30" "39" "43" "45" "49" "50" "68" "69" "80"

方法B:

在测试中获取 z 分数,从学生的单侧 t 测试中报告 p 值。

z.ps <- function(ts) {
 zs <- scale(ts) 
 st <- apply(zs, 1, function(s) t.test(s, alternative='greater'))
 unlist(lapply(st, function(s) s$p.value))
}

ps <- z.ps(ts)

## top 10% students
(b <- rownames(ts[ps<0.1,]))

[1] "3"  "4"  "8"  "14" "23" "30" "39" "43" "45" "49" "50" "68" "69" "80" "83"
[16] "96"

这导致更“宽松”的阈值。它确实试图解释学生内部测试之间的可变性,但正常假设有时是有问题的,即使对于较大的 n 也是如此。

请参见此处(未显示图表),并使用不同的 m,n 重复方法:

op <- par(mfrow=c(3,4))
for (i in sample(n,12)) { qqnorm(ts[i,]); qqline(ts[i,],col=2) }
par(op)

这部分是因为这些数据的模拟方式。将“学生”的能力建模为间隔一致且在人类受试者中不相关可能不太现实。

重点不是为模拟的幼稚性辩护,或以其他方式。而是要强调,如果您的“学生”是来自任意过程的性能指标,那么这些属性将影响构成明智方法的因素。

希望有帮助。

就个人而言,我不喜欢这个前提。你问了,我会用它,但我不喜欢这里的基础。

个人一边的教学

我个人认为一名教师有 2 份工作,而且两者都不会因含糊不清而有所改善:

  1. 教和认证学生已经掌握了所有的基础知识。如果某些东西不是基本的,那么他们就不需要它。如果他们需要它,那么它是一个基础。每个通过课程的学生都应该 100% 掌握基础知识。任何通过课程的学生都不应该缺乏任何基础知识——如果他们缺乏,他们就应该不及格。
  2. 教学生如何自学。我的意思是所有相关的学习方法都是基础的一部分。拥有这一点的学生能够以所有相关方式在他的基础上建立任意水平的例外主义。任何通过课程的学生都不应该以任何相关的方式自学。每个通过课程的学生都应该能够以该科目的所有相关方式自学。

我如何在“Pick-em”中获胜

我玩一种叫做“ pick-em ”的梦幻足球。我的结果至少与拉斯维加斯的“传播”值一样好。

问题可以表述为:

  • 给定 16 支球队,以及他们最近的比赛历史(我只需要每场比赛的积分)
  • 鉴于 16 支球队中有两支将在下一场比赛中满足
  • 确定哪个最有可能获胜
  • 确定一个标度,表明赢得一个比另一个更有可能获胜

我的做法:

  • 设置指标:对于球队过去的所有比赛,如果他们获胜,则表示分差为正,否则表示为负
  • 建立坐标系:对于感兴趣的游戏,将一支球队放在坐标x=1,另一支球队在x=-1。每个不同的分数变成一个 y 值。这意味着在 x=1 时,积分将与被视为相关历史的游戏一样多。如果最后 5 场比赛被认为是相关历史,则在 x=1 处有 5 分表示球队 x=1 的相关得分,在 x=-1 处有 5 分表示球队 x=-1 的相关得分。
  • 使用Theil-Sen 估计器(或其亲属)来确定所有点对之间的中值斜率。如果斜率为正,则 x=1 的球队获胜,否则 x=-1 的球队获胜。斜率是衡量一支球队获胜的可能性的指标。如果斜率较浅,则输赢是不确定的,但如果斜率较高,则输赢更可靠。

我应该否认所有标准免责声明都适用,因此没有人写信给我讨厌邮件说他们使用这种方法投注赔钱。如果你打赌,那是你的决定,不是我的。

应用到孩子身上

您可以制作一个矩阵(也称为图表)来比较所有孩子。在将孩子“i”与孩子“j”进行比较的单元格 (i,j) 处放置 TS 估计器的斜率。如果孩子“i”通常获胜,则斜率为正,否则为负。

进行行总和。这将为您提供 1 轴稳健的性能估计。行总和的值越高,意味着学生的整体表现更好。行总和的值越低意味着学生的整体表现越差。它将是比较性能的最佳总体估计值。它几乎不会告诉你任何关于绝对性能的信息。它不会告诉你关于满足我给出的标准的任何信息。然而,它将是比较性能的极好估计。它将允许聚类。

对于单变量数据,有一个教科书“现实检查”,称为 4-plot。链接)如果您想了解正在发生的事情,请使用它。它将向您展示趋势、异常值、关于孩子“i”与“i+1”年级的依赖性以及分布的性质。在无限样本的限制下,有人挥手说一切都是高斯的。实际上,没有什么是高斯的,甚至不是看起来像高斯的伪随机数。真实分布可以告诉您有关集群、团块、(概率模式)和异常值的信息。

祝你好运

PS:如果您想要教科书 TS 的示例和源代码(不是我的变体),那么我会提供。请索取。