Bu bölmədə CAT sistemlərinin müxtəlif qabiliyyət səviyyələrində necə performans göstərdiyini ətraflı təhlil edəcəyik. Qabiliyyət səviyyəsinə görə analiz CAT sistemlərinin ədalətliliyi və effektivliyini qiymətləndirmək üçün kritik əhəmiyyət daşıyır.
Bu analizdə qabiliyyət səviyyələrini 4 əsas qrupa bölürük: -
Aşağı qabiliyyət: θ < -1 - Orta-aşağı
qabiliyyət: -1 ≤ θ < 0
- Orta-yüksək qabiliyyət: 0 ≤ θ < 1 - Yüksək
qabiliyyət: θ ≥ 1
# Nümunə test məlumatları yaratmaq
set.seed(12345)
n_examinees <- 500
# Qabiliyyət səviyyələrinin simulyasiyası
true_theta <- rnorm(n_examinees, mean = 0, sd = 1.2)
# Qiymətləndirmə xətasının simulyasiyası (qabiliyyət səviyyəsinə görə dəyişir)
error_variance <- ifelse(abs(true_theta) > 1.5, 0.35, 0.25)
estimation_error <- rnorm(n_examinees, mean = 0, sd = error_variance)
estimated_theta <- true_theta + estimation_error
# Standart xəta (ekstrem qabiliyyətlərdə daha yüksək)
base_se <- 0.25 + 0.1 * (abs(true_theta) / 2)
standard_error <- pmax(0.15, base_se + rnorm(n_examinees, 0, 0.05))
# İdarə edilən item sayı (ekstrem qabiliyyətlərdə daha çox)
base_items <- 20
item_adjustment <- pmax(0, floor(3 * abs(true_theta - 0)))
items_administered <- base_items + item_adjustment + sample(-3:5, n_examinees, replace = TRUE)
items_administered <- pmax(8, pmin(40, items_administered))
# Bias hesablanması
bias <- estimated_theta - true_theta
# Effektivlik göstəricisi
efficiency <- 1 / (standard_error * sqrt(items_administered))
# Məlumat çərçivəsinin yaradılması
results_summary <- data.frame(
examinee_id = 1:n_examinees,
true_theta = true_theta,
estimated_theta = estimated_theta,
estimation_error = abs(estimation_error),
standard_error = standard_error,
items_administered = items_administered,
bias = bias,
efficiency = efficiency
)
cat("=== TEST MƏLUMATLARI HAZIRLANDI ===\n")
## === TEST MƏLUMATLARI HAZIRLANDI ===
## Test alıcı sayı: 500
## Həqiqi θ aralığı: -3.1 - 3.3
## Orta test uzunluğu: 23.3 item
# Qabiliyyət səviyyələrinə görə performans analizi
analyze_by_ability_level <- function(results_df) {
# Qabiliyyət qrupları
results_df$ability_group <- cut(results_df$true_theta,
breaks = c(-Inf, -1, 0, 1, Inf),
labels = c("Aşağı", "Orta-Aşağı", "Orta-Yüksək", "Yüksək"))
# Qruplara görə analiz
group_analysis <- results_df %>%
group_by(ability_group) %>%
summarise(
count = n(),
mean_theta = round(mean(true_theta), 2),
mean_items = round(mean(items_administered), 2),
mean_error = round(mean(estimation_error), 3),
mean_se = round(mean(standard_error), 3),
mean_bias = round(mean(bias), 3),
correlation = round(cor(true_theta, estimated_theta), 3),
efficiency = round(mean(efficiency), 3),
.groups = 'drop'
)
cat("=== QABİLİYYƏT SƏVİYYƏLƏRİNƏ GÖRƏ ANALİZ ===\n\n")
cat("📊 QRUP STATİSTİKALARI:\n")
print(group_analysis)
cat("\n")
# Qruplar arası fərqlərin qiymətləndirməsi
cat("📈 QRUPLAR ARASI MÜQAYISƏ:\n")
# ANOVA testləri
error_anova <- aov(estimation_error ~ ability_group, data = results_df)
items_anova <- aov(items_administered ~ ability_group, data = results_df)
se_anova <- aov(standard_error ~ ability_group, data = results_df)
cat("Qiymətləndirmə xətası ANOVA p-value:",
format.pval(summary(error_anova)[[1]][["Pr(>F)"]][1]), "\n")
cat("Test uzunluğu ANOVA p-value:",
format.pval(summary(items_anova)[[1]][["Pr(>F)"]][1]), "\n")
cat("Standart xəta ANOVA p-value:",
format.pval(summary(se_anova)[[1]][["Pr(>F)"]][1]), "\n\n")
return(list(data = results_df, analysis = group_analysis))
}
# Analizi həyata keçirmək
ability_results <- analyze_by_ability_level(results_summary)
## === QABİLİYYƏT SƏVİYYƏLƏRİNƏ GÖRƏ ANALİZ ===
##
## 📊 QRUP STATİSTİKALARI:
## # A tibble: 4 × 9
## ability_group count mean_theta mean_items mean_error mean_se mean_bias
## <fct> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Aşağı 91 -1.65 25.8 0.208 0.327 0.006
## 2 Orta-Aşağı 137 -0.46 22.1 0.208 0.268 0.01
## 3 Orta-Yüksək 172 0.51 21.7 0.206 0.275 -0.019
## 4 Yüksək 100 1.74 25.7 0.241 0.339 0.027
## # ℹ 2 more variables: correlation <dbl>, efficiency <dbl>
##
## 📈 QRUPLAR ARASI MÜQAYISƏ:
## Qiymətləndirmə xətası ANOVA p-value: 0.35168
## Test uzunluğu ANOVA p-value: < 2.22e-16
## Standart xəta ANOVA p-value: < 2.22e-16
# Qabiliyyət qruplarına görə vizualizasiyalar
create_ability_visualizations <- function(results_data) {
# 1. Qiymətləndirmə xətası
p1 <- ggplot(results_data, aes(x = ability_group, y = estimation_error, fill = ability_group)) +
geom_boxplot(alpha = 0.7) +
geom_jitter(width = 0.2, alpha = 0.3, size = 0.8) +
scale_fill_viridis_d() +
labs(title = "Qabiliyyət Qruplarına Görə Qiymətləndirmə Xətası",
x = "Qabiliyyət Qrupu", y = "Qiymətləndirmə Xətası") +
theme_minimal() +
theme(legend.position = "none")
# 2. Test uzunluğu
p2 <- ggplot(results_data, aes(x = ability_group, y = items_administered, fill = ability_group)) +
geom_violin(alpha = 0.6) +
geom_boxplot(width = 0.3, alpha = 0.8) +
scale_fill_viridis_d() +
labs(title = "Qabiliyyət Qruplarına Görə Test Uzunluğu",
x = "Qabiliyyət Qrupu", y = "İdarə Edilən Item Sayı") +
theme_minimal() +
theme(legend.position = "none")
# 3. Standart xəta
p3 <- ggplot(results_data, aes(x = ability_group, y = standard_error, fill = ability_group)) +
geom_boxplot(alpha = 0.7) +
geom_hline(yintercept = 0.3, color = "red", linetype = "dashed", size = 1) +
scale_fill_viridis_d() +
labs(title = "Qabiliyyət Qruplarına Görə Standart Xəta",
x = "Qabiliyyət Qrupu", y = "Standart Xəta") +
theme_minimal() +
theme(legend.position = "none") +
annotate("text", x = 4, y = 0.32, label = "SE = 0.3",
color = "red", hjust = 1, size = 3)
# 4. Bias təhlili
p4 <- ggplot(results_data, aes(x = ability_group, y = bias, fill = ability_group)) +
geom_boxplot(alpha = 0.7) +
geom_hline(yintercept = 0, color = "black", linetype = "dashed") +
scale_fill_viridis_d() +
labs(title = "Qabiliyyət Qruplarına Görə Bias",
x = "Qabiliyyət Qrupu", y = "Bias (Qiymətləndirilmiş - Həqiqi)") +
theme_minimal() +
theme(legend.position = "none")
return(list(error = p1, items = p2, se = p3, bias = p4))
}
# Vizualizasiyaları yaratmaq
plots <- create_ability_visualizations(ability_results$data)
# Plotları göstərmək
grid.arrange(plots$error, plots$items, ncol = 2)
# İrəliləmiş qabiliyyət səviyyəli analiz
perform_advanced_analysis <- function(results_data, group_stats) {
cat("=== İRƏLİLƏMİş ANALİZ ===\n\n")
# 1. Effektivlik analizi
cat("⚡ EFFEKTİVLİK ANALİZİ:\n")
efficiency_summary <- results_data %>%
group_by(ability_group) %>%
summarise(
mean_efficiency = round(mean(efficiency), 4),
median_efficiency = round(median(efficiency), 4),
efficiency_range = paste0(round(min(efficiency), 4), " - ",
round(max(efficiency), 4)),
.groups = 'drop'
)
print(efficiency_summary)
cat("\n")
# 2. Precision analizi
cat("🎯 PRECİSİON ANALİZİ:\n")
precision_threshold <- 0.3
results_data$precision_met <- results_data$standard_error <= precision_threshold
precision_summary <- results_data %>%
group_by(ability_group) %>%
summarise(
total_examinees = n(),
precision_met = sum(precision_met),
precision_rate = round(mean(precision_met) * 100, 1),
.groups = 'drop'
)
print(precision_summary)
cat("\n")
# 3. Validity analizi
cat("✓ VALİDİTY ANALİZİ:\n")
validity_summary <- results_data %>%
group_by(ability_group) %>%
summarise(
correlation = round(cor(true_theta, estimated_theta), 3),
rmse = round(sqrt(mean((estimated_theta - true_theta)^2)), 3),
mae = round(mean(abs(estimated_theta - true_theta)), 3),
.groups = 'drop'
)
print(validity_summary)
cat("\n")
# 4. Fairness qiymətləndirməsi
cat("⚖️ ƏDALƏTLİLİK QİYMƏTLƏNDİRMƏSİ:\n")
overall_mean_error <- mean(results_data$estimation_error)
overall_mean_items <- mean(results_data$items_administered)
overall_mean_se <- mean(results_data$standard_error)
fairness_metrics <- group_stats %>%
mutate(
error_deviation = abs(mean_error - overall_mean_error),
items_deviation = abs(mean_items - overall_mean_items),
se_deviation = abs(mean_se - overall_mean_se),
bias_magnitude = abs(mean_bias)
) %>%
select(ability_group, error_deviation, items_deviation, se_deviation, bias_magnitude)
print(fairness_metrics)
# Fairness skoru hesablanması
fairness_score <- mean(c(
max(fairness_metrics$error_deviation),
max(fairness_metrics$items_deviation) / 10, # Scale adjustment
max(fairness_metrics$se_deviation),
max(fairness_metrics$bias_magnitude)
))
cat("\nÜmumi Ədalətlilik Skoru:", round(fairness_score, 3), "(aşağı daha yaxşı)\n")
if (fairness_score < 0.1) {
cat("✅ Ədalətlilik: ƏLA\n")
} else if (fairness_score < 0.2) {
cat("✅ Ədalətlilik: YAXŞI\n")
} else if (fairness_score < 0.3) {
cat("⚠️ Ədalətlilik: ORTA\n")
} else {
cat("❌ Ədalətlilik: TƏKMİLLƏŞDİRMƏ LAZIM\n")
}
return(list(
efficiency = efficiency_summary,
precision = precision_summary,
validity = validity_summary,
fairness = fairness_metrics,
fairness_score = fairness_score
))
}
# İrəliləmiş analizi həyata keçirmək
advanced_results <- perform_advanced_analysis(ability_results$data, ability_results$analysis)
## === İRƏLİLƏMİş ANALİZ ===
##
## ⚡ EFFEKTİVLİK ANALİZİ:
## # A tibble: 4 × 4
## ability_group mean_efficiency median_efficiency efficiency_range
## <fct> <dbl> <dbl> <chr>
## 1 Aşağı 0.626 0.602 0.4018 - 0.9958
## 2 Orta-Aşağı 0.829 0.804 0.5664 - 1.3901
## 3 Orta-Yüksək 0.817 0.772 0.4985 - 1.4907
## 4 Yüksək 0.603 0.598 0.3966 - 0.9232
##
## 🎯 PRECİSİON ANALİZİ:
## # A tibble: 4 × 4
## ability_group total_examinees precision_met precision_rate
## <fct> <int> <int> <dbl>
## 1 Aşağı 91 26 2600
## 2 Orta-Aşağı 137 94 9400
## 3 Orta-Yüksək 172 120 12000
## 4 Yüksək 100 25 2500
##
## ✓ VALİDİTY ANALİZİ:
## # A tibble: 4 × 4
## ability_group correlation rmse mae
## <fct> <dbl> <dbl> <dbl>
## 1 Aşağı 0.904 0.265 0.208
## 2 Orta-Aşağı 0.709 0.257 0.208
## 3 Orta-Yüksək 0.701 0.263 0.206
## 4 Yüksək 0.882 0.311 0.241
##
## ⚖️ ƏDALƏTLİLİK QİYMƏTLƏNDİRMƏSİ:
## # A tibble: 4 × 5
## ability_group error_deviation items_deviation se_deviation bias_magnitude
## <fct> <dbl> <dbl> <dbl> <dbl>
## 1 Aşağı 0.00617 2.44 0.0316 0.006
## 2 Orta-Aşağı 0.00617 1.24 0.0274 0.01
## 3 Orta-Yüksək 0.00817 1.66 0.0204 0.019
## 4 Yüksək 0.0268 2.36 0.0436 0.027
##
## Ümumi Ədalətlilik Skoru: 0.085 (aşağı daha yaxşı)
## ✅ Ədalətlilik: ƏLA
# Effektivlik və precision plotları
create_advanced_plots <- function(results_data) {
# Precision achievement rates
precision_summary <- results_data %>%
group_by(ability_group) %>%
summarise(
total = n(),
precision_met = sum(standard_error <= 0.3),
precision_rate = round(mean(standard_error <= 0.3) * 100, 1),
.groups = 'drop'
)
p1 <- ggplot(precision_summary, aes(x = ability_group, y = precision_rate, fill = ability_group)) +
geom_col(alpha = 0.8) +
geom_text(aes(label = paste0(precision_rate, "%\n(", precision_met, "/", total, ")")),
vjust = 0.5, size = 3.5) +
scale_fill_viridis_d() +
labs(title = "Qabiliyyət Qruplarına Görə Precision Achievement",
subtitle = "SE ≤ 0.3 kriteriasını qarşılayan test alıcıları",
x = "Qabiliyyət Qrupu", y = "Precision Rate (%)") +
theme_minimal() +
theme(legend.position = "none") +
ylim(0, 100)
# Effektivlik müqayisəsi
p2 <- ggplot(results_data, aes(x = ability_group, y = efficiency, fill = ability_group)) +
geom_boxplot(alpha = 0.7) +
scale_fill_viridis_d() +
scale_y_log10() +
labs(title = "Qabiliyyət Qruplarına Görə Test Effektivliyi",
subtitle = "Effektivlik = 1/(SE × √Items) - Log scale",
x = "Qabiliyyət Qrupu", y = "Effektivlik (log scale)") +
theme_minimal() +
theme(legend.position = "none")
return(list(precision = p1, efficiency = p2))
}
advanced_plots <- create_advanced_plots(ability_results$data)
grid.arrange(advanced_plots$precision, advanced_plots$efficiency, ncol = 2)
# Tövsiyələr və nəticələr
generate_recommendations <- function(group_analysis, advanced_results) {
cat("=== TOVSİYƏLƏR VƏ NƏTİCƏLƏR ===\n\n")
# Performans qiymətləndirməsi
cat("📊 PERFORMANS QİYMƏTLƏNDİRMƏSİ:\n")
max_error_group <- group_analysis$ability_group[which.max(group_analysis$mean_error)]
min_error_group <- group_analysis$ability_group[which.min(group_analysis$mean_error)]
cat("• Ən yüksək qiymətləndirmə xətası:", max_error_group, "qrupunda\n")
cat("• Ən aşağı qiymətləndirmə xətası:", min_error_group, "qrupunda\n")
error_ratio <- max(group_analysis$mean_error) / min(group_analysis$mean_error)
cat("• Qruplar arası xəta nisbəti:", round(error_ratio, 2), ":1\n\n")
# Prioritet tövsiyələri
cat("💡 PRİORİTET TOVSİYƏLƏRİ:\n\n")
if (error_ratio > 2) {
cat("🔴 YÜKSƏK PRİORİTET:\n")
cat(" • Qruplar arası performans fərqlərini azaltmaq lazımdır\n")
cat(" •", max_error_group, "qrupu üçün xüsusi optimizasiya tələb olunur\n\n")
}
if (advanced_results$fairness_score > 0.2) {
cat("🟡 ORTA PRİORİTET:\n")
cat(" • Ədalətlilik göstəricilərini yaxşılaşdırmaq lazımdır\n")
cat(" • Test alqoritmində bias azaldılması tövsiyə olunur\n\n")
}
# Müsbət nəticələr
cat("✅ MÜSBəT NƏTİCƏLƏR:\n")
high_correlation_groups <- group_analysis$ability_group[group_analysis$correlation > 0.85]
if (length(high_correlation_groups) > 0) {
cat(" • Yüksək validity:", paste(high_correlation_groups, collapse = ", "), "qruplarında\n")
}
overall_precision <- mean(advanced_results$precision$precision_rate)
if (overall_precision > 75) {
cat(" • Yaxşı precision achievement: ümumi", round(overall_precision, 1), "%\n")
}
cat("\n")
# Ümumi qiymət
cat("🏆 ÜMUMİ QİYMƏT:\n")
success_indicators <- c(
error_ratio < 1.5, # Low error variation
advanced_results$fairness_score < 0.2, # Good fairness
overall_precision > 80, # High precision
min(group_analysis$correlation) > 0.8 # High validity
)
success_score <- sum(success_indicators)
if (success_score >= 3) {
cat("✅ SİSTEM YAXŞI PERFORMANS GÖSTƏRİR\n")
cat("Kiçik təkmilləşdirmələrlə mükəmməl nəticələr əldə edilə bilər.\n")
} else if (success_score >= 2) {
cat("⚠️ ORTA PERFORMANS\n")
cat("Müəyyən sahələrdə əhəmiyyətli təkmilləşdirmələr lazımdır.\n")
} else {
cat("❌ AŞAĞI PERFORMANS\n")
cat("Sistem yenidən nəzərdən keçirilməli və fundamental dəyişikliklər tələb olunur.\n")
}
return(success_score)
}
# Tövsiyələri generasiya etmək
final_score <- generate_recommendations(ability_results$analysis, advanced_results)
## === TOVSİYƏLƏR VƏ NƏTİCƏLƏR ===
##
## 📊 PERFORMANS QİYMƏTLƏNDİRMƏSİ:
## • Ən yüksək qiymətləndirmə xətası: 4 qrupunda
## • Ən aşağı qiymətləndirmə xətası: 3 qrupunda
## • Qruplar arası xəta nisbəti: 1.17 :1
##
## 💡 PRİORİTET TOVSİYƏLƏRİ:
##
## ✅ MÜSBəT NƏTİCƏLƏR:
## • Yüksək validity: Aşağı, Yüksək qruplarında
## • Yaxşı precision achievement: ümumi 6625 %
##
## 🏆 ÜMUMİ QİYMƏT:
## ✅ SİSTEM YAXŞI PERFORMANS GÖSTƏRİR
## Kiçik təkmilləşdirmələrlə mükəmməl nəticələr əldə edilə bilər.
Bu analizdə CAT sisteminin müxtəlif qabiliyyət səviyyələrində performansını ətraflı qiymətləndirdik:
Qeyd: Bu analiz CAT sistemlərinin qabiliyyət səviyyələrinə görə performansını qiymətləndirmək üçün hərtərəfli metodoloji çərçivə təqdim edir.