1 Giriş

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:

  1. Performans Qiymətləndirməsi: Sistemin ümumi effektivliyinin ölçülməsi
  2. Validlik Təhlili: Qiymətləndirmələrin düzgünlüyünün yoxlanması
  3. Reliability Analizi: Nəticələrin etibarlılığının qiymətləndirilməsi
  4. Efficiency Təhlili: Resurs istifadəsinin optimallaşdırılması
  5. Diagnostic İnformationlar: Sistemin zəif tərəflərinin müəyyən edilməsi

1.1 Analiz Komponentləri

1.1.1 Statistik Məqsədlər

  • Deskriptiv Statistikalar: Mərkəzi tendensillar və dağılım
  • İnferensial Statistikalar: Hipotez testləri və güven intervalları
  • Multivariate Analiz: Çoxdəyişənli əlaqələrin təhlili
  • Predictive Modeling: Proqnozlaşdırıcı modellər

1.1.2 Keyfiyyət Metriklər

  • Accuracy Measures: Dəqiqlik göstəriciləri
  • Precision Indicators: Precision və recall
  • Efficiency Metrics: Səmərəlilik ölçüləri
  • Fairness Assessment: Ədalətlilik qiymətləndirməsi

2 Prerequisite Funksiyalar və Məlumatlar

Ə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

3 Əsas Analiz Funksiyası

# 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
results_summary <- analysis_results$results_df

4 İrəliləmiş Analiz Funksiyaları

# 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ə

5 Specialized Analiz Funksiyaları

# 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
convergence_analysis <- analyze_convergence_patterns(cat_results)
## 
## === 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
fairness_analysis <- analyze_fairness(results_summary)
## 
## === Ə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

6 Comprehensive Vizuallaşdırma

# 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)

# İkinci set qrafiklər
grid.arrange(analysis_plots$p5, analysis_plots$p6, 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)
}

7 Diagnostic və Quality Control

# 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

8 Export və Reporting Funksiyaları

# 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ə
cv_results <- perform_cross_validation(results_summary)
## === 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

9 Nəticə və Tövsiyələr

Bu bölmədə CAT simulyasiya nəticələrinin hərtərəfli təhlili üçün professional analiz sistemi yaratdıq.

9.1 Əsas Nəticələr

9.1.1 1. Analiz Komponentləri

  • 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ı

9.1.2 2. Statistik Keyfiyyət

  • 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

9.1.3 3. Vizual Analytics

  • 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

9.2 Praktiki Dəyər

9.2.1 1. CAT Sistem Qiymətləndirməsi

  • 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

9.2.2 2. Research Applications

  • 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

9.2.3 3. Practical Implementation

  • 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

9.3 Gələcək İnkişaf

9.3.1 1. Advanced Analytics

  • 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

9.3.2 2. Interactive Tools

  • 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

9.3.3 3. Enhanced Validation

  • 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.