Files
report-admin/scoring_engine_documentation.md
T
lofyerandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 71db82393a Initial commit
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-07-13 15:38:41 +08:00

21 KiB
Raw Blame History

二期赋分引擎完整计算方法文档

自动生成于 2026-03-22,基于 scoring_engine_era2.pystats_engine_era2.pyconfig_era2.py


一、总体数据流

原始问卷项 (B表=课程实施情况表, C表=学科课程实施情况表)
    ↓
_score_*() 方法:提取字段 → 赋分 → 输出 List[float](每个学科/条目一个分值)
    ↓
每个学校得到 Dict[子维度名, List[float]]20个子维度的原始分列表)
    ↓
compute_dimension_scores():
    对每个子维度:raw_score = nanmean(list)  → 得到每校一个标量
    全市所有学校的该子维度标量 → standardize_scores() → 标准化分
    ↓
compute_dimension_aggregates():
    维度分 = mean(该维度下所有子维度的标准化分)
    总体得分 = mean(7个维度分)
    ↓
compute_levels():
    对每个子维度标准化分 → determine_level() → 水平1/2/3/4

二、标准化方法 (stats_engine_era2.py)

standardize_scores()

标准化分 = (raw - mean) / std * PCA_STD + PCA_MEAN
  • raw: 全市所有学校该子维度的原始均值数组
  • mean: 全市 nanmean
  • std: 全市 nanstd(ddof=1)(样本标准差)
  • PCA_MEAN = 50, PCA_STD = 10
  • 若 std=0 或样本<2,全部赋值 PCA_MEAN(50)

本质:z-score 线性变换到 均值50、标准差10 的分布。

pca_compose()(仅在多列合成时使用)

  • 用 StandardScaler 对多列标准化
  • 做 PCA 取第一主成分
  • 若loadings总和<0则翻转
  • 最后再做 standardize_scores()
  • 注意:当前20个子维度的 compute_dimension_scores() 并不使用 pca_compose(),而是直接 standardize_scores()。PCA仅作为可选工具。

determine_level()

基于 LEVEL_THRESHOLDS 配置的断点:

  • score > level4 → 水平4
  • score > level3 → 水平3
  • score > level2 → 水平2
  • 否则 → 水平1

维度聚合

  • 维度分 = 该维度下所有子维度标准化分的 算术平均(等权)
  • 总体得分 = 7个维度分的 算术平均(等权)

聚类

  • KMeans(n_clusters=2) 在区内学校的维度分上做
  • 分为"较好"和"待提升"两组

三、20个子维度详细计算方法

维度一:课程领导力


1. 国家标准遵循

属性
数据源 C表(学科课程实施情况表)via get_weekly_hours()
字段 学科必修课周课时、学科选择性必修课周课时、学科类选修课周课时
赋分方式 按课程类型分三项打分
聚合 输出 scores 列表(3项),最终 nanmean → 1个标量

详细逻辑:

  1. 必修:统计9门考试科目(语数英物化生历地政)各学科周课时是否>0。
    • 9门全部开设 → 2.0
    • ≥6门开设 → 1.0
    • <6门 → 0.0
  2. 选必:全部学科选必课时总和 > 0 → 1.0,否则 0.0
  3. 选修:全部学科选修课时总和 > 0 → 1.0,否则 0.0
  4. 若无数据 → 默认 [1.0]

水平阈值(标准化分): >57=水平4, >53.5=水平3, >43=水平2, ≤43=水平1


2. 课程结构建设

属性
数据源 C表(周课时)+ B表(课程实施情况表)
字段 周课时各学科占比 + 跨学科/综合主题/综合实践选修课门数 + 研究性学习数量/社会考察个数/志愿服务时长
赋分方式 连续值
聚合 输出 scores 列表(最多7项),最终 nanmean

详细逻辑:

  1. 均衡度:各学科周课时占总课时比例 → 计算偏离均值的绝对偏差之和 deviation
    • structure_score = max(0, 3 - deviation * 10)
  2. 校本课程3个字段,各自独立):
    • 跨学科选修课门数: min(v/5, 3.0)
    • 综合主题选修课门数: min(v/5, 3.0)
    • 综合实践选修课门数: min(v/5, 3.0)
  3. 综合实践3个字段,各自独立):
    • 三年应完成的研究性学习数量: min(v/10, 3.0)
    • 三年社会考察个数: min(v/10, 3.0)
    • 三年志愿服务时长: min(v/10, 3.0)
  4. 若无数据 → 默认 [1.0]

