Bu bölmədə CAT simulyasiya nəticələrinin hərtərəfli təhlili üçün kompleks analiz funksiyaları yaradacağıq. Bu funksiyalar CAT sistemlərinin performansını müxtəlif aspektlərdən qiymətləndirməyə imkan verir.
CAT analiz funksiyaları aşağıdakı məqsədlərə xidmət edir:
Əvvəl köməkçi funksiyalarımızı yükləyək:
# Əvvəlki bölmələrdən CAT funksiyaları
source_cat_functions <- function() {
cat("CAT funksiyaları yüklənir...\n")
# Bu simvolik funksiyalar - real implementasiyada əvvəlki bölmələrdən yüklənər
# Burada sadə versiyalar yaradırıq
# Dummy data generator
generate_dummy_cat_results <- function(n_subjects = 50) {
set.seed(12345)
results <- list()
for (i in 1:n_subjects) {
true_theta <- rnorm(1, 0, 1)
final_theta <- true_theta + rnorm(1, 0, 0.3) # Qiymətləndirmə xətası ilə
final_se <- runif(1, 0.2, 0.4)
items_count <- sample(5:25, 1)
accuracy <- plogis(true_theta * 0.5 + 0.2) + rnorm(1, 0, 0.1)
accuracy <- pmax(0, pmin(1, accuracy))
results[[i]] <- list(
true_theta = true_theta,
final_theta = final_theta,
final_se = final_se,
items_count = items_count,
accuracy = accuracy,
estimation_error = abs(final_theta - true_theta),
administered_items = sample(1:100, items_count),
responses = rbinom(items_count, 1, accuracy)
)
}
return(results)
}
return(generate_dummy_cat_results)
}
generate_dummy_cat_results <- source_cat_functions()
## CAT funksiyaları yüklənir...
# Test məlumatları yaratmaq
cat_results <- generate_dummy_cat_results(50)
examinees <- data.frame(
id = 1:50,
true_theta = sapply(cat_results, function(x) x$true_theta)
)
cat("Test məlumatları hazır: ", length(cat_results), "simulyasiya nəticəsi\n")
## Test məlumatları hazır: 50 simulyasiya nəticəsi
# Simulyasiya nəticələrini analiz etmək üçün əsas funksiya
analyze_cat_results <- function(cat_results, examinees, detailed = TRUE) {
cat("=== CAT NƏTİCƏLƏRİNİN ƏTRAFLІ ANALİZİ ===\n\n")
# Nəticələri data frame-ə çevir
results_df <- data.frame(
examinee_id = 1:length(cat_results),
true_theta = sapply(cat_results, function(x) x$true_theta),
estimated_theta = sapply(cat_results, function(x) x$final_theta),
standard_error = sapply(cat_results, function(x) x$final_se),
items_administered = sapply(cat_results, function(x) x$items_count),
accuracy = sapply(cat_results, function(x) x$accuracy),
estimation_error = sapply(cat_results, function(x) x$estimation_error)
)
# Hesablanmış dəyişənlər
results_df$bias <- results_df$estimated_theta - results_df$true_theta
results_df$absolute_bias <- abs(results_df$bias)
results_df$efficiency <- 1 / (results_df$standard_error * results_df$items_administered)
results_df$precision_met <- results_df$standard_error <= 0.3
# Qabiliyyət səviyyə 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-Yuxarı", "Yuxarı"))
cat("📊 ƏSAS STATİSTİKALAR:\n")
cat("Test edilən şəxs sayı:", nrow(results_df), "\n")
cat("Orta tapşırıq sayı:", round(mean(results_df$items_administered), 2), "±",
round(sd(results_df$items_administered), 2), "\n")
cat("Tapşırıq sayı aralığı:", min(results_df$items_administered), "-",
max(results_df$items_administered), "\n")
cat("Median tapşırıq sayı:", median(results_df$items_administered), "\n\n")
# Dəqiqlik analizləri
cat("🎯 DƏQİQLİK ANALİZİ:\n")
mae <- mean(results_df$estimation_error)
rmse <- sqrt(mean(results_df$estimation_error^2))
mean_bias <- mean(results_df$bias)
bias_sd <- sd(results_df$bias)
cat("Mean Absolute Error (MAE):", round(mae, 3), "\n")
cat("Root Mean Square Error (RMSE):", round(rmse, 3), "\n")
cat("Orta bias:", round(mean_bias, 3), "\n")
cat("Bias standart sapması:", round(bias_sd, 3), "\n")
cat("95% Error Confidence Interval:", round(quantile(results_df$estimation_error, c(0.025, 0.975)), 3), "\n\n")
# Korrelyasiya analizləri
cat("✅ VALİDLİK ANALİZİ:\n")
correlation <- cor(results_df$true_theta, results_df$estimated_theta)
correlation_ci <- cor.test(results_df$true_theta, results_df$estimated_theta)$conf.int
cat("Həqiqi vs Qiymətləndirilmiş θ korrelyasiyası:", round(correlation, 3), "\n")
cat("95% Güven intervalı:", round(correlation_ci, 3), "\n")
cat("Determinasiya əmsalı (R²):", round(correlation^2, 3), "\n")
# Regression analysis for bias
bias_model <- lm(bias ~ true_theta, data = results_df)
bias_slope <- coef(bias_model)[2]
bias_intercept <- coef(bias_model)[1]
cat("Bias regression: bias =", round(bias_intercept, 3), "+", round(bias_slope, 3), "* true_theta\n")
cat("Bias trend p-value:", format.pval(summary(bias_model)$coefficients[2, 4]), "\n\n")
# Güvenilirlik
cat("🔒 GÜVENİLİRLİK ANALİZİ:\n")
reliability <- 1 - mean(results_df$standard_error^2)
mean_se <- mean(results_df$standard_error)
se_range <- range(results_df$standard_error)
cat("Orta güvenilirlik qiyməti:", round(reliability, 3), "\n")
cat("Orta standart xəta:", round(mean_se, 3), "\n")
cat("SE aralığı:", round(se_range, 3), "\n")
cat("SE ≤ 0.3 nisbəti:", round(mean(results_df$precision_met) * 100, 1), "%\n\n")
# Səmərəlilik
cat("⚡ SƏMƏRƏLİLİK ANALİZİ:\n")
efficiency_30_item <- 30 / mean(results_df$items_administered)
mean_efficiency <- mean(results_df$efficiency)
cat("Səmərəlilik nisbəti (30 itemlə müqayisədə):", round(efficiency_30_item, 2), "\n")
cat("Orta effektivlik indeksi:", round(mean_efficiency, 3), "\n")
# Item utilization efficiency
all_items <- unlist(lapply(cat_results, function(x) x$administered_items))
unique_items <- length(unique(all_items))
total_administrations <- length(all_items)
cat("İstifadə edilən unikal item sayı:", unique_items, "\n")
cat("Toplam item administration sayı:", total_administrations, "\n")
cat("Orta item istifadə tezliyi:", round(total_administrations / unique_items, 1), "\n\n")
# Dəqiqlik səviyyələri
cat("📈 DƏQİQLİK SƏVİYYƏLƏRİ:\n")
high_precision <- sum(results_df$estimation_error < 0.3)
medium_precision <- sum(results_df$estimation_error >= 0.3 & results_df$estimation_error < 0.5)
low_precision <- sum(results_df$estimation_error >= 0.5)
cat("Yüksək dəqiqlik (xəta < 0.3):", high_precision,
"(", round(high_precision/nrow(results_df)*100, 1), "%)\n")
cat("Orta dəqiqlik (0.3 ≤ xəta < 0.5):", medium_precision,
"(", round(medium_precision/nrow(results_df)*100, 1), "%)\n")
cat("Aşağı dəqiqlik (xəta ≥ 0.5):", low_precision,
"(", round(low_precision/nrow(results_df)*100, 1), "%)\n\n")
# Qabiliyyət qruplarına görə analiz
if (detailed) {
cat("👥 QABİLİYYƏT QRUPLARINA GÖRƏ TƏHLİL:\n")
group_analysis <- results_df %>%
group_by(ability_group) %>%
summarise(
N = n(),
Mean_Items = round(mean(items_administered), 1),
Mean_SE = round(mean(standard_error), 3),
Mean_Error = round(mean(estimation_error), 3),
RMSE = round(sqrt(mean(estimation_error^2)), 3),
Bias = round(mean(bias), 3),
Precision_Rate = round(mean(precision_met) * 100, 1),
.groups = 'drop'
)
print(group_analysis)
}
return(list(
results_df = results_df,
summary_stats = list(
mae = mae,
rmse = rmse,
bias = mean_bias,
bias_sd = bias_sd,
correlation = correlation,
reliability = reliability,
efficiency = efficiency_30_item
),
group_analysis = if(detailed) group_analysis else NULL
))
}
# Analizin aparılması
analysis_results <- analyze_cat_results(cat_results, examinees, detailed = TRUE)
## === CAT NƏTİCƏLƏRİNİN ƏTRAFLІ ANALİZİ ===
##
## 📊 ƏSAS STATİSTİKALAR:
## Test edilən şəxs sayı: 50
## Orta tapşırıq sayı: 14.22 ± 6.48
## Tapşırıq sayı aralığı: 5 - 25
## Median tapşırıq sayı: 13.5
##
## 🎯 DƏQİQLİK ANALİZİ:
## Mean Absolute Error (MAE): 0.254
## Root Mean Square Error (RMSE): 0.333
## Orta bias: 0
## Bias standart sapması: 0.336
## 95% Error Confidence Interval: 0.006 0.739
##
## ✅ VALİDLİK ANALİZİ:
## Həqiqi vs Qiymətləndirilmiş θ korrelyasiyası: 0.944
## 95% Güven intervalı: 0.903 0.968
## Determinasiya əmsalı (R²): 0.892
## Bias regression: bias = 0 + 0.038 * true_theta
## Bias trend p-value: 0.46545
##
## 🔒 GÜVENİLİRLİK ANALİZİ:
## Orta güvenilirlik qiyməti: 0.895
## Orta standart xəta: 0.318
## SE aralığı: 0.205 0.399
## SE ≤ 0.3 nisbəti: 42 %
##
## ⚡ SƏMƏRƏLİLİK ANALİZİ:
## Səmərəlilik nisbəti (30 itemlə müqayisədə): 2.11
## Orta effektivlik indeksi: 0.292
## İstifadə edilən unikal item sayı: 100
## Toplam item administration sayı: 711
## Orta item istifadə tezliyi: 7.1
##
## 📈 DƏQİQLİK SƏVİYYƏLƏRİ:
## Yüksək dəqiqlik (xəta < 0.3): 34 ( 68 %)
## Orta dəqiqlik (0.3 ≤ xəta < 0.5): 9 ( 18 %)
## Aşağı dəqiqlik (xəta ≥ 0.5): 7 ( 14 %)
##
## 👥 QABİLİYYƏT QRUPLARINA GÖRƏ TƏHLİL:
## # A tibble: 4 × 8
## ability_group N Mean_Items Mean_SE Mean_Error RMSE Bias Precision_Rate
## <fct> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Aşağı 9 11.2 0.332 0.334 0.391 -0.209 22.2
## 2 Orta-Aşağı 16 16.6 0.318 0.222 0.346 0.093 50
## 3 Orta-Yuxarı 18 14.1 0.318 0.278 0.321 0.023 38.9
## 4 Yuxarı 7 13.1 0.301 0.159 0.237 -0.004 57.1
# Comprehensive performance analysis
perform_comprehensive_analysis <- function(results_df, cat_results) {
cat("=== İRƏLİLƏMİş PERFORMANS ANALİZİ ===\n\n")
# 1. Distribution Analysis
cat("📊 PAYLANMA ANALİZİ:\n")
# Normality tests
theta_shapiro <- shapiro.test(results_df$true_theta)
error_shapiro <- shapiro.test(results_df$estimation_error)
cat("Həqiqi θ normal paylanma testi p-value:", format.pval(theta_shapiro$p.value), "\n")
cat("Qiymətləndirmə xətası normal paylanma testi p-value:", format.pval(error_shapiro$p.value), "\n")
# Skewness and kurtosis
theta_skew <- moments::skewness(results_df$true_theta)
theta_kurt <- moments::kurtosis(results_df$true_theta)
error_skew <- moments::skewness(results_df$estimation_error)
error_kurt <- moments::kurtosis(results_df$estimation_error)
cat("Həqiqi θ skewness:", round(theta_skew, 3), ", kurtosis:", round(theta_kurt, 3), "\n")
cat("Xəta skewness:", round(error_skew, 3), ", kurtosis:", round(error_kurt, 3), "\n\n")
# 2. Outlier Analysis
cat("🔍 OUTLIER ANALİZİ:\n")
# IQR method for outliers
error_q1 <- quantile(results_df$estimation_error, 0.25)
error_q3 <- quantile(results_df$estimation_error, 0.75)
error_iqr <- error_q3 - error_q1
error_outliers <- which(results_df$estimation_error > error_q3 + 1.5 * error_iqr)
items_q1 <- quantile(results_df$items_administered, 0.25)
items_q3 <- quantile(results_df$items_administered, 0.75)
items_iqr <- items_q3 - items_q1
items_outliers <- which(results_df$items_administered > items_q3 + 1.5 * items_iqr |
results_df$items_administered < items_q1 - 1.5 * items_iqr)
cat("Qiymətləndirmə xətası outliers:", length(error_outliers), "/", nrow(results_df), "\n")
cat("Test uzunluğu outliers:", length(items_outliers), "/", nrow(results_df), "\n")
if (length(error_outliers) > 0) {
cat("Ən böyük xətalar:", round(sort(results_df$estimation_error, decreasing = TRUE)[1:min(3, length(error_outliers))], 3), "\n")
}
cat("\n")
# 3. Precision Analysis by Subgroups
cat("🎯 ALT QRUPLARDA PRECİSİON ANALİZİ:\n")
# Create more detailed ability groups
results_df$detailed_ability <- cut(results_df$true_theta,
breaks = seq(-3, 3, 1),
include.lowest = TRUE)
precision_by_ability <- results_df %>%
filter(!is.na(detailed_ability)) %>%
group_by(detailed_ability) %>%
summarise(
N = n(),
Mean_Error = round(mean(estimation_error), 3),
SD_Error = round(sd(estimation_error), 3),
Precision_Rate = round(mean(standard_error <= 0.3) * 100, 1),
.groups = 'drop'
) %>%
filter(N >= 3) # Minimum 3 observations per group
if (nrow(precision_by_ability) > 0) {
print(precision_by_ability)
}
cat("\n")
# 4. Efficiency Analysis
cat("⚡ EFFEKTİVLİK TƏHLİLİ:\n")
# Efficiency metrics
results_df$information_gain <- 1 / results_df$standard_error^2
results_df$efficiency_ratio <- results_df$information_gain / results_df$items_administered
cat("Orta information gain:", round(mean(results_df$information_gain), 2), "\n")
cat("Orta efficiency ratio:", round(mean(results_df$efficiency_ratio), 3), "\n")
# Most and least efficient examinees
most_efficient <- which.max(results_df$efficiency_ratio)
least_efficient <- which.min(results_df$efficiency_ratio)
cat("Ən səmərəli test alıcısı:", most_efficient,
"(Ratio:", round(results_df$efficiency_ratio[most_efficient], 3), ")\n")
cat("Ən az səmərəli test alıcısı:", least_efficient,
"(Ratio:", round(results_df$efficiency_ratio[least_efficient], 3), ")\n\n")
# 5. Item Usage Analysis
cat("📚 ITEM İSTİFADƏ ANALİZİ:\n")
# Extract item usage statistics
all_administered_items <- unlist(lapply(cat_results, function(x) x$administered_items))
item_usage_table <- table(all_administered_items)
cat("Ümumi item administrations:", length(all_administered_items), "\n")
cat("Unikal items istifadə edilib:", length(item_usage_table), "\n")
cat("Orta item istifadə tezliyi:", round(mean(item_usage_table), 2), "\n")
cat("Maksimum item istifadə tezliyi:", max(item_usage_table), "\n")
cat("Minimum item istifadə tezliyi:", min(item_usage_table), "\n")
# Most frequently used items
top_items <- head(sort(item_usage_table, decreasing = TRUE), 5)
cat("Ən çox istifadə edilən 5 item:\n")
for (i in 1:length(top_items)) {
cat(" Item", names(top_items)[i], ":", top_items[i], "dəfə\n")
}
cat("\n")
return(list(
outliers = list(error = error_outliers, items = items_outliers),
precision_by_ability = precision_by_ability,
item_usage = item_usage_table,
efficiency_metrics = results_df[c("information_gain", "efficiency_ratio")]
))
}
# İrəliləmiş analizin aparılması
advanced_analysis <- perform_comprehensive_analysis(results_summary, cat_results)
## === İRƏLİLƏMİş PERFORMANS ANALİZİ ===
##
## 📊 PAYLANMA ANALİZİ:
## Həqiqi θ normal paylanma testi p-value: 0.37067
## Qiymətləndirmə xətası normal paylanma testi p-value: 0.00021346
## Həqiqi θ skewness: -0.237 , kurtosis: 2.23
## Xəta skewness: 1.276 , kurtosis: 4.628
##
## 🔍 OUTLIER ANALİZİ:
## Qiymətləndirmə xətası outliers: 1 / 50
## Test uzunluğu outliers: 0 / 50
## Ən böyük xətalar: 0.999
##
## 🎯 ALT QRUPLARDA PRECİSİON ANALİZİ:
## # A tibble: 4 × 5
## detailed_ability N Mean_Error SD_Error Precision_Rate
## <fct> <int> <dbl> <dbl> <dbl>
## 1 (-2,-1] 9 0.334 0.214 22.2
## 2 (-1,0] 16 0.222 0.273 50
## 3 (0,1] 18 0.278 0.164 38.9
## 4 (1,2] 7 0.159 0.191 57.1
##
## ⚡ EFFEKTİVLİK TƏHLİLİ:
## Orta information gain: 10.99
## Orta efficiency ratio: 0.987
## Ən səmərəli test alıcısı: 44 (Ratio: 3.004 )
## Ən az səmərəli test alıcısı: 5 (Ratio: 0.297 )
##
## 📚 ITEM İSTİFADƏ ANALİZİ:
## Ümumi item administrations: 711
## Unikal items istifadə edilib: 100
## Orta item istifadə tezliyi: 7.11
## Maksimum item istifadə tezliyi: 12
## Minimum item istifadə tezliyi: 2
## Ən çox istifadə edilən 5 item:
## Item 7 : 12 dəfə
## Item 10 : 12 dəfə
## Item 41 : 12 dəfə
## Item 63 : 12 dəfə
## Item 83 : 12 dəfə
# Bias analysis function
analyze_bias_patterns <- function(results_df) {
cat("=== BIAS PATTERN ANALİZİ ===\n\n")
# Overall bias statistics
cat("📈 ÜMUMİ BIAS STATİSTİKALARI:\n")
cat("Orta bias:", round(mean(results_df$bias), 3), "\n")
cat("Bias standart sapması:", round(sd(results_df$bias), 3), "\n")
cat("Bias aralığı:", round(range(results_df$bias), 3), "\n")
# Test for systematic bias
bias_test <- t.test(results_df$bias, mu = 0)
cat("Sistematik bias test p-value:", format.pval(bias_test$p.value), "\n")
cat("95% Güven intervalı:", round(bias_test$conf.int, 3), "\n\n")
# Bias by ability level
cat("🎯 QABİLİYYƏT SƏVİYYƏSİNƏ GÖRƏ BIAS:\n")
bias_by_ability <- results_df %>%
group_by(ability_group) %>%
summarise(
N = n(),
Mean_Bias = round(mean(bias), 3),
SD_Bias = round(sd(bias), 3),
SE_Bias = round(sd(bias) / sqrt(n()), 3),
.groups = 'drop'
)
print(bias_by_ability)
# Test for differential bias
if (nrow(bias_by_ability) > 1) {
bias_anova <- aov(bias ~ ability_group, data = results_df)
anova_p <- summary(bias_anova)[[1]][["Pr(>F)"]][1]
cat("Ability groups arasında bias fərqi p-value:", format.pval(anova_p), "\n")
}
return(bias_by_ability)
}
# Convergence analysis function
analyze_convergence_patterns <- function(cat_results) {
cat("\n=== KONVERGENS PATTERN ANALİZİ ===\n\n")
# Extract convergence data from first few subjects
convergence_data <- data.frame()
for (i in 1:min(10, length(cat_results))) {
result <- cat_results[[i]]
# Simulated theta estimates progression (əvvəlki bölmələrdə olmalı idi)
# Burada dummy data yaradırıq
n_steps <- result$items_count
if (n_steps > 1) {
theta_progression <- cumsum(rnorm(n_steps, 0, 0.2)) / 1:n_steps + result$true_theta
se_progression <- 1 / sqrt(1:n_steps)
temp_data <- data.frame(
Subject = i,
Step = 1:n_steps,
Theta_Est = theta_progression,
SE = se_progression,
True_Theta = result$true_theta
)
convergence_data <- rbind(convergence_data, temp_data)
}
}
if (nrow(convergence_data) > 0) {
# Convergence speed analysis
convergence_summary <- convergence_data %>%
group_by(Subject) %>%
summarise(
Steps_Total = max(Step),
Final_Error = abs(last(Theta_Est) - first(True_Theta)),
Steps_to_SE_05 = min(which(SE <= 0.5), na.rm = TRUE),
Steps_to_SE_03 = min(which(SE <= 0.3), na.rm = TRUE),
.groups = 'drop'
)
# Replace infinite values with NA
convergence_summary$Steps_to_SE_05[is.infinite(convergence_summary$Steps_to_SE_05)] <- NA
convergence_summary$Steps_to_SE_03[is.infinite(convergence_summary$Steps_to_SE_03)] <- NA
cat("📊 KONVERGENS SÜRƏTİ:\n")
cat("SE ≤ 0.5-ə çatmaq üçün orta addım:",
round(mean(convergence_summary$Steps_to_SE_05, na.rm = TRUE), 1), "\n")
cat("SE ≤ 0.3-ə çatmaq üçün orta addım:",
round(mean(convergence_summary$Steps_to_SE_03, na.rm = TRUE), 1), "\n")
cat("Final orta xəta:", round(mean(convergence_summary$Final_Error), 3), "\n")
return(convergence_data)
} else {
cat("Konvergens məlumatları mövcud deyil.\n")
return(NULL)
}
}
# Fairness analysis function
analyze_fairness <- function(results_df) {
cat("\n=== ƏDALƏTLİLİK ANALİZİ ===\n\n")
# Group differences in precision
cat("🤝 QRUP FƏRQLƏRİ:\n")
fairness_stats <- results_df %>%
group_by(ability_group) %>%
summarise(
N = n(),
Mean_SE = round(mean(standard_error), 3),
SD_SE = round(sd(standard_error), 3),
Mean_Items = round(mean(items_administered), 1),
Precision_Rate = round(mean(precision_met) * 100, 1),
.groups = 'drop'
)
print(fairness_stats)
# Test for equal precision across groups
if (nrow(fairness_stats) > 1) {
se_anova <- aov(standard_error ~ ability_group, data = results_df)
se_anova_p <- summary(se_anova)[[1]][["Pr(>F)"]][1]
items_anova <- aov(items_administered ~ ability_group, data = results_df)
items_anova_p <- summary(items_anova)[[1]][["Pr(>F)"]][1]
cat("SE fərqləri p-value:", format.pval(se_anova_p), "\n")
cat("Test uzunluğu fərqləri p-value:", format.pval(items_anova_p), "\n")
}
# Differential Item Functioning simulation
cat("\n🔍 DIF SİMULYASİYASI:\n")
# Simulated DIF analysis (real implementasiyada actual DIF olacaq)
high_ability <- results_df$ability_group %in% c("Orta-Yuxarı", "Yuxarı")
low_ability <- results_df$ability_group %in% c("Aşağı", "Orta-Aşağı")
if (sum(high_ability) > 0 && sum(low_ability) > 0) {
high_acc <- mean(results_df$accuracy[high_ability], na.rm = TRUE)
low_acc <- mean(results_df$accuracy[low_ability], na.rm = TRUE)
cat("Yüksək qabiliyyət qrupu accuracy:", round(high_acc, 3), "\n")
cat("Aşağı qabiliyyət qrupu accuracy:", round(low_acc, 3), "\n")
cat("Accuracy fərqi:", round(high_acc - low_acc, 3), "\n")
}
return(fairness_stats)
}
# Specialized analizlərin aparılması
bias_analysis <- analyze_bias_patterns(results_summary)
## === BIAS PATTERN ANALİZİ ===
##
## 📈 ÜMUMİ BIAS STATİSTİKALARI:
## Orta bias: 0
## Bias standart sapması: 0.336
## Bias aralığı: -0.723 0.999
## Sistematik bias test p-value: 0.99679
## 95% Güven intervalı: -0.096 0.095
##
## 🎯 QABİLİYYƏT SƏVİYYƏSİNƏ GÖRƏ BIAS:
## # A tibble: 4 × 5
## ability_group N Mean_Bias SD_Bias SE_Bias
## <fct> <int> <dbl> <dbl> <dbl>
## 1 Aşağı 9 -0.209 0.35 0.117
## 2 Orta-Aşağı 16 0.093 0.344 0.086
## 3 Orta-Yuxarı 18 0.023 0.329 0.078
## 4 Yuxarı 7 -0.004 0.256 0.097
## Ability groups arasında bias fərqi p-value: 0.18787
##
## === KONVERGENS PATTERN ANALİZİ ===
## 📊 KONVERGENS SÜRƏTİ:
## SE ≤ 0.5-ə çatmaq üçün orta addım: 4
## SE ≤ 0.3-ə çatmaq üçün orta addım: 12
## Final orta xəta: 0.039
##
## === ƏDALƏTLİLİK ANALİZİ ===
##
## 🤝 QRUP FƏRQLƏRİ:
## # A tibble: 4 × 6
## ability_group N Mean_SE SD_SE Mean_Items Precision_Rate
## <fct> <int> <dbl> <dbl> <dbl> <dbl>
## 1 Aşağı 9 0.332 0.047 11.2 22.2
## 2 Orta-Aşağı 16 0.318 0.067 16.6 50
## 3 Orta-Yuxarı 18 0.318 0.046 14.1 38.9
## 4 Yuxarı 7 0.301 0.079 13.1 57.1
## SE fərqləri p-value: 0.77752
## Test uzunluğu fərqləri p-value: 0.24241
##
## 🔍 DIF SİMULYASİYASI:
## Yüksək qabiliyyət qrupu accuracy: 0.666
## Aşağı qabiliyyət qrupu accuracy: 0.458
## Accuracy fərqi: 0.208
# Comprehensive visualization function
create_analysis_visualizations <- function(results_df, advanced_analysis) {
# 1. Main performance dashboard
p1 <- ggplot(results_df, aes(x = true_theta, y = estimated_theta)) +
geom_point(alpha = 0.6, size = 2, color = "blue") +
geom_abline(intercept = 0, slope = 1, linetype = "dashed", color = "red", size = 1) +
geom_smooth(method = "lm", se = TRUE, color = "green") +
labs(title = "Həqiqi vs Qiymətləndirilmiş Qabiliyyət",
subtitle = paste("r =", round(cor(results_df$true_theta, results_df$estimated_theta), 3)),
x = "Həqiqi θ", y = "Qiymətləndirilmiş θ") +
theme_minimal() +
coord_equal()
# 2. Error distribution
p2 <- ggplot(results_df, aes(x = estimation_error)) +
geom_histogram(bins = 20, fill = "lightblue", color = "black", alpha = 0.7) +
geom_vline(xintercept = mean(results_df$estimation_error),
color = "red", linetype = "dashed", size = 1) +
labs(title = "Qiymətləndirmə Xətası Paylanması",
subtitle = paste("MAE =", round(mean(results_df$estimation_error), 3)),
x = "Mütləq Qiymətləndirmə Xətası", y = "Tezlik") +
theme_minimal()
# 3. Bias analysis
p3 <- ggplot(results_df, aes(x = true_theta, y = bias)) +
geom_point(alpha = 0.6, size = 2, color = "darkred") +
geom_hline(yintercept = 0, linetype = "dashed", color = "black") +
geom_smooth(method = "loess", se = TRUE, color = "blue") +
labs(title = "Bias vs Həqiqi Qabiliyyət",
subtitle = paste("Orta Bias =", round(mean(results_df$bias), 3)),
x = "Həqiqi θ", y = "Bias (Qiymətləndirməmiş - Həqiqi)") +
theme_minimal()
# 4. Test length by ability
p4 <- ggplot(results_df, aes(x = ability_group, y = items_administered, fill = ability_group)) +
geom_boxplot(alpha = 0.7) +
geom_jitter(width = 0.2, alpha = 0.5) +
labs(title = "Qabiliyyət Qruplarına Görə Test Uzunluğu",
x = "Qabiliyyət Qrupu", y = "İdarə Edilən Item Sayı",
fill = "Qrup") +
theme_minimal() +
scale_fill_viridis_d()
# 5. Precision achievement
precision_summary <- results_df %>%
group_by(ability_group) %>%
summarise(
Precision_Rate = mean(precision_met) * 100,
Count = n(),
.groups = 'drop'
)
p5 <- ggplot(precision_summary, aes(x = ability_group, y = Precision_Rate, fill = ability_group)) +
geom_col(alpha = 0.8) +
geom_text(aes(label = paste0(round(Precision_Rate, 1), "%")),
vjust = -0.5, size = 3) +
labs(title = "Precision Achievement Rate",
subtitle = "SE ≤ 0.3 kriteriasını qarşılayan test alıcıları",
x = "Qabiliyyət Qrupu", y = "Precision Rate (%)",
fill = "Qrup") +
theme_minimal() +
scale_fill_viridis_d() +
ylim(0, 110)
# 6. Efficiency analysis
p6 <- ggplot(results_df, aes(x = items_administered, y = standard_error, color = ability_group)) +
geom_point(alpha = 0.7, size = 2) +
geom_hline(yintercept = 0.3, linetype = "dashed", color = "red") +
geom_smooth(method = "loess", se = FALSE, color = "black") +
labs(title = "Test Uzunluğu vs Standart Xəta",
x = "İdarə Edilən Item Sayı", y = "Final SE",
color = "Qabiliyyət Qrupu") +
theme_minimal() +
scale_color_viridis_d()
return(list(p1 = p1, p2 = p2, p3 = p3, p4 = p4, p5 = p5, p6 = p6))
}
# Vizuallaşdırmaları yaratmaq
analysis_plots <- create_analysis_visualizations(results_summary, advanced_analysis)
# İlk set qrafiklər
grid.arrange(analysis_plots$p1, analysis_plots$p2,
analysis_plots$p3, analysis_plots$p4, ncol = 2)
# Item usage visualization
if (!is.null(advanced_analysis$item_usage)) {
item_usage_df <- data.frame(
Item_ID = as.numeric(names(advanced_analysis$item_usage)),
Usage_Count = as.numeric(advanced_analysis$item_usage)
)
# Top 20 most used items
top_items <- head(item_usage_df[order(item_usage_df$Usage_Count, decreasing = TRUE), ], 20)
p_item_usage <- ggplot(top_items, aes(x = reorder(as.factor(Item_ID), Usage_Count), y = Usage_Count)) +
geom_col(fill = "steelblue", alpha = 0.7) +
labs(title = "Ən Çox İstifadə Edilən 20 Item",
x = "Item ID", y = "İstifadə Sayı") +
theme_minimal() +
coord_flip()
print(p_item_usage)
}
# Diagnostic analysis function
perform_diagnostic_analysis <- function(results_df, cat_results) {
cat("=== DİAGNOSTİK VƏ KEYFİYYƏT NƏZARƏTI ===\n\n")
# 1. Extreme cases identification
cat("🚨 EKSTREM HALLAR:\n")
# Very high estimation errors
high_error_threshold <- quantile(results_df$estimation_error, 0.95)
high_error_cases <- which(results_df$estimation_error > high_error_threshold)
cat("Yüksək xətalı hallar (95th percentile üstü):", length(high_error_cases), "\n")
if (length(high_error_cases) > 0) {
cat("Xəta threshold-u:", round(high_error_threshold, 3), "\n")
cat("Ən yüksək xətalar:", round(results_df$estimation_error[head(high_error_cases, 3)], 3), "\n")
}
# Very long tests
long_test_threshold <- quantile(results_df$items_administered, 0.95)
long_test_cases <- which(results_df$items_administered > long_test_threshold)
cat("Uzun testlər (95th percentile üstü):", length(long_test_cases), "\n")
if (length(long_test_cases) > 0) {
cat("Uzunluq threshold-u:", long_test_threshold, "\n")
}
# Very short tests with poor precision
short_poor_cases <- which(results_df$items_administered < 10 & results_df$standard_error > 0.4)
cat("Qısa və zəif precision testlər:", length(short_poor_cases), "\n\n")
# 2. Response pattern analysis
cat("📋 CAVAB PATTERN ANALİZİ:\n")
# Simulated response patterns analysis
response_patterns <- data.frame()
for (i in 1:min(20, length(cat_results))) {
result <- cat_results[[i]]
responses <- result$responses
if (length(responses) > 0) {
# Calculate response statistics
proportion_correct <- mean(responses)
run_length <- max(rle(responses)$lengths) # Longest run of same response
switches <- sum(diff(responses) != 0) # Number of switches
temp_pattern <- data.frame(
Subject = i,
Test_Length = length(responses),
Proportion_Correct = proportion_correct,
Longest_Run = run_length,
Switches = switches,
True_Theta = result$true_theta,
Final_SE = result$final_se
)
response_patterns <- rbind(response_patterns, temp_pattern)
}
}
if (nrow(response_patterns) > 0) {
cat("Orta doğru cavab nisbəti:", round(mean(response_patterns$Proportion_Correct), 3), "\n")
cat("Orta ən uzun run uzunluğu:", round(mean(response_patterns$Longest_Run), 1), "\n")
cat("Orta switch sayı:", round(mean(response_patterns$Switches), 1), "\n")
# Identify unusual patterns
unusual_runs <- which(response_patterns$Longest_Run > 0.6 * response_patterns$Test_Length)
unusual_switches <- which(response_patterns$Switches < 0.2 * response_patterns$Test_Length)
cat("Qeyri-adi uzun run-lar:", length(unusual_runs), "\n")
cat("Az switch-li patternlər:", length(unusual_switches), "\n")
}
cat("\n")
# 3. System performance flags
cat("⚠️ SİSTEM PERFORMANS BायRAKLАРИ:\n")
flags <- list()
# High overall bias
if (abs(mean(results_df$bias)) > 0.1) {
flags$high_bias <- TRUE
cat("🔴 Yüksək sistematik bias aşkarlandı\n")
}
# Low correlation
correlation <- cor(results_df$true_theta, results_df$estimated_theta)
if (correlation < 0.8) {
flags$low_correlation <- TRUE
cat("🔴 Aşağı validity korrelyasiyası\n")
}
# High RMSE
rmse <- sqrt(mean(results_df$estimation_error^2))
if (rmse > 0.5) {
flags$high_rmse <- TRUE
cat("🔴 Yüksək RMSE\n")
}
# Low precision achievement
precision_rate <- mean(results_df$precision_met)
if (precision_rate < 0.7) {
flags$low_precision <- TRUE
cat("🔴 Aşağı precision achievement rate\n")
}
# Unequal performance across groups
group_se_var <- var(tapply(results_df$standard_error, results_df$ability_group, mean))
if (group_se_var > 0.01) {
flags$unequal_precision <- TRUE
cat("🔴 Qruplarda qeyri-bərabər precision\n")
}
if (length(flags) == 0) {
cat("✅ Əsas performans göstəriciləri məqbul həddlərdədir\n")
}
cat("\n")
return(list(
extreme_cases = list(
high_error = high_error_cases,
long_test = long_test_cases,
short_poor = short_poor_cases
),
response_patterns = response_patterns,
performance_flags = flags
))
}
# Automated reporting function
generate_automated_report <- function(analysis_results, advanced_analysis, diagnostic_results) {
cat("=== AVTOMATİK HESABAT ===\n\n")
results_df <- analysis_results$results_df
summary_stats <- analysis_results$summary_stats
# Executive summary
cat("📋 İCMAL:\n")
cat("Test alıcı sayı:", nrow(results_df), "\n")
cat("Orta test uzunluğu:", round(mean(results_df$items_administered), 1), "item\n")
cat("Ümumi RMSE:", round(summary_stats$rmse, 3), "\n")
cat("Validity korrelyasiyası:", round(summary_stats$correlation, 3), "\n")
cat("Precision achievement:", round(mean(results_df$precision_met) * 100, 1), "%\n\n")
# Performance rating
cat("📊 PERFORMANS REYTİNQİ:\n")
# Create composite score
correlation_score <- min(summary_stats$correlation * 100, 100)
rmse_score <- max(100 - summary_stats$rmse * 200, 0)
precision_score <- mean(results_df$precision_met) * 100
efficiency_score <- min(summary_stats$efficiency * 50, 100)
overall_score <- mean(c(correlation_score, rmse_score, precision_score, efficiency_score))
cat("Validity Score:", round(correlation_score, 1), "/100\n")
cat("Precision Score:", round(rmse_score, 1), "/100\n")
cat("Achievement Score:", round(precision_score, 1), "/100\n")
cat("Efficiency Score:", round(efficiency_score, 1), "/100\n")
cat("ÜMUMİ SCORE:", round(overall_score, 1), "/100\n\n")
# Performance grade
if (overall_score >= 90) {
grade <- "A (Əla)"
} else if (overall_score >= 80) {
grade <- "B (Yaxşı)"
} else if (overall_score >= 70) {
grade <- "C (Orta)"
} else if (overall_score >= 60) {
grade <- "D (Kafi)"
} else {
grade <- "F (Qeyri-kafi)"
}
cat("🏆 PERFORMANS SINFI:", grade, "\n\n")
# Recommendations
cat("💡 TOVSİYƏLƏR:\n")
if (summary_stats$rmse > 0.4) {
cat("• Qiymətləndirmə dəqiqliyini artırmaq üçün item bank keyfiyyətini yoxlayın\n")
}
if (summary_stats$correlation < 0.85) {
cat("• Validity göstəricilərini yaxşılaşdırmaq üçün item seçimi alqoritmini optimallaşdırın\n")
}
if (mean(results_df$precision_met) < 0.75) {
cat("• Precision achievement artırmaq üçün sonlandırma kriteriyalarını sərtləşdirin\n")
}
if (summary_stats$efficiency < 1.5) {
cat("• Test səmərəliliyini artırmaq üçün adaptiv strategiyaları güclənirin\n")
}
if (length(diagnostic_results$performance_flags) > 0) {
cat("• Sistem performans problemlərini həll etmək üçün ətraflı təhlil aparın\n")
}
cat("\n")
return(list(
overall_score = overall_score,
grade = grade,
component_scores = list(
validity = correlation_score,
precision = rmse_score,
achievement = precision_score,
efficiency = efficiency_score
)
))
}
# Diagnostic və reporting
diagnostic_results <- perform_diagnostic_analysis(results_summary, cat_results)
## === DİAGNOSTİK VƏ KEYFİYYƏT NƏZARƏTI ===
##
## 🚨 EKSTREM HALLAR:
## Yüksək xətalı hallar (95th percentile üstü): 3
## Xəta threshold-u: 0.683
## Ən yüksək xətalar: 0.743 0.999 0.723
## Uzun testlər (95th percentile üstü): 0
## Qısa və zəif precision testlər: 0
##
## 📋 CAVAB PATTERN ANALİZİ:
## Orta doğru cavab nisbəti: 0.573
## Orta ən uzun run uzunluğu: 4.7
## Orta switch sayı: 7
## Qeyri-adi uzun run-lar: 1
## Az switch-li patternlər: 2
##
## ⚠️ SİSTEM PERFORMANS BायRAKLАРИ:
## 🔴 Aşağı precision achievement rate
automated_report <- generate_automated_report(analysis_results, advanced_analysis, diagnostic_results)
## === AVTOMATİK HESABAT ===
##
## 📋 İCMAL:
## Test alıcı sayı: 50
## Orta test uzunluğu: 14.2 item
## Ümumi RMSE: 0.333
## Validity korrelyasiyası: 0.944
## Precision achievement: 42 %
##
## 📊 PERFORMANS REYTİNQİ:
## Validity Score: 94.4 /100
## Precision Score: 33.5 /100
## Achievement Score: 42 /100
## Efficiency Score: 100 /100
## ÜMUMİ SCORE: 67.5 /100
##
## 🏆 PERFORMANS SINFI: D (Kafi)
##
## 💡 TOVSİYƏLƏR:
## • Precision achievement artırmaq üçün sonlandırma kriteriyalarını sərtləşdirin
## • Sistem performans problemlərini həll etmək üçün ətraflı təhlil aparın
# Comprehensive export function
export_analysis_results <- function(analysis_results, output_dir = "cat_analysis_output") {
cat("=== NƏTİCƏLƏRİN EKSPORTu ===\n\n")
# Create output directory (simulated)
cat("Output directory yaradılır:", output_dir, "\n")
results_df <- analysis_results$results_df
# 1. Summary statistics table
summary_table <- data.frame(
Metric = c("Sample Size", "Mean Test Length", "SD Test Length",
"Mean SE", "RMSE", "Correlation", "Precision Rate (%)",
"Mean Bias", "Efficiency Ratio"),
Value = c(
nrow(results_df),
round(mean(results_df$items_administered), 2),
round(sd(results_df$items_administered), 2),
round(mean(results_df$standard_error), 3),
round(sqrt(mean(results_df$estimation_error^2)), 3),
round(cor(results_df$true_theta, results_df$estimated_theta), 3),
round(mean(results_df$precision_met) * 100, 1),
round(mean(results_df$bias), 3),
round(30 / mean(results_df$items_administered), 2)
)
)
cat("\n📊 SUMMARY STATISTICS TABLE:\n")
print(summary_table)
# 2. Performance by ability group
group_summary <- results_df %>%
group_by(ability_group) %>%
summarise(
N = n(),
Mean_Items = round(mean(items_administered), 1),
Mean_SE = round(mean(standard_error), 3),
RMSE = round(sqrt(mean(estimation_error^2)), 3),
Bias = round(mean(bias), 3),
Precision_Rate = round(mean(precision_met) * 100, 1),
.groups = 'drop'
)
cat("\n👥 ABILITY GROUP SUMMARY:\n")
print(group_summary)
# 3. Quality control indicators
quality_indicators <- data.frame(
Indicator = c("High Error Cases", "Long Test Cases", "Short Poor Cases",
"Outlier Rate", "Bias Significance", "Group Fairness"),
Status = c("✅", "✅", "✅", "✅", "✅", "✅"), # Simplified for demo
Details = c("< 5%", "< 5%", "< 3%", "Within limits", "Non-significant", "Acceptable")
)
cat("\n🔍 QUALITY CONTROL INDICATORS:\n")
print(quality_indicators)
# 4. Recommendations summary
cat("\n📝 EXPORTED FILES (simulated):\n")
cat("• detailed_results.csv - Fərdi nəticələr\n")
cat("• summary_statistics.csv - Ümumi statistikalar\n")
cat("• group_analysis.csv - Qrup təhlili\n")
cat("• performance_plots.pdf - Vizuallaşdırmalar\n")
cat("• technical_report.html - Texniki hesabat\n")
cat("• executive_summary.docx - İcra rəhbərliyi üçün xülasə\n\n")
return(list(
summary_table = summary_table,
group_summary = group_summary,
quality_indicators = quality_indicators
))
}
# Cross-validation function
perform_cross_validation <- function(results_df, k_folds = 5) {
cat("=== CROSS-VALİDASİYA ANALİZİ ===\n\n")
n <- nrow(results_df)
fold_size <- floor(n / k_folds)
cv_results <- data.frame()
for (fold in 1:k_folds) {
# Create train/test split
start_idx <- (fold - 1) * fold_size + 1
end_idx <- min(fold * fold_size, n)
test_indices <- start_idx:end_idx
train_indices <- setdiff(1:n, test_indices)
train_data <- results_df[train_indices, ]
test_data <- results_df[test_indices, ]
# Calculate metrics on test set
test_rmse <- sqrt(mean(test_data$estimation_error^2))
test_correlation <- cor(test_data$true_theta, test_data$estimated_theta)
test_bias <- mean(test_data$bias)
test_precision_rate <- mean(test_data$precision_met)
# Store results
cv_results <- rbind(cv_results, data.frame(
Fold = fold,
Test_Size = nrow(test_data),
RMSE = round(test_rmse, 3),
Correlation = round(test_correlation, 3),
Bias = round(test_bias, 3),
Precision_Rate = round(test_precision_rate, 3)
))
}
cat("🔄", k_folds, "-FOLD CROSS-VALİDASİYA NƏTİCƏLƏRİ:\n")
print(cv_results)
# Overall CV statistics
cat("\n📊 CV SUMMARY:\n")
cat("Orta RMSE:", round(mean(cv_results$RMSE), 3), "±", round(sd(cv_results$RMSE), 3), "\n")
cat("Orta Correlation:", round(mean(cv_results$Correlation), 3), "±", round(sd(cv_results$Correlation), 3), "\n")
cat("Orta Bias:", round(mean(cv_results$Bias), 3), "±", round(sd(cv_results$Bias), 3), "\n")
cat("Orta Precision Rate:", round(mean(cv_results$Precision_Rate), 3), "±", round(sd(cv_results$Precision_Rate), 3), "\n")
# Stability assessment
rmse_cv <- sd(cv_results$RMSE) / mean(cv_results$RMSE)
cor_cv <- sd(cv_results$Correlation) / mean(cv_results$Correlation)
cat("\nStability Coefficient of Variation:\n")
cat("RMSE CV:", round(rmse_cv, 3), "\n")
cat("Correlation CV:", round(cor_cv, 3), "\n")
if (rmse_cv < 0.1 && cor_cv < 0.05) {
cat("✅ Nəticələr stabil və etibarlıdır\n")
} else {
cat("⚠️ Nəticələrdə qeyri-sabitlik var\n")
}
return(cv_results)
}
# Export və cross-validation
export_results <- export_analysis_results(analysis_results)
## === NƏTİCƏLƏRİN EKSPORTu ===
##
## Output directory yaradılır: cat_analysis_output
##
## 📊 SUMMARY STATISTICS TABLE:
## Metric Value
## 1 Sample Size 50.000
## 2 Mean Test Length 14.220
## 3 SD Test Length 6.480
## 4 Mean SE 0.318
## 5 RMSE 0.333
## 6 Correlation 0.944
## 7 Precision Rate (%) 42.000
## 8 Mean Bias 0.000
## 9 Efficiency Ratio 2.110
##
## 👥 ABILITY GROUP SUMMARY:
## # A tibble: 4 × 7
## ability_group N Mean_Items Mean_SE RMSE Bias Precision_Rate
## <fct> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Aşağı 9 11.2 0.332 0.391 -0.209 22.2
## 2 Orta-Aşağı 16 16.6 0.318 0.346 0.093 50
## 3 Orta-Yuxarı 18 14.1 0.318 0.321 0.023 38.9
## 4 Yuxarı 7 13.1 0.301 0.237 -0.004 57.1
##
## 🔍 QUALITY CONTROL INDICATORS:
## Indicator Status Details
## 1 High Error Cases ✅ < 5%
## 2 Long Test Cases ✅ < 5%
## 3 Short Poor Cases ✅ < 3%
## 4 Outlier Rate ✅ Within limits
## 5 Bias Significance ✅ Non-significant
## 6 Group Fairness ✅ Acceptable
##
## 📝 EXPORTED FILES (simulated):
## • detailed_results.csv - Fərdi nəticələr
## • summary_statistics.csv - Ümumi statistikalar
## • group_analysis.csv - Qrup təhlili
## • performance_plots.pdf - Vizuallaşdırmalar
## • technical_report.html - Texniki hesabat
## • executive_summary.docx - İcra rəhbərliyi üçün xülasə
## === CROSS-VALİDASİYA ANALİZİ ===
##
## 🔄 5 -FOLD CROSS-VALİDASİYA NƏTİCƏLƏRİ:
## Fold Test_Size RMSE Correlation Bias Precision_Rate
## 1 1 10 0.330 0.952 0.086 0.7
## 2 2 10 0.288 0.927 0.008 0.4
## 3 3 10 0.403 0.898 0.192 0.5
## 4 4 10 0.215 0.960 -0.086 0.1
## 5 5 10 0.391 0.978 -0.201 0.4
##
## 📊 CV SUMMARY:
## Orta RMSE: 0.325 ± 0.077
## Orta Correlation: 0.943 ± 0.031
## Orta Bias: 0 ± 0.152
## Orta Precision Rate: 0.42 ± 0.217
##
## Stability Coefficient of Variation:
## RMSE CV: 0.238
## Correlation CV: 0.033
## ⚠️ Nəticələrdə qeyri-sabitlik var
Bu bölmədə CAT simulyasiya nəticələrinin hərtərəfli təhlili üçün professional analiz sistemi yaratdıq.
Comprehensive Analysis: Bütün əsas performans metriklər
Specialized Functions: Bias, convergence, fairness təhlili
Diagnostic Tools: Problem identification və quality control
Automated Reporting: Professional hesabat generasiyası
Validity Assessment: Correlation və regression analizi
Reliability Measures: SE-based reliability qiymətləndirməsi
Bias Detection: Sistematik və diferensial bias təhlili
Fairness Evaluation: Qruplar arası ədalətlilik
Performance Dashboards: Interactive və informativ qrafiklər
Distribution Analysis: Pattern və outlier detection
Comparative Views: Qrup müqayisələri və trend analysis
Quality Indicators: Visual quality control metrics
Performance Monitoring: Real-time sistem izləməsi
Quality Assurance: Keyfiyyət təminatı protokolları
Optimization Guidance: Sistem təkmilləşdirmə yolları
Validation Support: Empirik validasiya dəstəyi
Psychometric Studies: Psixometrik tədqiqat dəstəyi
Algorithm Comparison: Müxtəlif alqoritmlərin müqayisəsi
Parameter Tuning: Optimal parametr tapınması
Publication Ready: Nəşr üçün hazır analiz və qrafiklər
Decision Support: İdarəetmə qərarları üçün dəstək
Stakeholder Communication: Maraqlı tərəflər üçün aydın hesabatlar
Continuous Improvement: Davamlı təkmilləşdirmə prosesi
Best Practices: Ən yaxşı təcrübələr və tövsiyələr
Machine Learning Integration: ML-based pattern detection
Predictive Modeling: Proqnozlaşdırıcı model qurulması
Real-time Analytics: Real vaxtda analiz imkanları
Anomaly Detection: Avtomatik anomaliya aşkarlama
Dashboard Development: İnteraktiv dashboard yaradılması
Self-service Analytics: Self-service analiz alətləri
Custom Reports: Customizable hesabat sistemləri
API Integration: API əsaslı inteqrasiya
Cross-validation Automation: Avtomatik cross-validation
Bootstrap Methods: Bootstrap əsaslı təhlil
Sensitivity Analysis: Həssaslıq təhlili
Robustness Testing: Möhkəmlik testləri
Qeyd: Bu analiz funksiyaları sistemi CAT tədqiqatları və praktiki tətbiqlər üçün professional səviyyədə alət təqdim edir. Sistem modular quruluşa malikdir və müxtəlif tələblərə uyğunlaşdırıla bilər.