문항정답률에 기반한 능력추정

1. 문제
고민이 생겼다. 객관식 시험에서 능력을 조금 더 정확하게 추정할 수 있는 방법이 없을까.

객관식 시험은 다음과 같은 특징을 가진다:
찍어서 맞출 수 있다. 즉, 능력이 낮더라도 어려운 문제를 20%(25%) 확률로 맞출 수 있다.
실수로 틀릴 수 있다. 즉, 능력이 높더라도 쉬운 문제를 일정 확률로 틀릴 수 있다.

이런 점을 고려해, 각 문제의 정답률과 개개인의 정답률에 따라 점수를 다르게 주면 어떨까 하는 생각을 했다. 못하는 사람이 쉬운 문제를 틀릴때보다, 잘하는 사람이 쉬운 문제를 틀릴때에 감점이 덜 되는 방식이다.


2. 테스트: 모의 데이터 생성
엑셀을 사용해서 40개의 모의 문항을 만들고, 난수를 통해 각 문항마다 0.0에서 1.0의 난이도를 지정해주었다. 같은 방식으로 250명의 응시자를 만들고, 난수를 통해 각 응시자에게 0.0에서 1.0의 능력을 지정해주었다.

찍기 구현. (문항 난이도 > 응시자의 능력)일 경우, 응시자는 원래 틀렸어야 할 해당 문제를 20% 확률로 맞추게 된다. (5지선다형 기준)
실수 구현. 문항 난이도가 응시자의 능력보다 낮을 경우, 응시자는 원래 맞췄어야 할 해당 문제를 10% 확률로 틀리게 된다. (임의로 정해준 값)


3. 비교
다음과 같이 배점하였다.

난이도 0.25까지의 문제는 1점,
난이도 0.50까지의 문제는 2점,
난이도 0.75까지의 문제는 3점,
난이도 1.00까지의 문제는 4점.

이렇게 배점해서 합산한 점수를 “단순채점점수”라고 하고, 비교기준으로 삼았다.

*

다음과 같이 보정채점점수를 계산한다.

찍기 보정. 어떤 사람이 맞춘 문제에 대해, (1 – 문항의 정답률) * (그 사람이 맞춘 문제수 비율)을 배점한다.
정답률이 20%인 문제라면,
10개를 맞춘 사람은 0.8 * (10/40) = 0.2점을 얻는다.
30개를 맞춘 사람은 0.8 * (30/40) = 0.6점을 얻는다.

실수 보정. 어떤 사람이 틀린 문제에 대해, (0 – 문항의 정답률) * (1 – 그 사람이 맞춘 문제수 비율)을 배점한다.
정답률이 80%인 문제라면,
10개를 맞춘 사람은 -0.8 * (30/40) = -0.6점을 얻는다. (0.6점이 감점된다.)
30개를 맞춘 사람은 -0.8 * (10/40) = -0.2점을 얻는다. (0.2점이 감점된다.)

이렇게 계산된 점수를 합산해 “보정채점점수”라고 하였다.


4. 결과

보정채점점수는 단순채점점수에 비해 실제능력과의 상관계수가 더 높게 나타났다.

다음과 같은 조건들도 테스트하였다.

– 실수 확률 10%/찍기 확률 20%
– 실수 확률 10%/찍기 확률 25%
– 실수 확률 30%/찍기 확률 20%
– 실수 확률 30%/찍기 확률 25%

하지만 의문점도 있다. 단순채점점수보다 정답갯수가 실제능력과 상관계수가 더 높았다. 어려운 문제를 높게 배점해서 합산한 점수보다, 모든 문제를 동일하게 쳐서 맞은 갯수만 센 점수가 실제능력에 더 가까웠다는 의미인데.. 혹시 방법이 잘못된걸까?

추가: 생각해보니, 정답갯수는 단순채점점수보다 실제 능력에 더 가까울 수 밖에 없었다. 모의 데이터를 만들면서 특정 난이도의 문제를 맞출지 못 맞출지를 능력에 따라 정해지도록 했는데, 이렇게 하면 능력이 높은 사람은 자연히 문제도 더 많이 맞추게 되는 모의 데이터가 만들어진다. 그러므로 정답갯수는 애초에 능력 정보를 가공한 값이나 마찬가지인데, 단순채점점수는 이 정보를 1-4점의 가중치를 써서 정보를 한 번 더 가공해버리기 때문에 원래 능력 정보와 거리가 멀어지는 것.

추가: 이후에 공부하면서 알게 된 사실이지만, 문제풀이에 실수할 확률과 찍어서 맞출 확률을 감안해서 개개인의 능력을 추정하는건, 문항반응이론(Item Response Theory)의 모형 중 4PL 모형에 해당한다.

첨부: compensate3.xlsx

Advertisements