水平阈值: >55.5=水平4, >49=水平3, >45=水平2, ≤45=水平1


3. 课程规范落实

属性
数据源 B表 via get_course_norms()
字段 含"建设规范文本"的字段 + 含"档案"的字段
赋分方式 二值计数→比例→缩放
聚合 输出 scores 列表(最多2项),最终 nanmean

详细逻辑:

  1. 规范文本:统计所有"建设规范文本"字段,有值非空/非0的计2分 → norm_score/norm_count * 2
  2. 档案
    • "已经建成并使用" = 1 → 得2分
    • "已经建成" = 1 → 得1分
    • archive_score/archive_count * 2
  3. 若无数据 → 默认 [1.0]

水平阈值: >58=水平4, >50=水平3, >44=水平2, ≤44=水平1


维度二:教学变革力


4. 教学方式变革

属性
数据源 C表(学科课程实施情况表)
字段 含"认识程度/认识"、"落实程度/落实"、"体现形式"的字段
赋分方式 Likert量表(1-4) + 二值计数
聚合 每学科内部 mean → 15学科各一个分 → 全部进入 scores → nanmean

详细逻辑(每学科):

  1. 匹配"认识程度/认识"的字段 → _score_likert(value, scale=4):提取数字1-4
  2. 匹配"落实程度/落实"的字段 → _score_likert(value, scale=4)
  3. 匹配"体现形式"的字段 → 统计值为"1"的数量 → min(form_count, 6)
  4. 每学科取 np.mean(sub_scores)
  5. 若无数据 → 默认 [2.0]

水平阈值: >54=水平4, >49=水平3, >45=水平2, ≤45=水平1


5. 作业设计与管理变革

属性
数据源 C表
字段 实践类/表现类/跨学科/团队合作类作业_未布置;作业属性标注_;回家作业时长控制_;作业批改范围_*
赋分方式 二值→分级 + 计数
聚合 每学科 mean → 15学科各一个分 → nanmean

详细逻辑(每学科):

  1. 4种创新作业布置[ERA2-FIX-04/05/06/07]):
    • {前缀}_未布置 == "1" → 0.0
    • 否则:统计该前缀下非"未布置/案例"子字段值为"1"的数量 type_count
    • 得分 = min(1.0 + type_count * 0.2, 2.0)
    • 默认(无字段)→ 1.0
  2. 作业属性标注:值为"1"的属性数量 attr_countmin(attr_count, 5)
  3. 作业管理4个字段互斥打分):
    • 回家作业时长控制_学校控制 → 3
    • 回家作业时长控制_教研组负责 → 2
    • 作业批改范围_全部批改 → 3
    • 作业批改范围_全部教材练习 → 1 [ERA2-FIX-03]
  4. 每学科 np.mean(sub_scores)
  5. 若无数据 → 默认 [1.5]

水平阈值: >54=水平4, >49=水平3, >45=水平2, ≤45=水平1


维度三:学生发展指导力


6. 学科发展的个性化辅导

