大学IRリテラシー開発プログラム
データ分析による教育改革の実践 - JASP統計分析 + LLM活用 + インタラクティブ学習
データドリブンな募集戦略の構築
シナリオ: A大学工学部の志願者数が3年連続で減少している。データを基に問題点を特定し対策を提言せよ。
JASP活用による予測妥当性分析とドロップアウト予兆検出
測定内容の適切性と学習目標との整合性
入学後成績の予測力と併存妥当性
測定意図と実際の測定内容の整合性
def admission_validity_analysis(entrance_data, academic_data):
"""
入試成績と学業成績の相関分析
"""
# 1. データ前処理
cleaned_data = preprocess_data(entrance_data, academic_data)
# 2. 相関分析
correlation = calculate_correlation(cleaned_data)
# 3. 回帰分析による予測力評価
prediction_model = linear_regression(
x=cleaned_data['entrance_score'],
y=cleaned_data['gpa']
)
# 4. 決定係数による説明力評価
r_squared = prediction_model.score()
return {
'correlation': correlation,
'prediction_accuracy': r_squared,
'validity_score': calculate_validity_score(correlation, r_squared)
}
def dropout_prediction_model(student_data): """ 機械学習によるドロップアウト予測 """ risk_factors = [ 'entrance_score', 'first_year_gpa', 'attendance_rate', 'extracurricular_participation', 'family_income', 'commute_time', 'part_time_job_hours' ] # ロジスティック回帰による予測 model = LogisticRegression() model.fit(training_data[risk_factors], training_data['dropout']) # 予測確率の計算 dropout_probability = model.predict_proba(student_data)[0][1] # リスクレベルの判定 if dropout_probability > 0.7: risk_level = "高リスク" elif dropout_probability > 0.4: risk_level = "中リスク" else: risk_level = "低リスク" return { 'probability': dropout_probability, 'risk_level': risk_level, 'intervention_needed': dropout_probability > 0.4 }
男女間の合格率差: 5%以内(良好)
出身地域の多様性: 改善余地あり
DP・CP・APの一貫性検証とLLMによるテキスト分析
学位授与の方針
教育課程の編成方針
入学者受け入れ方針
# ディプロマポリシー分析プロンプト
以下のディプロマポリシーを分析し、以下の観点から評価してください:
1. 学習成果の具体性(1-5点)
2. 測定可能性(1-5点)
3. 学科特性との整合性(1-5点)
4. 社会的期待との整合性(1-5点)
[ポリシーテキスト]
{policy_text}
出力形式:
- 各観点の評価点数と根拠
- 改善提案
- 他ポリシーとの整合性チェックポイント
頻出語: 「問題解決能力」「専門知識」「コミュニケーション」
def integrated_policy_analysis(ap_data, cp_data, dp_data):
"""
3ポリシーの統合分析
"""
# 1. 各ポリシーの実現度計算
ap_achievement = calculate_ap_achievement(ap_data)
cp_achievement = calculate_cp_achievement(cp_data)
dp_achievement = calculate_dp_achievement(dp_data)
# 2. ポリシー間の整合性評価
consistency_score = calculate_consistency(
ap_achievement, cp_achievement, dp_achievement
)
# 3. 統合評価指標の算出
integrated_score = (
ap_achievement * 0.2 +
cp_achievement * 0.5 +
dp_achievement * 0.3
) * consistency_score
return {
'ap_score': ap_achievement,
'cp_score': cp_achievement,
'dp_score': dp_achievement,
'consistency': consistency_score,
'integrated_evaluation': integrated_score
}
退学率・国試合格率・就職率・進学率の多次元分析
前年度比: -0.8pt(改善)
全国平均比: +2.3pt(良好)
目標値達成: 85%以上(達成)
def cross_analysis_algorithm(student_data, analysis_dimensions):
"""
学生成果クロス分析メインアルゴリズム
"""
results = {}
# ステップ1: 各分析軸でのグループ化
for dimension in analysis_dimensions:
grouped_data = group_by_dimension(student_data, dimension)
# ステップ2: 各グループでの指標計算
dimension_results = {}
for group_name, group_data in grouped_data.items():
# 退学率計算
dropout_rate = calculate_dropout_rate(group_data)
# 国試合格率計算
exam_pass_rate = calculate_exam_pass_rate(group_data)
# 就職率計算
employment_rates = calculate_employment_rates(group_data)
# 進学率計算
advancement_rates = calculate_advancement_rates(group_data)
dimension_results[group_name] = {
'dropout_rate': dropout_rate,
'exam_pass_rate': exam_pass_rate,
'employment_rates': employment_rates,
'advancement_rates': advancement_rates,
'sample_size': len(group_data)
}
results[dimension] = dimension_results
# ステップ3: 統計的有意性検定
statistical_tests = perform_statistical_tests(results)
return integrate_results(results, statistical_tests)
def calculate_employment_rates(group_data):
"""就職率計算アルゴリズム"""
employment_seekers = [s for s in group_data if s['seeks_employment']]
total_seekers = len(employment_seekers)
if total_seekers == 0:
return {'overall': 0, 'professional': 0, 'non_professional': 0}
employed = [s for s in employment_seekers if s['employed']]
professional_employed = [s for s in employed if s['category'] == 'professional']
non_professional_employed = [s for s in employed if s['category'] == 'non_professional']
return {
'overall': (len(employed) / total_seekers) * 100,
'professional': (len(professional_employed) / total_seekers) * 100,
'non_professional': (len(non_professional_employed) / total_seekers) * 100
}