试题难度分析
客观题一般以答对某题的人数与总人数之比,P = R/N
主观题以某题考生所得分数的平均数与该题满分之比,P = X/W
试题难度及评价
一般认为P<0.4O为难题,0.4<=P<=0.7较为合适,P>0.7为容易题
难度P | 评价 |
---|---|
P<0.4O | 难题 |
0.4<=P<=0.7 | 较为合适 |
P>0.7 | 容易题 |
试题区分度分析
区分度是试题对考生实际水平的区分程度,它是作为评价试卷质量,筛选试题的主要指标与依据。
通常用D表示,取值在-1.00和1.00之间,D值越大,试题的区分能力越强。
客观试题区分度的计算:
按考试成绩由高到低排序,成绩最高的前27%的考生为高分组,最低的后27%为低分组。PH为高组组某题的通过率,PL低组某题的通过率,D= PH-PL
主观题题区分度的计算,按考试成绩由高到低排序,成绩最高的前25%的考生为高分组,最低的后25%为低分组。XH为高分组考试总得分,XL低分组考试总得分,H为某题最高得分;L为某题最低得分;N为考生总人数的25%。D=XH-XL/N(H-L)
试题区分度及评价
区分度(D) | 区分能力 |
---|---|
当D为正值时 | 说明试题是积极区分,即高分组通过率高,低分组通过率低. |
D为负值时 | 说明试题是消极区分,高分组通过率低,低分组通过率高。 |
D为0时 | 试题无区分作用 |
区分度(D) | 试题评价 |
---|---|
0.40以上 | 非常优良 |
0.30-0.39 | 良好,如能改进更好 |
0.20-0.29 | 尚可,仍需修改 |
0.19以下 | 劣,必须淘汰或改进 |
客观题高\中\低分组 均分计算
-- 高分组均分 4,1034
SELECT
AVG(SCORE) 高分组均分
,COUNT(*) AS 高分组人数
FROM (
SELECT SCORE
FROM VIEW_PAPER_FULL V2
WHERE V2.EXAM_QUESTIONS_ID = 'DA11B14E975F4CF3AF489E37763EBC8C'
AND V2.EXAM_COURSE_ID = '83540A9F921546D896BBCD054E86B095'
AND V2.QUESTION_TYPE = 0 -- 客观题
ORDER BY V2.SCORE DESC ) T
WHERE ROWNUM <= 3832*0.27
-- 低分组均分 1.33,1034
SELECT
ROUND(AVG(SCORE),2) 低分组均分
,COUNT(*) AS 低分组人数
FROM (
SELECT V2.SCORE
FROM VIEW_PAPER_FULL V2
WHERE V2.EXAM_QUESTIONS_ID = 'DA11B14E975F4CF3AF489E37763EBC8C'
AND V2.EXAM_COURSE_ID = '83540A9F921546D896BBCD054E86B095'
AND V2.QUESTION_TYPE = 0 -- 客观题
ORDER BY V2.SCORE ASC ) T
WHERE ROWNUM <= 3832 * 0.27
-- 中等组均分 4,1764
SELECT
ROUND(AVG(SCORE),2) 中等组均分
,COUNT(*) AS 中等组人数
FROM
(
SELECT ROWNUM RN,SCORE
FROM (
SELECT V2.SCORE
FROM VIEW_PAPER_FULL V2
WHERE V2.EXAM_QUESTIONS_ID = 'DA11B14E975F4CF3AF489E37763EBC8C'
AND V2.EXAM_COURSE_ID = '83540A9F921546D896BBCD054E86B095'
AND V2.QUESTION_TYPE = 0 -- 客观题
ORDER BY V2.SCORE DESC ) T ) TT WHERE
TT.RN BETWEEN 3832 * 0.27 AND 3832 - (3832 * 0.27) + 1
-- 合在一起
-- 1034 4 1764 4 1034 1.33
SELECT
SUM(CASE WHEN DOWN_NUMBER <= 3832*0.27 THEN 1 ELSE 0 END) 高分组人数
,ROUND( SUM(CASE WHEN DOWN_NUMBER <= 3832*0.27 THEN SCORE ELSE 0 END) / SUM(CASE WHEN DOWN_NUMBER <= 3832*0.27 THEN 1 ELSE 0 END) ,2 ) 高分组均分
,SUM(CASE WHEN DOWN_NUMBER BETWEEN 3832 * 0.27 AND 3832 - (3832 * 0.27) + 1 THEN 1 ELSE 0 END) 中等组人数
,ROUND( SUM(CASE WHEN DOWN_NUMBER BETWEEN 3832 * 0.27 AND 3832 - (3832 * 0.27) + 1 THEN SCORE ELSE 0 END) / SUM(CASE WHEN DOWN_NUMBER BETWEEN 3832 * 0.27 AND 3832 - (3832 * 0.27) + 1 THEN 1 ELSE 0 END),2 ) 中等组均分
,SUM(CASE WHEN UP_NUMBER <= 3832*0.27 THEN 1 ELSE 0 END) 低分组人数
,ROUND( SUM(CASE WHEN UP_NUMBER <= 3832*0.27 THEN SCORE ELSE 0 END) / SUM(CASE WHEN UP_NUMBER <= 3832*0.27 THEN 1 ELSE 0 END) ,2 ) 低分组均分
FROM (
SELECT v2.*,ROW_NUMBER() OVER(ORDER BY V2.SCORE ASC) UP_NUMBER
,ROW_NUMBER() OVER(ORDER BY V2.SCORE DESC) DOWN_NUMBER
FROM VIEW_PAPER_FULL V2
WHERE V2.EXAM_QUESTIONS_ID = 'DA11B14E975F4CF3AF489E37763EBC8C'
AND V2.EXAM_COURSE_ID = '83540A9F921546D896BBCD054E86B095'
AND V2.QUESTION_TYPE = 0
) T
客观题试题难度分析
-- 客观题试题难度分析
-- 客观题一般以答对某题的人数与总人数之比
SELECT ROUND(COUNT(*) / 3832,2) 难度_客观题 -- 0.82
FROM VIEW_PAPER_FULL V2
WHERE V2.EXAM_QUESTIONS_ID = 'DA11B14E975F4CF3AF489E37763EBC8C'
AND V2.EXAM_COURSE_ID = '83540A9F921546D896BBCD054E86B095'
AND V2.QUESTION_TYPE = 0 -- 客观题
AND V2.SCORE = V2.FULL_SCORE
主观题试题难度分析
-- 主观题试题难度分析
-- 主观题以某题考生所得分数的平均数与该题满分之比,P = X/W 0.2
SELECT ROUND(AVG(SCORE) / 8.00,2) 难度_主观题
FROM VIEW_PAPER_FULL V2
WHERE V2.EXAM_QUESTIONS_ID = '6E01AA5955C84E9C92AAC81F9F4CB470'
AND V2.EXAM_COURSE_ID = '83540A9F921546D896BBCD054E86B095'
AND V2.QUESTION_TYPE = 1 -- 主观题
客观试题区分度的计算
-- 客观试题区分度的计算:
-- 按考试成绩由高到低排序,成绩最高的前27%的考生为高分组,最低的后27%为低分组。
-- PH为高组组某题的通过率,PL低组某题的通过率,D= PH-PL
-- 高组组某题的通过率
-- 高组组某题的通过率人数 1034
SELECT COUNT(*) FROM (
SELECT
*
FROM (
SELECT *
FROM VIEW_PAPER_FULL V2
WHERE V2.EXAM_QUESTIONS_ID = 'DA11B14E975F4CF3AF489E37763EBC8C'
AND V2.EXAM_COURSE_ID = '83540A9F921546D896BBCD054E86B095'
AND V2.QUESTION_TYPE = 0 -- 客观题
ORDER BY V2.SCORE DESC ) T
WHERE ROWNUM <= 3832*0.27 ) TT
WHERE TT.SCORE = TT.FULL_SCORE
-- 高分组人数 1034
SELECT
COUNT(*)
FROM (
SELECT *
FROM VIEW_PAPER_FULL V2
WHERE V2.EXAM_QUESTIONS_ID = 'DA11B14E975F4CF3AF489E37763EBC8C'
AND V2.EXAM_COURSE_ID = '83540A9F921546D896BBCD054E86B095'
AND V2.QUESTION_TYPE = 0 -- 客观题
ORDER BY V2.SCORE DESC ) T
WHERE ROWNUM <= 3832*0.27
-- 高分组某题的通过率 客观题 1
SELECT
ROUND(SUM(CASE WHEN TT.SCORE = TT.FULL_SCORE THEN 1 ELSE 0 END) /COUNT(1),2) 高分组某题的通过率
FROM (
SELECT
*
FROM (
SELECT *
FROM VIEW_PAPER_FULL V2
WHERE V2.EXAM_QUESTIONS_ID = 'DA11B14E975F4CF3AF489E37763EBC8C'
AND V2.EXAM_COURSE_ID = '83540A9F921546D896BBCD054E86B095'
AND V2.QUESTION_TYPE = 0 -- 客观题
ORDER BY V2.SCORE DESC ) T
WHERE ROWNUM <= 3832*0.27 ) TT
-- 低分组某题的通过率 客观题 0.33
SELECT
ROUND(SUM(CASE WHEN TT.SCORE = TT.FULL_SCORE THEN 1 ELSE 0 END) /COUNT(1),2) 低分组某题的通过率
FROM (
SELECT
*
FROM (
SELECT *
FROM VIEW_PAPER_FULL V2
WHERE V2.EXAM_QUESTIONS_ID = 'DA11B14E975F4CF3AF489E37763EBC8C'
AND V2.EXAM_COURSE_ID = '83540A9F921546D896BBCD054E86B095'
AND V2.QUESTION_TYPE = 0 -- 客观题
ORDER BY V2.SCORE ASC ) T
WHERE ROWNUM <= 3832*0.27 ) TT
主观题区分度的计算
-- 主观题题区分度的计算,按考试成绩由高到低排序,成绩最高的前25%的考生为高分组,最低的后25%为低分组。
-- XH为高分组考试总得分,XL低分组考试总得分,H为某题最高得分;L为某题最低得分;N为考生总人数的25%。
-- D= (XH-XL) / (N*(H-L))
-- XH为高分组考试总得分 5763
SELECT
SUM(SCORE)
FROM (
SELECT *
FROM VIEW_PAPER_FULL V2
WHERE V2.EXAM_QUESTIONS_ID = '6E01AA5955C84E9C92AAC81F9F4CB470'
AND V2.EXAM_COURSE_ID = '83540A9F921546D896BBCD054E86B095'
AND V2.QUESTION_TYPE = 1 -- 主观题
ORDER BY V2.SCORE DESC ) T
WHERE ROWNUM <= 3832*0.25
-- XL低分组考试总得分 0
SELECT
SUM(SCORE)
FROM (
SELECT *
FROM VIEW_PAPER_FULL V2
WHERE V2.EXAM_QUESTIONS_ID = '6E01AA5955C84E9C92AAC81F9F4CB470'
AND V2.EXAM_COURSE_ID = '83540A9F921546D896BBCD054E86B095'
AND V2.QUESTION_TYPE = 1 -- 主观题
ORDER BY V2.SCORE ASC ) T
WHERE ROWNUM <= 3832*0.25
-- H为某题最高得分, 8
SELECT
MAX(SCORE)
FROM (
SELECT *
FROM VIEW_PAPER_FULL V2
WHERE V2.EXAM_QUESTIONS_ID = '6E01AA5955C84E9C92AAC81F9F4CB470'
AND V2.EXAM_COURSE_ID = '83540A9F921546D896BBCD054E86B095'
AND V2.QUESTION_TYPE = 1 -- 主观题
ORDER BY V2.SCORE ASC ) T
-- L为某题最低得分, 0
SELECT
MIN(SCORE)
FROM (
SELECT *
FROM VIEW_PAPER_FULL V2
WHERE V2.EXAM_QUESTIONS_ID = '6E01AA5955C84E9C92AAC81F9F4CB470'
AND V2.EXAM_COURSE_ID = '83540A9F921546D896BBCD054E86B095'
AND V2.QUESTION_TYPE = 1 -- 主观题
ORDER BY V2.SCORE ASC ) T
-- N为考生总人数的25% ,958
SELECT
COUNT(SCORE) * 0.25
FROM (
SELECT *
FROM VIEW_PAPER_FULL V2
WHERE V2.EXAM_QUESTIONS_ID = '6E01AA5955C84E9C92AAC81F9F4CB470'
AND V2.EXAM_COURSE_ID = '83540A9F921546D896BBCD054E86B095'
AND V2.QUESTION_TYPE = 1 -- 主观题
ORDER BY V2.SCORE ASC ) T
-- 验证D=XH-XL / N(H-L) 0.75
SELECT ROUND(( (5763-0)/(958*(8-0)) ),2) 区分度_主观题 FROM DUAL
-- 写在一起,D=XH-XL / N(H-L) 0.75
SELECT
SUM(CASE WHEN DOWN_NUMBER <= 3832*0.25 THEN SCORE ELSE 0 END) XH
,SUM(CASE WHEN UP_NUMBER <= 3832*0.25 THEN SCORE ELSE 0 END) XL
,MAX(SCORE) H
,MIN(SCORE) L
,COUNT(SCORE) * 0.25 N
,ROUND ( (SUM(CASE WHEN DOWN_NUMBER <= 3832*0.25 THEN SCORE ELSE 0 END)
- SUM(CASE WHEN UP_NUMBER <= 3832*0.25 THEN SCORE ELSE 0 END))
/ (COUNT(SCORE) * 0.25 * (MAX(SCORE) - MIN(SCORE))),2 ) D
FROM (
SELECT v2.*,ROW_NUMBER() OVER(ORDER BY V2.SCORE ASC) UP_NUMBER,ROW_NUMBER() OVER(ORDER BY V2.SCORE DESC) DOWN_NUMBER
FROM VIEW_PAPER_FULL V2
WHERE V2.EXAM_QUESTIONS_ID = '6E01AA5955C84E9C92AAC81F9F4CB470'
AND V2.EXAM_COURSE_ID = '83540A9F921546D896BBCD054E86B095'
AND V2.QUESTION_TYPE = 1 -- 主观题
) T
完程SP
-- 【PL/SQL系列】试卷总体分析的详细运算过程
SELECT * FROM
(
SELECT
MAX(EXAM_COURSE_ID) EXAM_COURSE_ID
,MAX(EXAM_ID) EXAM_ID
,MAX(COURSE_ID) COURSE_ID
,V1.EXAM_QUESTIONS_ID
,V1.ITEM_ID
,V1.QUESTIONS_NAME
,MAX(V1.FULL_SCORE) 满分
,ROUND(AVG(V1.SCORE),2) 平均分
,ROUND(STDDEV(V1.SCORE),2) 标准差
,COUNT(*) 总人数
FROM VIEW_PAPER_FULL V1
WHERE V1.EXAM_COURSE_ID = '83540A9F921546D896BBCD054E86B095' -- 考试科目ID
-- AND V1.EXAM_ID = '9F900E751F894C25B36F3E7B670BC6AA' -- 考试ID
-- AND V1.COURSE_ID = 2 -- 数学
GROUP BY V1.EXAM_QUESTIONS_ID
,V1.ITEM_ID
,V1.QUESTIONS_NAME
ORDER BY V1.ITEM_ID
) R1
LEFT JOIN
(
-- 客观题指标计算
SELECT
EXAM_QUESTIONS_ID
,SUM(CASE WHEN DOWN_NUMBER <= CNT*0.27 THEN 1 ELSE 0 END) 高分组人数
,ROUND( SUM(CASE WHEN DOWN_NUMBER <= CNT*0.27 THEN SCORE ELSE 0 END)
/ SUM(CASE WHEN DOWN_NUMBER <= CNT*0.27 THEN 1 ELSE 0 END) ,2 ) 高分组均分 -- 高分组均分计算
,SUM(CASE WHEN DOWN_NUMBER BETWEEN CNT * 0.27 AND CNT - (CNT * 0.27) + 1 THEN 1 ELSE 0 END) 中等组人数
,ROUND( SUM(CASE WHEN DOWN_NUMBER BETWEEN CNT * 0.27 AND CNT - (CNT * 0.27) + 1 THEN SCORE ELSE 0 END)
/ SUM(CASE WHEN DOWN_NUMBER BETWEEN CNT * 0.27 AND CNT - (CNT * 0.27) + 1 THEN 1 ELSE 0 END),2 ) 中等组均分 -- 中等组均分计算
,SUM(CASE WHEN UP_NUMBER <= CNT*0.27 THEN 1 ELSE 0 END) 低分组人数
,ROUND( SUM(CASE WHEN UP_NUMBER <= CNT*0.27 THEN SCORE ELSE 0 END)
/ SUM(CASE WHEN UP_NUMBER <= CNT*0.27 THEN 1 ELSE 0 END) ,2 ) 低分组均分 -- 低分组均分计算
,ROUND( SUM(CASE WHEN SCORE = FULL_SCORE THEN 1 ELSE 0 END) / COUNT(1) ,2 ) 难度_客观题
,ROUND( (SUM(CASE WHEN DOWN_NUMBER <= CNT*0.27 AND SCORE = FULL_SCORE THEN 1 ELSE 0 END)
/SUM(CASE WHEN DOWN_NUMBER <= CNT*0.27 THEN 1 ELSE 0 END) -- 高分组某题的通过率 客观题
-SUM(CASE WHEN UP_NUMBER <= CNT*0.27 AND SCORE = FULL_SCORE THEN 1 ELSE 0 END)
/SUM(CASE WHEN UP_NUMBER <= CNT*0.27 THEN 1 ELSE 0 END) ),2) 区分度_客观题 -- 低分组某题的通过率 客观题
FROM (
SELECT v2.*,ROW_NUMBER() OVER(PARTITION BY EXAM_QUESTIONS_ID ORDER BY V2.SCORE ASC) UP_NUMBER
,ROW_NUMBER() OVER(PARTITION BY EXAM_QUESTIONS_ID ORDER BY V2.SCORE DESC) DOWN_NUMBER
,COUNT(*) OVER(PARTITION BY EXAM_QUESTIONS_ID) CNT
FROM VIEW_PAPER_FULL V2
WHERE V2.QUESTION_TYPE = 0
-- AND V2.EXAM_QUESTIONS_ID = 'DA11B14E975F4CF3AF489E37763EBC8C'
AND V2.EXAM_COURSE_ID = '83540A9F921546D896BBCD054E86B095'
) T
GROUP BY EXAM_QUESTIONS_ID
UNION ALL
-- 主观题指标计算
SELECT
EXAM_QUESTIONS_ID
,SUM(CASE WHEN DOWN_NUMBER <= CNT*0.25 THEN 1 ELSE 0 END) 高分组人数
,ROUND( SUM(CASE WHEN DOWN_NUMBER <= CNT*0.25 THEN SCORE ELSE 0 END)
/ SUM(CASE WHEN DOWN_NUMBER <= CNT*0.25 THEN 1 ELSE 0 END) ,2 ) 高分组均分 -- 高分组均分计算
,SUM(CASE WHEN DOWN_NUMBER BETWEEN CNT * 0.25 AND CNT - (CNT * 0.25) + 1 THEN 1 ELSE 0 END) 中等组人数
,ROUND( SUM(CASE WHEN DOWN_NUMBER BETWEEN CNT * 0.25 AND CNT - (CNT * 0.25) + 1 THEN SCORE ELSE 0 END)
/ SUM(CASE WHEN DOWN_NUMBER BETWEEN CNT * 0.25 AND CNT - (CNT * 0.25) + 1 THEN 1 ELSE 0 END),2 ) 中等组均分 -- 中等组均分计算
,SUM(CASE WHEN UP_NUMBER <= CNT*0.25 THEN 1 ELSE 0 END) 低分组人数
,ROUND( SUM(CASE WHEN UP_NUMBER <= CNT*0.25 THEN SCORE ELSE 0 END)
/ SUM(CASE WHEN UP_NUMBER <= CNT*0.25 THEN 1 ELSE 0 END) ,2 ) 低分组均分 -- 低分组均分计算
,ROUND( AVG(SCORE)/MAX(FULL_SCORE) ,2 ) 难度_主观题
,ROUND ( (SUM(CASE WHEN DOWN_NUMBER <= CNT*0.25 THEN SCORE ELSE 0 END)
- SUM(CASE WHEN UP_NUMBER <= CNT*0.25 THEN SCORE ELSE 0 END))
/ (COUNT(SCORE) * 0.25 * (MAX(SCORE) - MIN(SCORE))),2 ) 区分度_主观题
FROM (
SELECT v2.*,ROW_NUMBER() OVER(PARTITION BY EXAM_QUESTIONS_ID ORDER BY V2.SCORE ASC) UP_NUMBER
,ROW_NUMBER() OVER(PARTITION BY EXAM_QUESTIONS_ID ORDER BY V2.SCORE DESC) DOWN_NUMBER
,COUNT(*) OVER(PARTITION BY EXAM_QUESTIONS_ID) CNT
FROM VIEW_PAPER_FULL V2
WHERE V2.QUESTION_TYPE = 1
-- AND V2.EXAM_QUESTIONS_ID = 'DA11B14E975F4CF3AF489E37763EBC8C'
AND V2.EXAM_COURSE_ID = '83540A9F921546D896BBCD054E86B095'
) T
GROUP BY EXAM_QUESTIONS_ID
) R2 ON R1.EXAM_QUESTIONS_ID = R2.EXAM_QUESTIONS_ID