属性
数据源 C表
字段 个别辅导时长_* + 个别辅导实施方式_*
赋分方式 分类赋值(ordinal
聚合 15学科×2项(时长+方式) → scores 列表 → nanmean

详细逻辑(每学科):

  1. 辅导时长(互斥取first-match[ERA2-FIX-01/02]
    • 个别辅导时长_每周2h+ → 4
    • 个别辅导时长_每周1~2h → 3
    • 个别辅导时长_每周1h- → 2
    • 个别辅导时长_几乎无 → 1
  2. 辅导方式(互斥取first-match):
    • 分散辅导 → 3
    • 分组统一辅导 → 2
    • 班级统一辅导 → 1
  3. 若无数据 → 默认 [2.0]

水平阈值: >60=水平4, >50=水平3, >46=水平2, ≤46=水平1


7. 学生生涯发展指导

属性
数据源 B表
字段 生涯指导实施方式_;完成生涯指导的学生占比_;生涯指导教师构成_*;生涯指导的校外/校内资源支持程度
赋分方式 分类赋值 + _score_resource_level()
聚合 所有项进入 scores 列表 → nanmean

详细逻辑:

  1. 实施方式(累加,非互斥):
    • 专设课程 → 3
    • 社会考察和志愿服务 → 2
  2. 覆盖率90%+ → 4,否则 → 2
  3. 教师构成(互斥 first-match):
    • 本校和外聘结合 → 4
    • 本校为主 → 3
  4. 资源支持2项,各用 _score_resource_level()):提取数字1-3,或模糊匹配"足够"→3/"一些"→2/"没有"→1
  5. 若无数据 → 默认 [2.0]

水平阈值: >56=水平4, >50=水平3, >42=水平2, ≤42=水平1


维度四:教师发展支持力


8. 培训支持

属性
数据源 C表
字段 提供外校培训的教师人数、区域培训指导人数
赋分方式 连续值截断 min(v, 5)
聚合 15学科×2字段 → scores → nanmean

详细逻辑(每学科):

  • 提供外校培训的教师人数 → min(float(v), 5)
  • 区域培训指导人数 → min(float(v), 5)
  • 若无数据 → 默认 [1.0]

水平阈值: >51=水平4, >49=水平3, >47.5=水平2, ≤47.5=水平1


9. 教研支持

属性
数据源 C表
字段 学科教研组每学期活动次数、平均每次活动时长、工作计划_有、校级/区域展示次数_、成果发表次数_
赋分方式 连续值变换 + 二值 + 次数分级
聚合 15学科多项 → scores → nanmean

详细逻辑(每学科):

  1. 活动次数min(v/3, 4) (即每学期3次=1分,12次以上=4分)
  2. 活动时长min(v/30, 4) (即30分钟=1分,120分钟以上=4分)
  3. 教研计划:学科教研工作计划_有 == "1" → 2
  4. 展示/发表[ERA2-FIX-08/09/10]3个前缀各自独立):
    • {前缀}次数_0/1/2/3/4/5以上 找选中项
    • 0次 → 不给分
    • 1-2次 → 2
    • 3-4次 → 3
    • 5次以上 → 4
  5. 若无数据 → 默认 [1.0]

水平阈值: >55=水平4, >50=水平3, >47=水平2, ≤47=水平1


10. 项目支持

属性
数据源 C表 + B表
字段 (C表)学科承担的市级/区级/校级教改项目个数;(B表)学校负责/参与的市级/区级教改项目个数、校级教改项目个数
赋分方式 连续值截断 min(v, 5)
聚合 所有项 → scores → nanmean

详细逻辑:

  1. 学科层面(C表):15学科 × 3字段(市/区/校级),每个 min(float(v), 5)
  2. 学校层面(B表):5字段(学校负责市级/参与市级/负责区级/参与区级/校级),每个 min(float(v), 5)
  3. 若无数据 → 默认 [0.5]

水平阈值: >56.5=水平4, >50=水平3, >44=水平2, ≤44=水平1


维度五:教育质量评估力


11. 科学评价观

属性
数据源 C表
字段 含"作业评价关注点"、"课堂表现评价关注点"、"学科实践活动评价关注点"的字段
赋分方式 关注点计数 → 连续值
聚合 15学科各一分 → scores → nanmean

详细逻辑(每学科):

  • 匹配3类关注点字段,统计值为"1"的总数 focus_count
  • 得分 = min(focus_count / 3, 4) (每3个关注点=1分,最高4分)
  • 若无数据 → 默认 [2.0]

水平阈值: >57=水平4, >50=水平3, >43=水平2, ≤43=水平1


12. 学业质量评估

