Test alıcısının cavab verməsini simulyasiya etmək, psixometrik tədqiqatların əsas komponentlərindən biridir. Real test şəraitində test alıcısı müəyyən bacarıq səviyyəsinə malik olsa da, onun cavabları yalnız bu bacarıq səviyyəsi ilə deyil, həm də müxtəlif xarici amillər (həyəcan, yorğunluq, diqqətsizlik və s.) ilə təyin olunur.
Bu bölmədə, Item Response Theory (IRT) modellərinə əsasən realistik cavab generasiya prosesi yaradacağıq. Cavab generasiya modeli CAT sistemlərinin simulyasiyasında, algoritma testində və psixometrik tədqiqatlarda əvəzedilməz rol oynayır.
Cavab generasiya prosesi həm nəzəri əsaslara həm də praktiki tələblərə uyğun olaraq hazırlanmalıdır. Real test şəraitindəki bütün amilləri nəzərə alaraq daha realistik və etibarlı simulyasiya təmin etməliyik.
Üç parametrli logistik (3PL) model cavab generasiya prosesinin matematik əsasını təşkil edir. Model aşağıdakı formulu istifadə edir:
\[P(X_i = 1|\theta) = c_i + (1-c_i) \cdot \frac{1}{1+e^{-a_i(\theta-b_i)}}\]
Bu formulda: - \(P(X_i = 1|\theta)\)
- θ bacarıq səviyyəsində i-ci suala doğru cavab vermə ehtimalı - \(c_i\) - təsadüfi cavab parametri (guessing
parameter) - \(a_i\) - ayrıd etmə
parametri (discrimination parameter) - \(b_i\) - çətinlik parametri (difficulty
parameter)
- \(\theta\) - test alıcısının bacarıq
səviyyəsi
Çətinlik Parametri (b): Sualın çətinlik səviyyəsini göstərir. Yüksək b dəyəri daha çətin suala işarə edir.
Ayrıd etmə Parametri (a): Sualın müxtəlif bacarıq səviyyələrində test alıcılarını necə ayırd edə bildiyini göstərir.
Təsadüfi Cavab Parametri (c): Aşağı bacarıq səviyyəsindəki test alıcılarının təsadüfi doğru cavab vermə ehtimalını göstərir.
Real test şəraitində cavab generasiya prosesi aşağıdakı addımlardan ibarətdir:
Test alıcısının bacarıq səviyyəsi və sualın parametrləri əsasında doğru cavab ehtimalı hesablanır.
Real şəraitdə mövcud olan təsadüfi xəta mənbələri (həyəcan, yorğunluq, diqqətsizlik) nəzərə alınır.
Hesablanmış ehtimal əsasında təsadüfi cavab generasiya edilir.
Generasiya edilmiş cavab (0 və ya 1) qaydə alınır və təhlil üçün hazırlanır.
# Test alıcısının cavab verməsini simulyasiya edən funksiya
generate_response <- function(true_theta, item_params, include_error = TRUE) {
# Sualın parametrlərini çıxarma
a <- item_params$a # Ayrıd etmə parametri
b <- item_params$b # Çətinlik parametri
c <- item_params$c # Təsadüfi cavab parametri
# 3PL modelə əsasən doğru cavab ehtimalının hesablanması
prob_correct <- c + (1 - c) * plogis(a * (true_theta - b))
# Əlavə xəta mənbələrinin simulyasiyası
if (include_error) {
# Həyəcan, yorğunluq, diqqətsizlik kimi amillərin təsiri
error_factor <- rnorm(1, 0, 0.05) # Kiçik təsadüfi xəta
# Ehtimalın [0,1] intervalında qalmasını təmin etmə
prob_correct <- pmax(0, pmin(1, prob_correct + error_factor))
}
# Bernoulli sınağı ilə cavab generasiyası
response <- rbinom(1, 1, prob_correct)
# Nəticələrin strukturlaşdırılmış şəkildə qaytarılması
return(list(
response = response, # Generasiya edilmiş cavab (0 və ya 1)
prob_correct = prob_correct, # Doğru cavab ehtimalı
item_difficulty = b, # Sualın çətinlik səviyyəsi
discrimination = a, # Sualın ayrıd etmə gücü
guessing = c, # Təsadüfi cavab parametri
true_theta = true_theta # Test alıcısının həqiqi bacarıq səviyyəsi
))
}
# Funksiyanın ətraflı izahı
explain_function_components <- function() {
cat("=== CAVAB GENERASİYA FUNKSİYASININ KOMPONENTLƏRİ ===\n\n")
cat("1. PARAMETR ÇIXARIş:\n")
cat(" • a: Ayrıd etmə parametri (adətən 0.5-3.0 arasında)\n")
cat(" • b: Çətinlik parametri (adətən -3.0 və +3.0 arasında)\n")
cat(" • c: Təsadüfi cavab parametri (adətən 0.0-0.3 arasında)\n\n")
cat("2. EHTİMAL HESABLAMA:\n")
cat(" • 3PL formulundan istifadə\n")
cat(" • plogis() funksiyası logistik transformasiya həyata keçirir\n")
cat(" • Nəticə [0,1] intervalında ehtimal\n\n")
cat("3. XƏTA SİMULYASİYASI:\n")
cat(" • rnorm(1, 0, 0.05): Normal paylanmış təsadüfi xəta\n")
cat(" • pmax() və pmin(): Ehtimalı [0,1] intervalında saxlayır\n")
cat(" • include_error parametri ilə idarə edilir\n\n")
cat("4. CAVAB GENERASİYASI:\n")
cat(" • rbinom(1, 1, prob): Bernoulli sınağı\n")
cat(" • Nəticə: 0 (yanlış) və ya 1 (doğru)\n\n")
cat("5. NƏTICƏ STRUKTURU:\n")
cat(" • response: Əsas çıxış\n")
cat(" • prob_correct: Hesablanmış ehtimal\n")
cat(" • Əlavə məlumatlar: analiz və debug üçün\n")
}
explain_function_components()
## === CAVAB GENERASİYA FUNKSİYASININ KOMPONENTLƏRİ ===
##
## 1. PARAMETR ÇIXARIş:
## • a: Ayrıd etmə parametri (adətən 0.5-3.0 arasında)
## • b: Çətinlik parametri (adətən -3.0 və +3.0 arasında)
## • c: Təsadüfi cavab parametri (adətən 0.0-0.3 arasında)
##
## 2. EHTİMAL HESABLAMA:
## • 3PL formulundan istifadə
## • plogis() funksiyası logistik transformasiya həyata keçirir
## • Nəticə [0,1] intervalında ehtimal
##
## 3. XƏTA SİMULYASİYASI:
## • rnorm(1, 0, 0.05): Normal paylanmış təsadüfi xəta
## • pmax() və pmin(): Ehtimalı [0,1] intervalında saxlayır
## • include_error parametri ilə idarə edilir
##
## 4. CAVAB GENERASİYASI:
## • rbinom(1, 1, prob): Bernoulli sınağı
## • Nəticə: 0 (yanlış) və ya 1 (doğru)
##
## 5. NƏTICƏ STRUKTURU:
## • response: Əsas çıxış
## • prob_correct: Hesablanmış ehtimal
## • Əlavə məlumatlar: analiz və debug üçün
# Parametrlərin ətraflı izahı
describe_parameters <- function() {
cat("=== FUNKSİYA PARAMETRLƏRİ ===\n\n")
cat("GİRİş PARAMETRLƏRİ:\n\n")
cat("1. true_theta (məcburi):\n")
cat(" • Tip: numeric\n")
cat(" • Təsvir: Test alıcısının həqiqi bacarıq səviyyəsi\n")
cat(" • Aralıq: Adətən -4 və +4 arasında\n")
cat(" • Standart: Orta = 0, SD = 1 (z-score)\n")
cat(" • Nümunə: -2.5, 0.0, 1.3\n\n")
cat("2. item_params (məcburi):\n")
cat(" • Tip: data.frame və ya list\n")
cat(" • Tələb olunan sütunlar:\n")
cat(" - a: Ayrıd etmə (0.5-3.0)\n")
cat(" - b: Çətinlik (-3.0 və +3.0)\n")
cat(" - c: Təsadüfi cavab (0.0-0.3)\n\n")
cat("3. include_error (istəyə bağlı):\n")
cat(" • Tip: logical (TRUE/FALSE)\n")
cat(" • Default: TRUE\n")
cat(" • Məqsəd: Əlavə xəta mənbələrinin daxil edilməsi\n")
cat(" • TRUE: Realistik simulyasiya\n")
cat(" • FALSE: Saf nəzəri model\n\n")
cat("ÇIXIŞ STRUKTURu:\n\n")
cat("• response: 0 və ya 1 (əsas nəticə)\n")
cat("• prob_correct: Hesablanmış ehtimal [0,1]\n")
cat("• item_difficulty: Sualın b parametri\n")
cat("• discrimination: Sualın a parametri\n")
cat("• guessing: Sualın c parametri\n")
cat("• true_theta: Giriş theta dəyəri\n")
}
describe_parameters()
## === FUNKSİYA PARAMETRLƏRİ ===
##
## GİRİş PARAMETRLƏRİ:
##
## 1. true_theta (məcburi):
## • Tip: numeric
## • Təsvir: Test alıcısının həqiqi bacarıq səviyyəsi
## • Aralıq: Adətən -4 və +4 arasında
## • Standart: Orta = 0, SD = 1 (z-score)
## • Nümunə: -2.5, 0.0, 1.3
##
## 2. item_params (məcburi):
## • Tip: data.frame və ya list
## • Tələb olunan sütunlar:
## - a: Ayrıd etmə (0.5-3.0)
## - b: Çətinlik (-3.0 və +3.0)
## - c: Təsadüfi cavab (0.0-0.3)
##
## 3. include_error (istəyə bağlı):
## • Tip: logical (TRUE/FALSE)
## • Default: TRUE
## • Məqsəd: Əlavə xəta mənbələrinin daxil edilməsi
## • TRUE: Realistik simulyasiya
## • FALSE: Saf nəzəri model
##
## ÇIXIŞ STRUKTURu:
##
## • response: 0 və ya 1 (əsas nəticə)
## • prob_correct: Hesablanmış ehtimal [0,1]
## • item_difficulty: Sualın b parametri
## • discrimination: Sualın a parametri
## • guessing: Sualın c parametri
## • true_theta: Giriş theta dəyəri
# Nümunə sual parametrləri yaradılması
create_sample_items <- function() {
# Müxtəlif çətinlik səviyyələrində suallar
sample_items <- data.frame(
item_name = c("Asan", "Orta", "Çətin", "Çox_Çətin"),
a = c(1.2, 1.5, 1.8, 1.0), # Ayrıd etmə parametri
b = c(-1.0, 0.0, 1.2, 2.0), # Çətinlik parametri
c = c(0.10, 0.15, 0.20, 0.25) # Təsadüfi cavab parametri
)
return(sample_items)
}
sample_items <- create_sample_items()
cat("=== NÜMUNƏ SUAL PARAMETRLƏRİ ===\n")
## === NÜMUNƏ SUAL PARAMETRLƏRİ ===
## item_name a b c
## 1 Asan 1.2 -1.0 0.10
## 2 Orta 1.5 0.0 0.15
## 3 Çətin 1.8 1.2 0.20
## 4 Çox_Çətin 1.0 2.0 0.25
# Fərqli bacarıq səviyyələrində cavab generasiyası
test_different_abilities <- function() {
cat("\n=== FƏRQLI BACARIQ SƏVİYYƏLƏRİNDƏ CAVAB GENERASİYASI ===\n\n")
theta_levels <- c(-2, -1, 0, 1, 2)
test_item <- sample_items[2, ] # Orta çətinlikdə sual
set.seed(123) # Təkrarlanar nəticələr üçün
for(theta in theta_levels) {
cat("θ =", theta, ":\n")
# Xətasız cavab
response_clean <- generate_response(theta, test_item, include_error = FALSE)
# Xətalı cavab
response_noisy <- generate_response(theta, test_item, include_error = TRUE)
cat(" Xətasız ehtimal:", round(response_clean$prob_correct, 3), "\n")
cat(" Xətalı ehtimal:", round(response_noisy$prob_correct, 3), "\n")
cat(" Xətasız cavab:", response_clean$response, "\n")
cat(" Xətalı cavab:", response_noisy$response, "\n")
cat(" Fərq:", round(response_noisy$prob_correct - response_clean$prob_correct, 3), "\n\n")
}
}
test_different_abilities()
##
## === FƏRQLI BACARIQ SƏVİYYƏLƏRİNDƏ CAVAB GENERASİYASI ===
##
## θ = -2 :
## Xətasız ehtimal: 0.19
## Xətalı ehtimal: 0.23
## Xətasız cavab: 0
## Xətalı cavab: 1
## Fərq: 0.04
##
## θ = -1 :
## Xətasız ehtimal: 0.305
## Xətalı ehtimal: 0.221
## Xətasız cavab: 1
## Xətalı cavab: 1
## Fərq: -0.084
##
## θ = 0 :
## Xətasız ehtimal: 0.575
## Xətalı ehtimal: 0.57
## Xətasız cavab: 1
## Xətalı cavab: 1
## Fərq: -0.005
##
## θ = 1 :
## Xətasız ehtimal: 0.845
## Xətalı ehtimal: 0.854
## Xətasız cavab: 1
## Xətalı cavab: 0
## Fərq: 0.009
##
## θ = 2 :
## Xətasız ehtimal: 0.96
## Xətalı ehtimal: 0.873
## Xətasız cavab: 1
## Xətalı cavab: 0
## Fərq: -0.086
# Xəta mənbələrinin ətraflı təhlili
analyze_error_sources <- function() {
cat("=== REAL TEST ŞƏRAİTİNDƏKİ XƏTA MƏNBƏLƏRİ ===\n\n")
cat("1. PSİXOLOJİ AMİLLƏR:\n")
cat(" • Test həyəcanı (anxiety)\n")
cat(" • Stress və təzyiq\n")
cat(" • Motivasiya dəyişikliyi\n")
cat(" • Özgüvən problemi\n")
cat(" • Simulyasiyada: rnorm(0, 0.03-0.08)\n\n")
cat("2. FİZİKİ AMİLLƏR:\n")
cat(" • Yorğunluq\n")
cat(" • Aclıq, susuzluq\n")
cat(" • Rahatsızlıq\n")
cat(" • Tibbi problemlər\n")
cat(" • Simulyasiyada: rnorm(0, 0.05-0.10)\n\n")
cat("3. MÜHİT AMİLLƏRİ:\n")
cat(" • Səs-küy\n")
cat(" • İşıqlandırma\n")
cat(" • Temperatur\n")
cat(" • Digər test alıcılarının təsiri\n")
cat(" • Simulyasiyada: rnorm(0, 0.02-0.06)\n\n")
cat("4. TEXNİKİ AMİLLƏR:\n")
cat(" • Kompüter problemi\n")
cat(" • İnterfeys çətinliyi\n")
cat(" • Klaviatura/siçan problemi\n")
cat(" • Şəbəkə gecikməsi\n")
cat(" • Simulyasiyada: rnorm(0, 0.01-0.04)\n\n")
cat("5. KOGNİTİV AMİLLƏR:\n")
cat(" • Diqqətsizlik\n")
cat(" • Yaddaş problemləri\n")
cat(" • Səhv oxuma\n")
cat(" • Vaxt baskısı\n")
cat(" • Simulyasiyada: rnorm(0, 0.03-0.07)\n")
}
analyze_error_sources()
## === REAL TEST ŞƏRAİTİNDƏKİ XƏTA MƏNBƏLƏRİ ===
##
## 1. PSİXOLOJİ AMİLLƏR:
## • Test həyəcanı (anxiety)
## • Stress və təzyiq
## • Motivasiya dəyişikliyi
## • Özgüvən problemi
## • Simulyasiyada: rnorm(0, 0.03-0.08)
##
## 2. FİZİKİ AMİLLƏR:
## • Yorğunluq
## • Aclıq, susuzluq
## • Rahatsızlıq
## • Tibbi problemlər
## • Simulyasiyada: rnorm(0, 0.05-0.10)
##
## 3. MÜHİT AMİLLƏRİ:
## • Səs-küy
## • İşıqlandırma
## • Temperatur
## • Digər test alıcılarının təsiri
## • Simulyasiyada: rnorm(0, 0.02-0.06)
##
## 4. TEXNİKİ AMİLLƏR:
## • Kompüter problemi
## • İnterfeys çətinliyi
## • Klaviatura/siçan problemi
## • Şəbəkə gecikməsi
## • Simulyasiyada: rnorm(0, 0.01-0.04)
##
## 5. KOGNİTİV AMİLLƏR:
## • Diqqətsizlik
## • Yaddaş problemləri
## • Səhv oxuma
## • Vaxt baskısı
## • Simulyasiyada: rnorm(0, 0.03-0.07)
# Müxtəlif xəta səviyyələrinin təsiri
demonstrate_error_effects <- function() {
cat("\n=== XƏTA SƏVİYYƏLƏRİNİN TƏSİRİ ===\n\n")
# Test parametrləri
theta <- 0.5
test_item <- data.frame(a = 1.5, b = 0.2, c = 0.15)
# Müxtəlif xəta səviyyələri
error_levels <- c(0.0, 0.02, 0.05, 0.10, 0.15)
n_simulations <- 1000
results <- data.frame()
for(error_sd in error_levels) {
set.seed(456)
responses <- numeric(n_simulations)
probabilities <- numeric(n_simulations)
for(i in 1:n_simulations) {
# Xəta ilə cavab generasiyası
if(error_sd == 0) {
response <- generate_response(theta, test_item, include_error = FALSE)
} else {
# Xüsusi xəta səviyyəsi ilə
a <- test_item$a
b <- test_item$b
c <- test_item$c
prob_correct <- c + (1 - c) * plogis(a * (theta - b))
error_factor <- rnorm(1, 0, error_sd)
prob_correct <- pmax(0, pmin(1, prob_correct + error_factor))
response_val <- rbinom(1, 1, prob_correct)
response <- list(response = response_val, prob_correct = prob_correct)
}
responses[i] <- response$response
probabilities[i] <- response$prob_correct
}
# Nəticələri saxla
temp_result <- data.frame(
Error_SD = error_sd,
Mean_Response = mean(responses),
SD_Response = sd(responses),
Mean_Probability = mean(probabilities),
SD_Probability = sd(probabilities)
)
results <- rbind(results, temp_result)
}
cat("Xəta təsiri təhlili (θ =", theta, ", n =", n_simulations, "):\n")
print(round(results, 4))
return(results)
}
error_effects <- demonstrate_error_effects()
##
## === XƏTA SƏVİYYƏLƏRİNİN TƏSİRİ ===
##
## Xəta təsiri təhlili (θ = 0.5 , n = 1000 ):
## Error_SD Mean_Response SD_Response Mean_Probability SD_Probability
## 1 0.00 0.644 0.4791 0.6690 0.0000
## 2 0.02 0.647 0.4781 0.6691 0.0191
## 3 0.05 0.645 0.4788 0.6691 0.0478
## 4 0.10 0.636 0.4814 0.6692 0.0956
## 5 0.15 0.648 0.4778 0.6712 0.1490
# Geniş bacarıq spektrində performans təhlili
comprehensive_ability_analysis <- function() {
cat("=== GENİş BACARIQ SPEKTRUNDA PERFORMANS TƏHLİLİ ===\n\n")
# Bacarıq səviyyələri spektri
theta_range <- seq(-3, 3, 0.5)
# Müxtəlif sual çətinlik səviyyələri
item_difficulties <- c(-1.5, -0.5, 0.0, 0.5, 1.5)
# Nəticələr üçün data frame
analysis_results <- data.frame()
for(diff in item_difficulties) {
test_item <- data.frame(a = 1.5, b = diff, c = 0.15)
for(theta in theta_range) {
# 100 dəfə simulyasiya
set.seed(789)
n_sims <- 100
responses <- numeric(n_sims)
for(i in 1:n_sims) {
result <- generate_response(theta, test_item, include_error = TRUE)
responses[i] <- result$response
}
# Nəticələri saxla
temp_result <- data.frame(
Theta = theta,
Item_Difficulty = diff,
Success_Rate = mean(responses),
Response_Variability = sd(responses)
)
analysis_results <- rbind(analysis_results, temp_result)
}
}
return(analysis_results)
}
# Ətraflı təhlil
comprehensive_results <- comprehensive_ability_analysis()
## === GENİş BACARIQ SPEKTRUNDA PERFORMANS TƏHLİLİ ===
## === KOMPREHENSİV TƏHLİL NƏTİCƏLƏRİ ===
## Theta aralığı: -3 3
## Item çətinlik aralığı: -1.5 1.5
## Uğur dərəcəsi aralığı: 0.12 0.98
# Çətin və asan suallar üçün detallı müqayisə
detailed_comparison <- function() {
cat("\n=== ÇƏTIN VƏ ASAN SUALLAR ÜÇÜN DETALLI MÜQAYİSƏ ===\n\n")
# Test parametrləri
easy_item <- data.frame(a = 1.2, b = -1.0, c = 0.1)
moderate_item <- data.frame(a = 1.5, b = 0.0, c = 0.15)
hard_item <- data.frame(a = 1.8, b = 1.5, c = 0.2)
items <- list("Asan" = easy_item, "Orta" = moderate_item, "Çətin" = hard_item)
# Müxtəlif bacarıq səviyyələri
ability_levels <- c(-2, -1, 0, 1, 2)
comparison_results <- data.frame()
for(ability in ability_levels) {
for(item_name in names(items)) {
item_params <- items[[item_name]]
# Nəzəri ehtimal
a <- item_params$a
b <- item_params$b
c <- item_params$c
theoretical_prob <- c + (1 - c) * plogis(a * (ability - b))
# Simulyasiya nəticələri
set.seed(321)
n_trials <- 500
responses <- numeric(n_trials)
for(i in 1:n_trials) {
result <- generate_response(ability, item_params, include_error = TRUE)
responses[i] <- result$response
}
empirical_prob <- mean(responses)
temp_result <- data.frame(
Ability = ability,
Item_Type = item_name,
Theoretical_Prob = theoretical_prob,
Empirical_Prob = empirical_prob,
Difference = empirical_prob - theoretical_prob,
SE_Empirical = sd(responses) / sqrt(n_trials)
)
comparison_results <- rbind(comparison_results, temp_result)
}
}
cat("Nəzəri vs Empirik ehtimal müqayisəsi:\n")
# Yalnız rəqəmsal sütunları round edirik
numeric_cols <- sapply(comparison_results, is.numeric)
comparison_results[numeric_cols] <- lapply(comparison_results[numeric_cols], round, 4)
print(comparison_results)
return(comparison_results)
}
comparison_data <- detailed_comparison()
##
## === ÇƏTIN VƏ ASAN SUALLAR ÜÇÜN DETALLI MÜQAYİSƏ ===
##
## Nəzəri vs Empirik ehtimal müqayisəsi:
## Ability Item_Type Theoretical_Prob Empirical_Prob Difference SE_Empirical
## 1 -2 Asan 0.3083 0.336 0.0277 0.0211
## 2 -2 Orta 0.1903 0.214 0.0237 0.0184
## 3 -2 Çətin 0.2015 0.220 0.0185 0.0185
## 4 -1 Asan 0.5500 0.556 0.0060 0.0222
## 5 -1 Orta 0.3051 0.334 0.0289 0.0211
## 6 -1 Çətin 0.2088 0.228 0.0192 0.0188
## 7 0 Asan 0.7917 0.778 -0.0137 0.0186
## 8 0 Orta 0.5750 0.582 0.0070 0.0221
## 9 0 Çətin 0.2504 0.264 0.0136 0.0197
## 10 1 Asan 0.9251 0.932 0.0069 0.0113
## 11 1 Orta 0.8449 0.834 -0.0109 0.0167
## 12 1 Çətin 0.4312 0.446 0.0148 0.0223
## 13 2 Asan 0.9761 0.958 -0.0181 0.0090
## 14 2 Orta 0.9597 0.946 -0.0137 0.0101
## 15 2 Çətin 0.7688 0.754 -0.0148 0.0193
# Cavab ehtimallarının vizuallaşdırılması
visualize_response_patterns <- function() {
# İtem Characteristic Curve (ICC) məlumatları
theta_seq <- seq(-4, 4, 0.1)
# Müxtəlif item növləri
items <- list(
"Asan (b=-1.5)" = data.frame(a = 1.2, b = -1.5, c = 0.1),
"Orta (b=0.0)" = data.frame(a = 1.5, b = 0.0, c = 0.15),
"Çətin (b=1.5)" = data.frame(a = 1.8, b = 1.5, c = 0.2)
)
icc_data <- data.frame()
for(item_name in names(items)) {
item_params <- items[[item_name]]
for(theta in theta_seq) {
a <- item_params$a
b <- item_params$b
c <- item_params$c
prob <- c + (1 - c) * plogis(a * (theta - b))
temp_data <- data.frame(
Theta = theta,
Probability = prob,
Item = item_name
)
icc_data <- rbind(icc_data, temp_data)
}
}
# ICC qrafiki
p1 <- ggplot(icc_data, aes(x = Theta, y = Probability, color = Item)) +
geom_line(size = 1.2) +
labs(title = "Item Characteristic Curves (ICC)",
subtitle = "Müxtəlif çətinlik səviyyələrində doğru cavab ehtimalları",
x = "Bacarıq Səviyyəsi (θ)",
y = "Doğru Cavab Ehtimalı") +
theme_minimal() +
scale_color_viridis_d() +
ylim(0, 1) +
geom_hline(yintercept = 0.5, linetype = "dashed", alpha = 0.5)
print(p1)
return(icc_data)
}
# ICC vizuallaşdırması
icc_plots <- visualize_response_patterns()
# Xəta təsirinin vizuallaşdırılması
visualize_error_effects <- function() {
cat("\n=== XƏTA TƏSİRİNİN VİZUALLAşDIRILMASI ===\n")
# Simulyasiya məlumatları
theta_test <- 0.5
item_test <- data.frame(a = 1.5, b = 0.2, c = 0.15)
n_simulations <- 1000
# Xətasız nəticələr
set.seed(555)
clean_responses <- numeric(n_simulations)
for(i in 1:n_simulations) {
result <- generate_response(theta_test, item_test, include_error = FALSE)
clean_responses[i] <- result$response
}
# Xətalı nəticələr
set.seed(555)
noisy_responses <- numeric(n_simulations)
for(i in 1:n_simulations) {
result <- generate_response(theta_test, item_test, include_error = TRUE)
noisy_responses[i] <- result$response
}
# Müqayisə məlumatları
comparison_data <- data.frame(
Response = c(clean_responses, noisy_responses),
Type = rep(c("Xətasız", "Xətalı"), each = n_simulations)
)
# Histogram müqayisəsi
p2 <- ggplot(comparison_data, aes(x = as.factor(Response), fill = Type)) +
geom_bar(position = "dodge", alpha = 0.7) +
labs(title = "Xəta Təsirinin Müqayisəsi",
subtitle = paste("θ =", theta_test, ", n =", n_simulations),
x = "Cavab (0 = Yanlış, 1 = Doğru)",
y = "Tezlik",
fill = "Növ") +
theme_minimal() +
scale_fill_manual(values = c("Xətasız" = "lightblue", "Xətalı" = "lightcoral"))
print(p2)
# Statistik müqayisə
cat("Xətasız uğur dərəcəsi:", round(mean(clean_responses), 3), "\n")
cat("Xətalı uğur dərəcəsi:", round(mean(noisy_responses), 3), "\n")
cat("Fərq:", round(mean(noisy_responses) - mean(clean_responses), 3), "\n")
return(comparison_data)
}
error_viz_data <- visualize_error_effects()
##
## === XƏTA TƏSİRİNİN VİZUALLAşDIRILMASI ===
## Xətasız uğur dərəcəsi: 0.673
## Xətalı uğur dərəcəsi: 0.674
## Fərq: 0.001
# Bacarıq səviyyəsi vs Performans vizuallaşdırması
visualize_ability_performance <- function() {
if(exists("comprehensive_results")) {
# Orta çətinlikdə sual üçün nəticələr
moderate_results <- comprehensive_results[comprehensive_results$Item_Difficulty == 0.0, ]
p3 <- ggplot(moderate_results, aes(x = Theta, y = Success_Rate)) +
geom_line(size = 1.2, color = "blue") +
geom_point(size = 2, color = "darkblue") +
geom_smooth(method = "loess", se = TRUE, alpha = 0.3, color = "red") +
labs(title = "Bacarıq Səviyyəsi vs Uğur Dərəcəsi",
subtitle = "Orta çətinlikdə sual üçün (b = 0.0)",
x = "Bacarıq Səviyyəsi (θ)",
y = "Uğur Dərəcəsi") +
theme_minimal() +
ylim(0, 1) +
geom_hline(yintercept = 0.5, linetype = "dashed", alpha = 0.5)
print(p3)
# Bütün çətinlik səviyyələri üçün
p4 <- ggplot(comprehensive_results, aes(x = Theta, y = Success_Rate, color = as.factor(Item_Difficulty))) +
geom_line(size = 1) +
labs(title = "Müxtəlif Çətinlik Səviyyələrində Performans",
x = "Bacarıq Səviyyəsi (θ)",
y = "Uğur Dərəcəsi",
color = "Item Çətinliyi (b)") +
theme_minimal() +
scale_color_viridis_d() +
ylim(0, 1)
print(p4)
}
}
visualize_ability_performance()
# CAT simulyasiyası üçün cavab generasiya sistemi
simulate_cat_session <- function(true_theta, item_bank, max_items = 15) {
cat("=== CAT SESSİYA SİMULYASİYASI ===\n")
cat("Həqiqi θ:", true_theta, "\n")
cat("Maksimum item sayı:", max_items, "\n\n")
# CAT sessiya məlumatları
administered_items <- c()
responses <- c()
theta_estimates <- c()
se_estimates <- c()
for(step in 1:max_items) {
# Sadə item seçimi (təsadüfi, available items-dən)
available_items <- setdiff(1:nrow(item_bank), administered_items)
if(length(available_items) == 0) break
selected_item <- sample(available_items, 1)
# Response generasiyası
item_params <- item_bank[selected_item, ]
response_result <- generate_response(true_theta, item_params, include_error = TRUE)
administered_items <- c(administered_items, selected_item)
responses <- c(responses, response_result$response)
# Sadə theta qiymətləndirməsi
if(length(responses) >= 3) {
prop_correct <- mean(responses)
if(prop_correct >= 0.95) {
current_theta <- 2.5
current_se <- 0.4
} else if(prop_correct <= 0.05) {
current_theta <- -2.5
current_se <- 0.4
} else {
current_theta <- log(prop_correct / (1 - prop_correct))
current_se <- 1 / sqrt(length(responses))
}
} else {
current_theta <- 0
current_se <- 1.0
}
theta_estimates <- c(theta_estimates, current_theta)
se_estimates <- c(se_estimates, current_se)
cat("Addım", step, ":\n")
cat(" Item:", selected_item, "| Response:", response_result$response, "\n")
cat(" θ̂:", round(current_theta, 3), "| SE:", round(current_se, 3), "\n")
cat(" Error:", round(abs(current_theta - true_theta), 3), "\n\n")
# Sonlandırma kriteri
if(current_se <= 0.3 && length(responses) >= 5) {
cat("Sonlandırma kriteri yerinə yetirildi (SE ≤ 0.3)\n")
break
}
}
return(list(
items = administered_items,
responses = responses,
theta_estimates = theta_estimates,
se_estimates = se_estimates,
final_theta = tail(theta_estimates, 1),
final_se = tail(se_estimates, 1),
test_length = length(responses)
))
}
# Nümunə item bank yaradılması
create_sample_bank <- function(n_items = 100) {
set.seed(666)
item_bank <- data.frame(
item_id = 1:n_items,
a = runif(n_items, 0.8, 2.5), # Ayrıd etmə
b = rnorm(n_items, 0, 1.2), # Çətinlik
c = runif(n_items, 0.1, 0.25) # Təsadüfi cavab
)
return(item_bank)
}
# CAT simulyasiyası
sample_bank <- create_sample_bank(50)
cat_session <- simulate_cat_session(true_theta = 1.2, item_bank = sample_bank)
## === CAT SESSİYA SİMULYASİYASI ===
## Həqiqi θ: 1.2
## Maksimum item sayı: 15
##
## Addım 1 :
## Item: 16 | Response: 0
## θ̂: 0 | SE: 1
## Error: 1.2
##
## Addım 2 :
## Item: 26 | Response: 1
## θ̂: 0 | SE: 1
## Error: 1.2
##
## Addım 3 :
## Item: 43 | Response: 1
## θ̂: 0.693 | SE: 0.577
## Error: 0.507
##
## Addım 4 :
## Item: 18 | Response: 1
## θ̂: 1.099 | SE: 0.5
## Error: 0.101
##
## Addım 5 :
## Item: 34 | Response: 1
## θ̂: 1.386 | SE: 0.447
## Error: 0.186
##
## Addım 6 :
## Item: 32 | Response: 1
## θ̂: 1.609 | SE: 0.408
## Error: 0.409
##
## Addım 7 :
## Item: 31 | Response: 1
## θ̂: 1.792 | SE: 0.378
## Error: 0.592
##
## Addım 8 :
## Item: 35 | Response: 0
## θ̂: 1.099 | SE: 0.354
## Error: 0.101
##
## Addım 9 :
## Item: 19 | Response: 1
## θ̂: 1.253 | SE: 0.333
## Error: 0.053
##
## Addım 10 :
## Item: 30 | Response: 1
## θ̂: 1.386 | SE: 0.316
## Error: 0.186
##
## Addım 11 :
## Item: 50 | Response: 1
## θ̂: 1.504 | SE: 0.302
## Error: 0.304
##
## Addım 12 :
## Item: 47 | Response: 1
## θ̂: 1.609 | SE: 0.289
## Error: 0.409
##
## Sonlandırma kriteri yerinə yetirildi (SE ≤ 0.3)
## === CAT SESSİYA NƏTİCƏLƏRİ ===
## Test uzunluğu: 12
## Final θ qiymətləndirməsi: 1.609
## Final SE: 0.289
## Mütləq xəta: 0.409
# Böyük həcmli Monte Carlo simulyasiyası
monte_carlo_simulation <- function(n_subjects = 100, n_items = 20, theta_mean = 0, theta_sd = 1) {
cat("=== MONTE CARLO SİMULYASİYASI ===\n")
cat("Test alıcı sayı:", n_subjects, "\n")
cat("Item sayı:", n_items, "\n")
cat("Theta parametrləri: μ =", theta_mean, ", σ =", theta_sd, "\n\n")
# Item bank yaratma
set.seed(777)
item_bank <- data.frame(
a = runif(n_items, 0.8, 2.0),
b = rnorm(n_items, 0, 1.0),
c = runif(n_items, 0.1, 0.2)
)
# Təsadüfi bacarıq səviyyələri
true_thetas <- rnorm(n_subjects, theta_mean, theta_sd)
# Response matrix
response_matrix <- matrix(NA, nrow = n_subjects, ncol = n_items)
# Simulyasiya
for(subject in 1:n_subjects) {
for(item in 1:n_items) {
result <- generate_response(
true_theta = true_thetas[subject],
item_params = item_bank[item, ],
include_error = TRUE
)
response_matrix[subject, item] <- result$response
}
if(subject %% 25 == 0) {
cat("İşlənildi:", subject, "/", n_subjects, "test alıcısı\n")
}
}
# Əsas statistikalar
subject_scores <- rowSums(response_matrix)
item_difficulties <- colMeans(response_matrix)
cat("\n=== SİMULYASİYA NƏTİCƏLƏRİ ===\n")
cat("Orta test nöqtəsi:", round(mean(subject_scores), 2), "\n")
cat("Test nöqtəsi SD:", round(sd(subject_scores), 2), "\n")
cat("Ən asan item difficulty:", round(max(item_difficulties), 3), "\n")
cat("Ən çətin item difficulty:", round(min(item_difficulties), 3), "\n")
return(list(
response_matrix = response_matrix,
true_thetas = true_thetas,
subject_scores = subject_scores,
item_difficulties = item_difficulties,
item_bank = item_bank
))
}
# Monte Carlo simulyasiyası (kiçik nümunə)
mc_results <- monte_carlo_simulation(n_subjects = 50, n_items = 10)
## === MONTE CARLO SİMULYASİYASI ===
## Test alıcı sayı: 50
## Item sayı: 10
## Theta parametrləri: μ = 0 , σ = 1
##
## İşlənildi: 25 / 50 test alıcısı
## İşlənildi: 50 / 50 test alıcısı
##
## === SİMULYASİYA NƏTİCƏLƏRİ ===
## Orta test nöqtəsi: 5.3
## Test nöqtəsi SD: 2.06
## Ən asan item difficulty: 0.8
## Ən çətin item difficulty: 0.14
# Əlaqə təhlili
correlation_analysis <- function(mc_results) {
cat("\n=== ƏLAQƏ TƏHLİLİ ===\n")
# Həqiqi theta vs observed score
cor_theta_score <- cor(mc_results$true_thetas, mc_results$subject_scores)
cat("Həqiqi θ və müşahidə edilən nöqtə arasında əlaqə:", round(cor_theta_score, 3), "\n")
# Item parametrləri vs müşahidə edilən çətinlik
cor_b_difficulty <- cor(mc_results$item_bank$b, 1 - mc_results$item_difficulties)
cat("Item b parametri və müşahidə edilən çətinlik:", round(cor_b_difficulty, 3), "\n")
return(list(
theta_score_cor = cor_theta_score,
b_difficulty_cor = cor_b_difficulty
))
}
correlations <- correlation_analysis(mc_results)
##
## === ƏLAQƏ TƏHLİLİ ===
## Həqiqi θ və müşahidə edilən nöqtə arasında əlaqə: 0.842
## Item b parametri və müşahidə edilən çətinlik: 0.934
# Yüksək performanslı vektorlaşdırılmış cavab generasiya
vectorized_response_generation <- function(theta_vector, item_params_matrix, include_error = TRUE) {
cat("=== VEKTORLAşDIRILMIş CAVAB GENERASİYASI ===\n")
cat("Theta sayı:", length(theta_vector), "\n")
cat("Item sayı:", nrow(item_params_matrix), "\n")
cat("Toplam hesablama:", length(theta_vector) * nrow(item_params_matrix), "\n\n")
n_subjects <- length(theta_vector)
n_items <- nrow(item_params_matrix)
# Response matrix yaratma
response_matrix <- matrix(NA, nrow = n_subjects, ncol = n_items)
prob_matrix <- matrix(NA, nrow = n_subjects, ncol = n_items)
start_time <- Sys.time()
# Vektorlaşdırılmış hesablama
for(i in 1:n_items) {
a_i <- item_params_matrix$a[i]
b_i <- item_params_matrix$b[i]
c_i <- item_params_matrix$c[i]
# Bütün subjects üçün eyni zamanda hesablama
prob_correct <- c_i + (1 - c_i) * plogis(a_i * (theta_vector - b_i))
# Xəta əlavə etmə
if(include_error) {
error_factors <- rnorm(n_subjects, 0, 0.05)
prob_correct <- pmax(0, pmin(1, prob_correct + error_factors))
}
# Response generasiyası
responses <- rbinom(n_subjects, 1, prob_correct)
response_matrix[, i] <- responses
prob_matrix[, i] <- prob_correct
}
end_time <- Sys.time()
computation_time <- as.numeric(end_time - start_time)
cat("Hesablama vaxtı:", round(computation_time, 3), "saniyə\n")
cat("Saniyədə hesablama:", round(n_subjects * n_items / computation_time), "\n")
return(list(
response_matrix = response_matrix,
probability_matrix = prob_matrix,
computation_time = computation_time,
subjects_per_second = n_subjects * n_items / computation_time
))
}
# Performans testi
set.seed(888)
test_thetas <- rnorm(200, 0, 1)
test_items <- data.frame(
a = runif(25, 0.8, 2.0),
b = rnorm(25, 0, 1.0),
c = runif(25, 0.1, 0.2)
)
vectorized_results <- vectorized_response_generation(test_thetas, test_items)
## === VEKTORLAşDIRILMIş CAVAB GENERASİYASI ===
## Theta sayı: 200
## Item sayı: 25
## Toplam hesablama: 5000
##
## Hesablama vaxtı: 0.002 saniyə
## Saniyədə hesablama: 3297927
# Keyfiyyət yoxlaması
quality_check <- function(vectorized_results, test_thetas, test_items) {
cat("\n=== KEYFİYYƏT YOXLAMASI ===\n")
# Təsadüfi nümunə seçimi və manual yoxlama
subject_idx <- sample(1:length(test_thetas), 1)
item_idx <- sample(1:nrow(test_items), 1)
# Manual hesablama
theta <- test_thetas[subject_idx]
item_params <- test_items[item_idx, ]
manual_result <- generate_response(theta, item_params, include_error = FALSE)
# Vektorlaşdırılmış nəticə
vectorized_prob <- vectorized_results$probability_matrix[subject_idx, item_idx]
cat("Manual ehtimal:", round(manual_result$prob_correct, 4), "\n")
cat("Vektorlaşdırılmış ehtimal:", round(vectorized_prob, 4), "\n")
cat("Fərq:", round(abs(manual_result$prob_correct - vectorized_prob), 6), "\n")
# Ümumi statistika yoxlaması
overall_response_rate <- mean(vectorized_results$response_matrix)
expected_rate <- 0.5 # Təxmini gözlənilən orta (theta=0, b=0 ətrafında)
cat("Ümumi uğur dərəcəsi:", round(overall_response_rate, 3), "\n")
cat("Gözlənilən təxmini:", expected_rate, "\n")
}
quality_check(vectorized_results, test_thetas, test_items)
##
## === KEYFİYYƏT YOXLAMASI ===
## Manual ehtimal: 0.1615
## Vektorlaşdırılmış ehtimal: 0.1899
## Fərq: 0.02842
## Ümumi uğur dərəcəsi: 0.588
## Gözlənilən təxmini: 0.5
# Metodoloji tövsiyələrin ətraflı təqdimatı
provide_methodological_guidance <- function() {
cat("=== METODOLOJİ BƏLƏDÇI ===\n\n")
cat("1. TƏSADÜFİ SAYLARIN NƏZARƏTİ:\n")
cat(" ✓ Hər simulyasiya üçün set.seed() istifadə edin\n")
cat(" ✓ Təkrarlanar nəticələr üçün seed dəyərini qeyd edin\n")
cat(" ✓ Müxtəlif seed dəyərləri ilə robustness yoxlayın\n")
cat(" ✓ RNG state-ni simulyasiya başında saxlayın\n\n")
cat("2. PARAMETER VALİDASİYASI:\n")
cat(" ✓ a parametri: 0.1 ≤ a ≤ 5.0 (praktiki aralıq)\n")
cat(" ✓ b parametri: -4.0 ≤ b ≤ 4.0 (teoretik aralıq)\n")
cat(" ✓ c parametri: 0.0 ≤ c ≤ 0.5 (məntiqli aralıq)\n")
cat(" ✓ theta dəyərləri: -6.0 ≤ θ ≤ 6.0 (ekstrem həddlər)\n\n")
cat("3. XƏTA MODELLƏşDİRMƏSİ:\n")
cat(" ✓ Standart xəta: SD = 0.05 (orta şəraitlər)\n")
cat(" ✓ Yüksək stress: SD = 0.08-0.10\n")
cat(" ✓ İdeal şəraitlər: SD = 0.02-0.03\n")
cat(" ✓ Çox pis şəraitlər: SD = 0.12-0.15\n\n")
cat("4. PERFORMANS OPTİMİZASİYASI:\n")
cat(" ✓ n < 1000: Sadə loop istifadə edin\n")
cat(" ✓ n > 1000: Vektorlaşdırılmış əməliyyatlar\n")
cat(" ✓ n > 10000: Paralel hesablama nəzərə alın\n")
cat(" ✓ Memory management böyük simulyasiyalarda\n\n")
cat("5. KEYFİYYƏT NƏZARƏTİ:\n")
cat(" ✓ Nəzəri vs empirik ehtimal müqayisəsi\n")
cat(" ✓ Edge case testləri (θ = ±∞, extreme parameters)\n")
cat(" ✓ Convergence yoxlaması böyük n üçün\n")
cat(" ✓ Robustness analizi müxtəlif şəraitlərdə\n")
}
provide_methodological_guidance()
## === METODOLOJİ BƏLƏDÇI ===
##
## 1. TƏSADÜFİ SAYLARIN NƏZARƏTİ:
## ✓ Hər simulyasiya üçün set.seed() istifadə edin
## ✓ Təkrarlanar nəticələr üçün seed dəyərini qeyd edin
## ✓ Müxtəlif seed dəyərləri ilə robustness yoxlayın
## ✓ RNG state-ni simulyasiya başında saxlayın
##
## 2. PARAMETER VALİDASİYASI:
## ✓ a parametri: 0.1 ≤ a ≤ 5.0 (praktiki aralıq)
## ✓ b parametri: -4.0 ≤ b ≤ 4.0 (teoretik aralıq)
## ✓ c parametri: 0.0 ≤ c ≤ 0.5 (məntiqli aralıq)
## ✓ theta dəyərləri: -6.0 ≤ θ ≤ 6.0 (ekstrem həddlər)
##
## 3. XƏTA MODELLƏşDİRMƏSİ:
## ✓ Standart xəta: SD = 0.05 (orta şəraitlər)
## ✓ Yüksək stress: SD = 0.08-0.10
## ✓ İdeal şəraitlər: SD = 0.02-0.03
## ✓ Çox pis şəraitlər: SD = 0.12-0.15
##
## 4. PERFORMANS OPTİMİZASİYASI:
## ✓ n < 1000: Sadə loop istifadə edin
## ✓ n > 1000: Vektorlaşdırılmış əməliyyatlar
## ✓ n > 10000: Paralel hesablama nəzərə alın
## ✓ Memory management böyük simulyasiyalarda
##
## 5. KEYFİYYƏT NƏZARƏTİ:
## ✓ Nəzəri vs empirik ehtimal müqayisəsi
## ✓ Edge case testləri (θ = ±∞, extreme parameters)
## ✓ Convergence yoxlaması böyük n üçün
## ✓ Robustness analizi müxtəlif şəraitlərdə
# Praktiki implementation nümunələri
practical_implementation_examples <- function() {
cat("\n=== PRATİKİ İMPLEMENTASİYA NÜMUNƏLƏRİ ===\n\n")
cat("NÜMUNƏ 1: Təhsil Qiymətləndirməsi\n")
cat("• Parametr aralıqları: a(0.8-2.5), b(-2,2), c(0.05-0.2)\n")
cat("• Xəta səviyyəsi: SD = 0.04 (standart)\n")
cat("• Test uzunluğu: 15-25 item\n")
cat("• Məqsəd: Dərs müvəffəqiyyətinin qiymətləndirilməsi\n\n")
cat("NÜMUNƏ 2: Peşəkar Sertifikasiya\n")
cat("• Parametr aralıqları: a(1.0-3.0), b(-1,3), c(0.10-0.25)\n")
cat("• Xəta səviyyəsi: SD = 0.06 (stress faktoru)\n")
cat("• Test uzunluğu: 20-40 item\n")
cat("• Məqsəd: Peşəkar səriştənin təsdiqi\n\n")
cat("NÜMUNƏ 3: Tədqiqat Məqsədləri\n")
cat("• Parametr aralıqları: a(0.5-2.0), b(-3,3), c(0.0-0.3)\n")
cat("• Xəta səviyyəsi: SD = 0.03 (nəzarət altında)\n")
cat("• Test uzunluğu: Variable\n")
cat("• Məqsəd: Psixometrik model tədqiqi\n\n")
cat("NÜMUNƏ 4: Klinik Qiymətləndirmə\n")
cat("• Parametr aralıqları: a(1.2-2.8), b(-2,2), c(0.05-0.15)\n")
cat("• Xəta səviyyəsi: SD = 0.05 (tibbi kontekst)\n")
cat("• Test uzunluğu: 10-30 item\n")
cat("• Məqsəd: Klinik simptomların qiymətləndirilməsi\n")
}
practical_implementation_examples()
##
## === PRATİKİ İMPLEMENTASİYA NÜMUNƏLƏRİ ===
##
## NÜMUNƏ 1: Təhsil Qiymətləndirməsi
## • Parametr aralıqları: a(0.8-2.5), b(-2,2), c(0.05-0.2)
## • Xəta səviyyəsi: SD = 0.04 (standart)
## • Test uzunluğu: 15-25 item
## • Məqsəd: Dərs müvəffəqiyyətinin qiymətləndirilməsi
##
## NÜMUNƏ 2: Peşəkar Sertifikasiya
## • Parametr aralıqları: a(1.0-3.0), b(-1,3), c(0.10-0.25)
## • Xəta səviyyəsi: SD = 0.06 (stress faktoru)
## • Test uzunluğu: 20-40 item
## • Məqsəd: Peşəkar səriştənin təsdiqi
##
## NÜMUNƏ 3: Tədqiqat Məqsədləri
## • Parametr aralıqları: a(0.5-2.0), b(-3,3), c(0.0-0.3)
## • Xəta səviyyəsi: SD = 0.03 (nəzarət altında)
## • Test uzunluğu: Variable
## • Məqsəd: Psixometrik model tədqiqi
##
## NÜMUNƏ 4: Klinik Qiymətləndirmə
## • Parametr aralıqları: a(1.2-2.8), b(-2,2), c(0.05-0.15)
## • Xəta səviyyəsi: SD = 0.05 (tibbi kontekst)
## • Test uzunluğu: 10-30 item
## • Məqsəd: Klinik simptomların qiymətləndirilməsi
# Troubleshooting bələdçisi
troubleshooting_guide <- function() {
cat("\n=== TROUBLESHOOTİNG BƏLƏDÇISI ===\n\n")
cat("Problem 1: Qeyri-realistik yüksək/aşağı ehtimallar\n")
cat("Həll:\n")
cat("• c parametrini yoxlayın (0 ≤ c ≤ 0.5)\n")
cat("• a parametrinin məntiqli olduğunu təsdiq edin\n")
cat("• Ekstrem theta dəyərlərini məhdudlaşdırın\n\n")
cat("Problem 2: Çox yavaş performans\n")
cat("Həll:\n")
cat("• Vektorlaşdırılmış əməliyyatlara keçin\n")
cat("• Loop-ları azaldın\n")
cat("• Paralel hesablama istifadə edin\n")
cat("• Memory-ni effektiv idarə edin\n\n")
cat("Problem 3: Təkrarlanmayan nəticələr\n")
cat("Həll:\n")
cat("• set.seed() hər simulyasiya üçün istifadə edin\n")
cat("• RNG state-ni qeyd edin\n")
cat("• Xəta mənbələrini nəzarət altına alın\n\n")
cat("Problem 4: Nəzəri modeldən sapma\n")
cat("Həll:\n")
cat("• include_error = FALSE ilə test edin\n")
cat("• Parameter validasiyası aparın\n")
cat("• Implementation-ı matematik formulla müqayisə edin\n")
}
troubleshooting_guide()
##
## === TROUBLESHOOTİNG BƏLƏDÇISI ===
##
## Problem 1: Qeyri-realistik yüksək/aşağı ehtimallar
## Həll:
## • c parametrini yoxlayın (0 ≤ c ≤ 0.5)
## • a parametrinin məntiqli olduğunu təsdiq edin
## • Ekstrem theta dəyərlərini məhdudlaşdırın
##
## Problem 2: Çox yavaş performans
## Həll:
## • Vektorlaşdırılmış əməliyyatlara keçin
## • Loop-ları azaldın
## • Paralel hesablama istifadə edin
## • Memory-ni effektiv idarə edin
##
## Problem 3: Təkrarlanmayan nəticələr
## Həll:
## • set.seed() hər simulyasiya üçün istifadə edin
## • RNG state-ni qeyd edin
## • Xəta mənbələrini nəzarət altına alın
##
## Problem 4: Nəzəri modeldən sapma
## Həll:
## • include_error = FALSE ilə test edin
## • Parameter validasiyası aparın
## • Implementation-ı matematik formulla müqayisə edin
Bu bölmədə təqdim edilən cavab generasiya modeli psixometrik tədqiqatların və CAT sistemlərinin əsasını təşkil edir. Model həm nəzəri cəhətdən məqbul həm də praktiki tətbiqlər üçün çevikdir.
Bu cavab generasiya modeli növbəti bölmələrdə daha mürəkkəb CAT komponentləri üçün əsas təşkil edəcək:
Qeyd: Bu bölmədə təqdim edilən cavab generasiya modeli elmi dəqiqlik və praktiki çeviklik arasında balans yaradır. Model həm tədqiqat məqsədləri həm də əməli tətbiqlər üçün uyğundur və CAT sistemlərinin əsasını təşkil edir.