library(dplyr)
library(tidyr)
library(haven)
library(ggplot2)
library(ggalluvial)
library(kableExtra)
library(knitr)
library(writexl)library(haven)
library(dplyr)
df <- read_sav("C:/Users/Lenovo/Desktop/long_data_clean_updated.sav")
df <- df %>%
mutate(
# 1. Davranış örüntüsü kodlama
DavranisOruntusu = paste0(
ifelse(QuickFirst == 1, "Q", ""),
ifelse(HighReview == 1, "R", ""),
ifelse(SolutionBehavior == 1, "S", "")
),
DavranisOruntusu = ifelse(DavranisOruntusu == "", "None", DavranisOruntusu),
# 2. Ağırlıklı işlem çabası skoru
DavranisSkoru_Agirlikli = QuickFirst * 0.3 + HighReview * 1.0 + SolutionBehavior * 1.5,
# 3. Ortalama skor
OrtalamaSkor = mean(DavranisSkoru_Agirlikli, na.rm = TRUE),
# 4. PET sınıflaması (Yetkin, Tahmin, YanlışAnladi, Dikkatsiz)
PET = case_when(
!is.na(Correctness) & !is.na(DavranisSkoru_Agirlikli) & Correctness == 1 & DavranisSkoru_Agirlikli >= OrtalamaSkor ~ "Yetkin",
!is.na(Correctness) & !is.na(DavranisSkoru_Agirlikli) & Correctness == 1 & DavranisSkoru_Agirlikli < OrtalamaSkor ~ "Tahmin",
!is.na(Correctness) & !is.na(DavranisSkoru_Agirlikli) & Correctness == 0 & DavranisSkoru_Agirlikli >= OrtalamaSkor ~ "YanlisAnladi",
!is.na(Correctness) & !is.na(DavranisSkoru_Agirlikli) & Correctness == 0 & DavranisSkoru_Agirlikli < OrtalamaSkor ~ "Dikkatsiz",
TRUE ~ NA_character_
),
# 5. Tutarsiz profil kodlama
Tahmin = ifelse(Correctness == 1 & QuickFirst == 1 & HighReview == 0 & SolutionBehavior == 0, 1, 0),
SansliTahmin = ifelse(Correctness == 1 & QuickFirst == 1 & (HighReview == 1 | SolutionBehavior == 1), 1, 0),
YanlisAnlama = ifelse(Correctness == 0 & DavranisSkoru_Agirlikli >= OrtalamaSkor, 1, 0),
CevapYok = ifelse(ResponseGiven == 0, 1, 0),
ProfilKodu = case_when(
CevapYok == 1 ~ 4,
Tahmin == 1 ~ 1,
YanlisAnlama == 1 ~ 2,
SansliTahmin == 1 ~ 3,
TRUE ~ 0
),
ProfilEtiketi = case_when(
ProfilKodu == 0 ~ "Tutarsiz Degil",
ProfilKodu == 1 ~ "Tahmin",
ProfilKodu == 2 ~ "Yanlis Anlama",
ProfilKodu == 3 ~ "Sansli Tahmin",
ProfilKodu == 4 ~ "Cevap Yok"
),
# 6. DDI Skoru ve etiketi
DDI = abs(Correctness - (DavranisSkoru_Agirlikli / 3)),
DDI_Etiket = case_when(
DDI <= 0.25 ~ "Tutarsiz Degil",
DDI > 0.25 & DDI <= 0.60 ~ "Kismi Tutarsizlik",
DDI > 0.60 ~ "Yuksek Tutarsizlik"
)
)Frekans ve Örüntü Dağılımı
Profil etiketi
PET (Performance/Effort Typology)
Öğrencilerin sınav performansları ile işlem çabalarını birlikte değerlendirip 4 kategoride topladım.
Tahmin: Öğrenciler doğru cevap vermiş ancak işlem çabası düşük. Bu durum, doğru cevabın şans eseri verilmiş olabileceğini ya da öğrencinin konu hakkında yüzeysel bilgiye sahip olduğunu düşündürür.
Yanlış Anlama: Bu kategoriye giren öğrenciler yanlış cevap vermiş fakat yüksek düzeyde çaba göstermiş. Bu durum, öğrencinin soruya dikkatle yaklaştığını ancak konuyu kavrayamadığını ya da yanlış anladığını gösterir.
Dikkatsiz: Öğrenciler hem yanlış cevap vermiş hem de düşük çaba göstermiştir. Bu, öğrencinin motivasyon eksikliği yaşadığı ya da dikkatsiz davrandığı anlamına gelir.
Davranış Örüntüsü (Q, R, S) Dağılımı
Öğrencilerin sınav sırasında sergiledikleri işlem süreci temelli davranış örüntüleri incelendi. Davranış örüntüleri; hızlı yanıt verme (Q: QuickFirst), gözden geçirme yapma (R: HighReview) ve anlamlı çözüm üretme (S: SolutionBehavior) olmak üzere üç temel bileşenin varlığına göre tanımlandı. Her öğrenci, bu davranışların kombinasyonuna göre bir örüntü etiketi aldı.
Elde edilen frekans dağılımına göre:
. S (n = 42.012): En yaygın örüntü, yalnızca anlamlı çözüm davranışı gösteren öğrencilerdir. Bu durum, öğrencilerin önemli bir kısmının sorulara bilişsel çaba harcayarak yaklaştığını göstermektedir.
. None (n = 22.002): İkinci en yaygın örüntü, hiçbir stratejik davranış göstermeyen öğrencilerden oluşmaktadır. Bu gruptakiler ne hızlı yanıt vermiş ne gözden geçirme yapmış ne de anlamlı çözüm üretmiştir. Bu durum, düşük çaba veya motivasyon eksikliği ile ilişkili olabilir.
. Q (n = 16.579) ve R (n = 16.578): Sadece hızlı yanıt veren ya da yalnızca gözden geçirme yapan öğrenciler neredeyse eşit sayıda yer almıştır. Bu bulgu, öğrenciler arasında belirli stratejilerin tek başına kullanımının oldukça yaygın olduğunu göstermektedir.
. QR (n = 10.284): Hem hızlı yanıt verip hem de gözden geçirme yapan öğrenciler daha sınırlı sayıdadır. Bu örüntü, hızlı karar alıp sonrasında yanıtını gözden geçirme eğilimini yansıtabilir.
. NANANA (n = 1.667): Bu değer, eksik veri veya kodlama hatasından mı kaynaklandı? neden oldu anlamadım.
Grafik: Profil Etiketi Dağılımı
ggplot(df, aes(x = ProfilEtiketi)) +
geom_bar(fill = "skyblue") +
labs(title = "Discrepant Profil Etiketi Dağılımı", x = "Profil", y = "Frekans")Doğruluk (Correctness) ile Ağırlıklı Skor İlişkisi
Öğrencinin doğru cevap verip vermemesi, davranış skoru ile ilişkili mi? (He & von Davier (2016), Goldhammer & Naumann (2011)
ggplot(df, aes(x = as.factor(Correctness), y = DavranisSkoru_Agirlikli)) +
geom_violin(trim = FALSE, fill = "lightblue") +
stat_summary(fun = "mean", geom = "point", shape = 21, size = 3, fill = "red") +
labs(x = "Doğruluk (0 = Yanlış, 1 = Doğru)", y = "Ağırlıklı Davranış Skoru",
title = "Correctness'e Göre Davranış Skoru Dağılımı (Violin Plot)")## Warning: Removed 1667 rows containing non-finite outside the scale range
## (`stat_ydensity()`).
## Warning: Removed 1667 rows containing non-finite outside the scale range
## (`stat_summary()`).
df %>%
group_by(Correctness) %>%
summarise(Ortalama_Skor = mean(DavranisSkoru_Agirlikli, na.rm = TRUE)) %>%
ggplot(aes(x = as.factor(Correctness), y = Ortalama_Skor, fill = as.factor(Correctness))) +
geom_bar(stat = "identity") +
labs(x = "Doğruluk", y = "Ortalama Davranış Skoru",
title = "Doğru ve Yanlış Yanıtlarda Ortalama Davranış Skoru") +
theme_minimal()##
## Welch Two Sample t-test
##
## data: DavranisSkoru_Agirlikli by Correctness
## t = -10.889, df = 88854, p-value < 2.2e-16
## alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
## 95 percent confidence interval:
## -0.05084307 -0.03533138
## sample estimates:
## mean in group 0 mean in group 1
## 0.9052720 0.9483592
PET ve Profil Etiketinin Uyum Analizi
PET sınıflaması ile davranış temelli profiller örtüşüyor mu? (Shin et al. (2022), Kroehne & Goldhammer (2018)
##
## Cevap Yok Sansli Tahmin Tahmin Tutarsiz Degil Yanlis Anlama
## Dikkatsiz 0 0 0 21557 0
## Tahmin 0 0 5858 7110 0
## YanlisAnladi 0 0 0 0 37244
## Yetkin 0 4060 0 22923 0
# Mozaik Grafik
ggplot(df, aes(x = PET, fill = ProfilEtiketi)) +
geom_bar(position = "fill") +
labs(y = "Oran", title = "PET vs. Profil Etiketi") +
theme_minimal()DDI Tutarsızlık Seviyesi Dağılımı
DDI değerlerine göre öğrenci dağılımı ve yayılımı (He et al. (2014); Naumann (2019)
df %>%
filter(!is.na(DDI)) %>%
ggplot(aes(x = as.factor(Correctness), y = DDI)) +
geom_boxplot() +
labs(x = "Doğruluk (0=Yanlış, 1=Doğru)", y = "DDI", title = "Doğruluk Bazında DDI Dağılımı")df %>%
filter(!is.na(DDI)) %>%
ggplot(aes(x = DDI)) +
geom_histogram(bins = 30, fill = "gray") +
labs(title = "DDI (Tutarsızlık Endeksi) Dağılımı", x = "DDI Skoru", y = "Frekans")PET Gruplarında Davranış Skoru Karşılaştırması
PET grupları süreç skorunda farklılık gösteriyor mu?
# Boxplot: PET'e göre Davranış Skoru
# Eksik değerleri filtreleyerek boxplot çiz
df %>%
filter(!is.na(DavranisSkoru_Agirlikli), !is.na(PET)) %>%
ggplot(aes(x = PET, y = DavranisSkoru_Agirlikli)) +
geom_boxplot(fill = "lightblue") +
labs(title = "PET Gruplarına Göre İşlem Skoru", x = "PET Grubu", y = "Ağırlıklı Skor")## Df Sum Sq Mean Sq F value Pr(>F)
## PET 3 34096 11365 318725 <2e-16 ***
## Residuals 98748 3521 0
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 10370 observations deleted due to missingness
library(dplyr)
library(knitr)
library(kableExtra)
df %>%
filter(!is.na(DDI_Etiket)) %>%
count(DDI_Etiket) %>%
mutate(
Yuzde = round(100 * n / sum(n), 1),
DDI_Etiket = factor(DDI_Etiket, levels = c("Tutarsiz Degil", "Kismi Tutarsizlik", "Yuksek Tutarsizlik"))
) %>%
arrange(DDI_Etiket) %>%
kable(
caption = "Tablo 1. Dual Discrepancy Index (DDI) Etiket Dagilimi",
col.names = c("DDI Seviyesi", "Frekans", "Yuzde (%)"),
format = "html"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| DDI Seviyesi | Frekans | Yuzde (%) |
|---|---|---|
| Tutarsiz Degil | 21557 | 21.8 |
| Kismi Tutarsizlik | 57163 | 57.9 |
| Yuksek Tutarsizlik | 20032 | 20.3 |
Profil Dagilimi
df %>%
filter(!is.na(ProfilEtiketi)) %>%
count(ProfilEtiketi) %>%
mutate(
Yuzde = round(100 * n / sum(n), 1),
ProfilEtiketi = factor(ProfilEtiketi,
levels = c("Tutarsiz Degil", "Tahmin", "Yanlis Anlama", "Sansli Tahmin", "Cevap Yok"))
) %>%
arrange(ProfilEtiketi) %>%
kable(
caption = "Tablo 2. Davranissal Profil Etiketlerinin Dagilimi",
col.names = c("Profil", "Frekans", "Yuzde (%)"),
format = "html"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| Profil | Frekans | Yuzde (%) |
|---|---|---|
| Tutarsiz Degil | 51590 | 47.3 |
| Tahmin | 5858 | 5.4 |
| Yanlis Anlama | 37244 | 34.1 |
| Sansli Tahmin | 4060 | 3.7 |
| Cevap Yok | 10370 | 9.5 |
PET × Profil
df %>%
filter(!is.na(PET), !is.na(ProfilEtiketi)) %>%
count(PET, ProfilEtiketi) %>%
pivot_wider(names_from = ProfilEtiketi, values_from = n, values_fill = 0) %>%
kable(
caption = "Tablo 3. PET × Profil Etiketleri Geçiş Tablosu",
format = "html"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| PET | Tutarsiz Degil | Tahmin | Yanlis Anlama | Sansli Tahmin |
|---|---|---|---|---|
| Dikkatsiz | 21557 | 0 | 0 | 0 |
| Tahmin | 7110 | 5858 | 0 | 0 |
| YanlisAnladi | 0 | 0 | 37244 | 0 |
| Yetkin | 22923 | 0 | 0 | 4060 |
DDI x Cinsiyet
library(dplyr)
library(tidyr)
library(knitr)
library(kableExtra)
df %>%
filter(!is.na(DDI_Etiket), !is.na(ITSEX), ITSEX %in% c(1, 2)) %>%
mutate(
DDI_Etiket = factor(DDI_Etiket, levels = c("Tutarsiz Degil", "Kismi Tutarsizlik", "Yuksek Tutarsizlik"))
) %>%
count(ITSEX, DDI_Etiket) %>%
group_by(ITSEX) %>%
mutate(Yuzde = round(100 * n / sum(n), 1)) %>%
ungroup() %>%
pivot_wider(names_from = DDI_Etiket, values_from = Yuzde, values_fill = 0) %>%
mutate(Cinsiyet = recode(ITSEX, `1` = "Erkek", `2` = "Kadin")) %>%
select(Cinsiyet, `Tutarsiz Degil`, `Kismi Tutarsizlik`, `Yuksek Tutarsizlik`) %>%
kable(
caption = "Tablo 4. Cinsiyete Göre DDI Dagilimi (Yüzde)",
col.names = c("Cinsiyet", "Tutarsiz Degil (%)", "Kismi Tutarsizlik (%)", "Yuksek Tutarsizlik (%)"),
format = "html"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| Cinsiyet | Tutarsiz Degil (%) | Kismi Tutarsizlik (%) | Yuksek Tutarsizlik (%) |
|---|---|---|---|
| Erkek | 22.3 | 0.0 | 0.0 |
| Erkek | 0.0 | 58.4 | 0.0 |
| Erkek | 0.0 | 0.0 | 19.4 |
| Kadin | 21.4 | 0.0 | 0.0 |
| Kadin | 0.0 | 57.4 | 0.0 |
| Kadin | 0.0 | 0.0 | 21.2 |
PET → Profil
library(ggalluvial)
library(ggplot2)
df %>%
filter(!is.na(PET), !is.na(ProfilEtiketi)) %>%
count(PET, ProfilEtiketi) %>%
ggplot(aes(axis1 = PET, axis2 = ProfilEtiketi, y = n)) +
geom_alluvium(aes(fill = PET), width = 1/12) +
geom_stratum(width = 1/12, fill = "gray90", color = "black") +
geom_text(stat = "stratum", aes(label = after_stat(stratum)), size = 3) +
scale_x_discrete(limits = c("PET", "Profil"), expand = c(.1, .1)) +
labs(title = "Sekil 1. PET → Profil Etiketleri Sankey Grafigi",
x = NULL, y = "Frekans") +
theme_minimal()## Warning in to_lodes_form(data = data, axes = axis_ind, discern =
## params$discern): Some strata appear at multiple axes.
## Warning in to_lodes_form(data = data, axes = axis_ind, discern =
## params$discern): Some strata appear at multiple axes.
## Warning in to_lodes_form(data = data, axes = axis_ind, discern =
## params$discern): Some strata appear at multiple axes.