属性
数据源 C表
字段 作业评价工具_;课堂表现评价工具_;学期考试分析_;表现性评价应用程度_
赋分方式 分类赋值(互斥first-match
聚合 15学科×3组选项 → scores → nanmean

详细逻辑(每学科):

  1. 评价工具(互斥):
    • 作业评价工具_已经建成并使用 → 2
    • 课堂表现评价工具_已经建成并使用 → 2
    • 作业评价工具_已经建成尚未使用 → 1
    • 作业评价工具_尚未建成和使用 → 0
  2. 考试分析(互斥):
    • 执行分析并存档 → 3
    • 执行分析,不要求存档 → 2
    • 教师自己决定 → 1
  3. 表现性评价应用(互斥):
    • 经常/总是 → 4
    • 有时 → 3
    • 从不 → 1
  4. 若无数据 → 默认 [2.0]

水平阈值: >54=水平4, >46=水平3, >41=水平2, ≤41=水平1


13. 综合素质评估

属性
数据源 B表
字段 综评评价体系_;综评信息化实现_;综评结果使用/综评应用_*
赋分方式 分类赋值 + 计数
聚合 所有项 → scores → nanmean

详细逻辑:

  1. 评价体系(互斥):
    • 已经建成并使用 → 3
    • 已经建成尚未使用 → 2
    • 未建成 → 1
    • 不准备建设 → 0
  2. 信息化实现(互斥):
    • 自建平台支持 → 2
    • 借助第三方平台支持 → 1
  3. 结果使用:匹配"综评结果使用/综评应用"的字段,值为"1"的数量 → min(use_count, 6)
  4. 若无数据 → 默认 [1.0]

水平阈值: >58.5=水平4, >50=水平3, >39=水平2, ≤39=水平1


14. 实践活动评估

属性
数据源 B表 + C表
字段 研究性学习评价工具_;社会考察评价工具_;学科实践活动工具_*
赋分方式 分类赋值(互斥)
聚合 所有项 → scores → nanmean

详细逻辑:

  1. 研究性学习评价工具B表,互斥):
    • 已经建成并使用 → 2
    • 尚未建成和使用 → 0
  2. 社会考察评价工具B表,互斥):
    • 已经建成并使用 → 2
    • 尚未建成和使用 → 0
  3. 学科实践活动工具C表,仅取前5学科,互斥):
    • 已经建成并使用 → 2
    • 已经建成尚未使用 → 1
    • 尚未建成和使用 → 0
  4. 若无数据 → 默认 [1.0]

水平阈值: >50=水平4, >46.5=水平3, >43=水平2, ≤43=水平1


维度六:教育条件保障力


15. 区域推进

属性
数据源 B表
字段 区域工作会参与_;区域推进措施_
赋分方式 分类赋值 + 计数
聚合 所有项 → scores → nanmean

详细逻辑:

  1. 会议频率(互斥):
    • 一月4次以上 → 7
    • 一月1次 → 5
    • 二月1次 → 3
    • 三月1次 → 1
  2. 推进措施:值为"1"的项数 → min(measure_count, 5)
  3. 若无数据 → 默认 [2.0]

水平阈值: >59=水平4, >52=水平3, >40=水平2, ≤40=水平1


16. 环境支持

属性
数据源 B表
字段 场馆供给_;专用教室供给_;信息化平台功能_*
赋分方式 分类赋值 + 计数
聚合 所有项 → scores → nanmean

详细逻辑:

  1. 场馆供给(互斥):
    • 能满足需要 → 3
    • 基本满足需要 → 2
    • 难以满足需要 → 1
  2. 专用教室供给(互斥):
    • 能满足需要 → 3
    • 基本满足需要 → 2
  3. 信息化平台功能:统计 信息化平台功能_* 子字段值为"1"的数量 → min(count/3, 5) (18个子功能,每3个1分,最高5分)
  4. 若无数据 → 默认 [2.0]

水平阈值: >56=水平4, >49.5=水平3, >41=水平2, ≤41=水平1


17. 资源支持

属性
数据源 C表
字段 必修课校内/校外资源支持程度;选择性必修课校内/校外资源支持程度;学科教研组总人数
赋分方式 _score_resource_level() + 连续值
聚合 15学科×5字段 → scores → nanmean

详细逻辑(每学科):

  1. 校内资源2字段):_score_resource_level() → 提取数字1-3(足够=3, 一些=2, 没有=1
  2. 校外资源2字段):同上
  3. 师资:学科教研组总人数 → min(total/3, 4)
  4. 若无数据 → 默认 [2.0]

_score_resource_level() 逻辑: 尝试提取首个数字 → 成功则返回。否则模糊匹配"足够"/3→3, "一些"/2→2, "没有"/1→1

水平阈值: >57.5=水平4, >49=水平3, >42=水平2, ≤42=水平1


维度七:数字化赋能力


18. 教学方式创新

属性
数据源 C表
字段 教学信息化应用程度_([ERA2替代字段]);信息化终端使用比例_
赋分方式 分类赋值(ordinal 1-4
聚合 15学科×2组选项 → scores → nanmean

详细逻辑(每学科):

  1. 教学信息化应用程度(互斥,替代一期"信息技术与教学融合的认识"):
    • 师生用于全流程 → 4
    • 师生用于教学和评价 → 3
    • 师生用于教学 → 2
    • 教师用于教学 → 1
  2. 信息化终端使用比例(互斥):
    • 80%+ → 4
    • 60~79% → 3
    • 30~59% → 2
    • 30%- → 1
  3. 若无数据 → 默认 [2.0]

水平阈值: >54=水平4, >45=水平3, >40=水平2, ≤40=水平1


19. 评价精准化与个性化

属性
数据源 C表 + B表
字段 (C表)学业评价信息化实现_*;(B表)学校信息系统对选课/排课支持程度
赋分方式 分类赋值 + _score_resource_level()
聚合 15学科×1字段 + 2个学校字段 → scores → nanmean

详细逻辑:

  1. 学业评价信息化C表,每学科,互斥):
    • 自建平台支持 → 3
    • 借助第三方平台支持 → 2
    • 没有平台支持 → 0
  2. 信息系统支持B表,2字段):
    • 学校信息系统对选课支持程度 → _score_resource_level()
    • 学校信息系统对排课支持程度 → _score_resource_level()
  3. 若无数据 → 默认 [1.5]

水平阈值: >60=水平4, >50=水平3, >40=水平2, ≤40=水平1


20. 课程迭代优化

属性
数据源 B表
字段 数据连通_;管理业务的信息化应用_;教学业务的信息化应用_*;已完成的网络课程门数
赋分方式 分类赋值 + 连续值
聚合 所有项 → scores → nanmean

详细逻辑:

  1. 数据连通(互斥):
    • 有数据能互通 → 3
    • 有数据不互通 → 1
    • 无意识(二期新增)→ 0
  2. 管理业务信息化(互斥):
    • 绝大部分 → 3
    • 少数 → 1
  3. 教学业务信息化(互斥):
    • 绝大部分 → 3
    • 少数 → 1
    • 几乎不用 → 0
    • 无系统支持 → 0
  4. 网络课程min(v/5, 4) (每5门1分,最高4分)
  5. 若无数据 → 默认 [1.5]

水平阈值: >55=水平4, >50=水平3, >45=水平2, ≤45=水平1


四、二期 vs 一期差异汇总(ERA2-FIX标记)

FIX编号 子维度 变更内容
ERA2-FIX-01 个性化辅导 个别辅导时长_每周>2h个别辅导时长_每周2h+
ERA2-FIX-02 个性化辅导 个别辅导时长_每周<1h个别辅导时长_每周1h-
ERA2-FIX-03 作业变革 作业批改范围_部分练习作业批改范围_全部教材练习
ERA2-FIX-04 作业变革 实践类作业_有布置 → 反推 实践类作业_未布置 ≠ 1
ERA2-FIX-05 作业变革 表现类作业_有布置 → 反推 表现类作业_未布置 ≠ 1
ERA2-FIX-06 作业变革 跨学科作业_有布置 → 反推 跨学科作业_未布置 ≠ 1
ERA2-FIX-07 作业变革 团队合作类作业_有布置 → 反推 团队合作类作业_未布置 ≠ 1
ERA2-FIX-08 教研支持 学科教研组校级展示_有学科教研组校级展示次数_0/1/../5以上(次数分级赋分)
ERA2-FIX-09 教研支持 学科教研组区域展示_有 → 同上
ERA2-FIX-10 教研支持 学科教研组成果发表_有 → 同上
C类-替代 教学方式创新 信息技术与教学融合的认识_*教学信息化应用程度_*
C类-恢复 环境支持 信息化平台功能_* 在全市数据中已恢复
C类-恢复 课程迭代优化 管理/教学业务信息化应用 + 已完成网络课程门数 在全市数据中已恢复

五、辅助函数

_score_likert(value, scale=4, reverse=False)

  • 提取字符串首个整数
  • reverse=True 时:scale + 1 - v
  • 返回 float 或 None

_score_resource_level(value)

  • 提取首个整数 → 返回
  • 否则模糊匹配:足够/3→3.0, 一些/2→2.0, 没有/1→1.0

_get_count_from_options(sub_df, prefix)

  • {prefix}_0/1/2/3/4/5以上 找值为"1"的选项
  • 返回对应整数(5以上=5

六、关键计算参数

参数 用途
PCA_MEAN 50 标准化目标均值
PCA_STD 10 标准化目标标准差
SUBJECTS 15个学科 逐学科循环的学科列表
维度聚合 等权mean 子维度→维度、维度→总分
标准化基准 全市所有学校 standardize_scores用全市分布
聚类基准 区内学校 KMeans用区内数据