steffi_Kappa

Author

Lars

#packages laden
library('reshape2')
Warning: Paket 'reshape2' wurde unter R Version 4.3.3 erstellt
library('vcd')
Warning: Paket 'vcd' wurde unter R Version 4.3.3 erstellt
Lade nötiges Paket: grid
library(ggplot2)
Warning: Paket 'ggplot2' wurde unter R Version 4.3.3 erstellt

##Alter Code Steff

##old chunk steffi
# Inter Rater Reliability - item wise
library("irr")
Lade nötiges Paket: lpSolve
dat_item <- read.table("ItemwiseCorrelation.csv", sep = ";", header = T)

Somatic_all <- na.omit(cbind(melt(dat_item[c(1:6)], id.vars = c("ID", "Tag_HSZT")), 
               melt(dat_item[c(1:2, 15:18)], id.vars = c("ID", "Tag_HSZT"))))
names(Somatic_all) <- c("ID", "Tag_HSZT", "Frage", "Staff","ID2", "Tag_HSZT2", "Frage2", "Parents")
Somatic_all <- Somatic_all[c("ID", "Tag_HSZT", "Frage", "Staff", "Parents")]
Somatic_all$Frage <- sub("P_", "", Somatic_all$Frage)

Mental_all <- na.omit(cbind(melt(dat_item[c(1:2, 7:14)], id.vars = c("ID", "Tag_HSZT")), 
               melt(dat_item[c(1:2, 19:26)], id.vars = c("ID", "Tag_HSZT"))))
names(Mental_all) <- c("ID", "Tag_HSZT", "Frage", "Staff","ID2", "Tag_HSZT2", "Frage2", "Parents")
Mental_all <- Mental_all[c("ID", "Tag_HSZT", "Frage", "Staff", "Parents")]
Mental_all$Frage <- sub("P_", "", Mental_all$Frage)

# calculate weighted kappa for each child for mental an somatic subscale
# see Cohen (1968)
wkappa_somatic <- NULL
wkappa_mental <- NULL
for(id in unique(Mental_all$ID)){
    wkappa_mental <- c(wkappa_mental, as.numeric(unlist(kappa2(Mental_all[Mental_all$ID == id,4:5], 
        weight = "squared"))["value"]))
    wkappa_somatic <- c(wkappa_somatic, as.numeric(unlist(kappa2(Somatic_all[Mental_all$ID == id,4:5], 
        weight = "squared"))["value"]))
}

##Für Mental

wkappa_mental <- NULL
for(id in unique(Mental_all$ID)){
    wkappa_mental <- c(wkappa_mental, as.numeric(unlist(kappa2(Mental_all[Mental_all$ID == id,4:5], 
        weight = "squared"))["value"]))
}

# Teststatistik aus Kappa2 ausgeben Z-Wert
wz_value_mental <- NULL
for(id in unique(Mental_all$ID)){
    wz_value_mental <- c(wz_value_mental, as.numeric(unlist(kappa2(Mental_all[Mental_all$ID == id,4:5], 
        weight = "squared"))["statistic"]))
}

# P-Wert aus Kappa2 ausgeben 

wp_value_mental <- NULL
for(id in unique(Mental_all$ID)){
    wp_value_mental <- c(wp_value_mental, as.numeric(unlist(kappa2(Mental_all[Mental_all$ID == id,4:5], 
        weight = "squared"))["p.value"]))
}

#Data Frame mit Test-Statistiken erstellen
kappa_results_mental <- data.frame(
    ID = unique(Mental_all$ID),
    Kappa = wkappa_mental,
    P_Value = wp_value_mental,
    Z_Value = wz_value_mental
)
#Signifkanz Yes No hinzufügen - Tabelle ausgeben Mean berechnen
kappa_results_mental$Signifikant <- ifelse(kappa_results_mental$P_Value < 0.05, "Yes", "No")

print(kappa_results_mental)
   ID        Kappa      P_Value    Z_Value Signifikant
1   1  0.083277367 3.858149e-01  0.8672321          No
2   2  0.349945829 4.422063e-03  2.8463711         Yes
3   3  0.408378044 9.012064e-05  3.9157579         Yes
4   4  0.303977273 1.141584e-02  2.5297053         Yes
5   5  0.018154312 8.883564e-01  0.1403843          No
6   6 -0.123165284 3.790909e-01 -0.8795726          No
7   7  0.030303030 7.873264e-01  0.2697840          No
8   8 -0.078629032 4.044062e-01 -0.8337778          No
9   9  0.338983051 1.709277e-02  2.3847061         Yes
10 10  0.383512545 1.140372e-03  3.2533891         Yes
11 11  0.123213070 3.181806e-01  0.9982037          No
12 12  0.527447833 2.208423e-05  4.2427043         Yes
13 13  0.391983968 8.332622e-03  2.6382862         Yes
14 14  0.163218391 1.402489e-01  1.4748647          No
15 15  0.005497526 8.786925e-01  0.1526269          No
16 16 -0.014196104 8.962361e-01 -0.1304175          No
17 18  0.054187192 6.305166e-01  0.4809998          No
18 20  0.257480315 5.939405e-02  1.8852651          No
19 21  0.055214724 6.396652e-01  0.4681670          No
20 22 -0.123018868 3.073479e-01 -1.0208028          No
21 23  0.151404406 1.405858e-01  1.4736130          No
22 24  0.323876315 9.683680e-03  2.5869245         Yes
23 25 -0.119724376 3.273281e-01 -0.9795099          No
24 26  0.209242619 7.210904e-02  1.7984291          No
25 27  0.352682498 1.731127e-03  3.1328588         Yes
26 28 -0.042682927 6.441681e-01 -0.4618789          No
27 29  0.549019608 6.879740e-03  2.7026101         Yes
28 31  0.351373855 2.117050e-02  2.3049299         Yes
29 32  0.244168881 1.012097e-02  2.5716687         Yes
30 33 -0.073053892 5.740724e-01 -0.5620641          No
31 34  0.295681063 2.650012e-03  3.0056646         Yes
32 35  0.020270270 8.979903e-01  0.1282004          No
33 36  0.155368926 3.855721e-02  2.0688814         Yes
34 37  0.059753086 2.422209e-01  1.1694536          No
35 38  0.370309684 3.169505e-03  2.9508015         Yes
36 39  0.045280263 5.320414e-01  0.6248928          No
37 40  0.345268542 3.826175e-03  2.8921482         Yes
38 41  0.432295438 4.375451e-04  3.5163371         Yes
39 42  0.336065574 5.579882e-03  2.7714991         Yes
mean(kappa_results_mental$Kappa)
[1] 0.1836504
sd(kappa_results_mental$Kappa)
[1] 0.1915899
hist(kappa_results_mental$Kappa, freq = FALSE, xlim = c(-1,1))

x<-seq(-1,+1,by=0.01)
#Histogramm Kappa Werte - Signifikante in Rot
library(ggplot2)

plot_histogram_kappa <- function(data = kappa_results_mental, column = "Kappa", signif_column = "Signifikant") {
    ggplot(data, aes_string(x = column, fill = signif_column)) +
    geom_histogram(bins = nrow(data), color = "black", alpha = 0.7) +
    scale_fill_manual(values = c("Yes" = "red", "No" = "skyblue")) +
    labs(title = paste("Histogram of", column),
         x = column,
         y = "Frequency") +
    theme_minimal()
}
plot_histogram_kappa()
Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
ℹ Please use tidy evaluation idioms with `aes()`.
ℹ See also `vignette("ggplot2-in-packages")` for more information.

#Anzahl Signifkanter Werte Mental
signifikante_anzahl <- sum(kappa_results_mental$Signifikant == "Yes")
print(signifikante_anzahl)
[1] 18
#Anzahl nicht signifikanter Werte Mental
signifikante_anzahl <- sum(kappa_results_mental$Signifikant == "No")
print(signifikante_anzahl)
[1] 21

##Für Somatic

# Teststatistik aus Kappa2 ausgeben Z-Wert
wz_value_somatic <- NULL
for(id in unique(Somatic_all$ID)){
    wz_value_somatic <- c(wz_value_somatic, as.numeric(unlist(kappa2(Somatic_all[Somatic_all$ID == id,4:5], 
        weight = "squared"))["statistic"]))
}

# P-Wert aus Kappa2 ausgeben 
wp_value_somatic <- NULL
for(id in unique(Somatic_all$ID)){
    wp_value_somatic <- c(wp_value_somatic, as.numeric(unlist(kappa2(Somatic_all[Somatic_all$ID == id,4:5], 
        weight = "squared"))["p.value"]))
}

#Data Frame mit Test-Statistiken erstellen
kappa_results_somatic <- data.frame(
    ID = unique(Mental_all$ID),
    Kappa = wkappa_somatic,
    P_Value = wp_value_somatic,
    Z_Value = wz_value_somatic
)
#Signifkanz Yes No hinzufügen - Tabelle ausgeben Mean berechnen
kappa_results_somatic$Signifikant <- ifelse(kappa_results_somatic$P_Value < 0.05, "Yes", "No")

print(kappa_results_somatic)
   ID       Kappa      P_Value    Z_Value Signifikant
1   1  0.11322249 6.546590e-01  0.4472993          No
2   2  0.57559958 1.290430e-02  2.4863995         Yes
3   3  0.61205767 6.136255e-04  3.4255192         Yes
4   4  0.41471572 4.393085e-02  2.0147500         Yes
5   5  0.72046589 4.337923e-02  2.0200401         Yes
6   6  0.32608696 6.347115e-03  2.7292885         Yes
7   7  0.48314607 2.719007e-02  2.2087782         Yes
8   8  0.31178311 4.578045e-02  1.9974119         Yes
9   9  0.46496815 6.750958e-03  2.7088858         Yes
10 10  0.44536549 5.155950e-02  1.9467935          No
11 11  0.47500000 1.506679e-03  3.1733941         Yes
12 12  0.66180758 1.651436e-02  2.3973451         Yes
13 13  0.39389736 1.035634e-01  1.6278183          No
14 14  0.52116788 5.699558e-01  0.5681166          No
15 15  0.62975027 1.217502e-01  1.5474689          No
16 16  0.19298246 2.672575e-01  1.1094004          No
17 18  0.09090909 7.592395e-01  0.3064797          No
18 20 -0.11111111 1.536795e-04  3.7850471         Yes
19 21  0.44501279 6.210622e-03  2.7364490         Yes
20 22  0.59029650 8.502448e-03  2.6314376         Yes
21 23  0.65190268 5.611398e-03  2.7696650         Yes
22 24  0.57295474 7.955439e-03  2.6539552         Yes
23 25  0.42442563 2.213819e-02  2.2879885         Yes
24 26  0.49077021 3.453391e-01  0.9436684          No
25 27  0.41520468 3.947559e-02  2.0591947         Yes
26 28  0.26898734 2.851411e-02  2.1901397         Yes
27 29 -0.04651163 3.110147e-04  3.6059486         Yes
28 31  0.30990415 7.636491e-01 -0.3006924          No
29 32  0.40412044 1.174661e-02  2.5196665         Yes
30 33  0.19474117 5.257600e-01 -0.6344916          No
31 34 -0.02057613 6.834710e-03  2.7047924         Yes
32 35  0.45833333 7.065065e-04  3.3870417         Yes
33 36  0.51100244 4.735782e-04  3.4952724         Yes
34 37  0.47324415 3.298711e-01  0.9743736          No
35 38  0.49019608 3.524315e-01  0.9298833          No
36 39  0.33717105 1.146217e-01  1.5777558          No
37 40  0.38170347 1.684737e-02  2.3900218         Yes
38 41  0.19672131 4.044859e-02  2.0491384         Yes
39 42  0.15244408 6.938522e-05  3.9783841         Yes
mean(kappa_results_somatic$Kappa)
[1] 0.3852273
sd(kappa_results_somatic$Kappa)
[1] 0.2013546
hist(kappa_results_somatic$Kappa, freq = FALSE, xlim = c(-1,1))

x<-seq(-1,+1,by=0.01)
#Histogramm Kappa Werte - Signifikante in Rot
library(ggplot2)

plot_histogram_kappa <- function(data = kappa_results_somatic, column = "Kappa", signif_column = "Signifikant") {
    ggplot(data, aes_string(x = column, fill = signif_column)) +
    geom_histogram(bins = nrow(data), color = "black", alpha = 0.7) +
    scale_fill_manual(values = c("Yes" = "red", "No" = "skyblue")) +
    labs(title = paste("Histogram of", column),
         x = column,
         y = "Frequency") +
    theme_minimal()
}
plot_histogram_kappa()

#Anzahl Signifkanter Werte Somatic
signifikante_anzahl <- sum(kappa_results_somatic$Signifikant == "Yes")
print(signifikante_anzahl)
[1] 26
#Anzahl nicht signifikanter Werte Somatic
signifikante_anzahl <- sum(kappa_results_somatic$Signifikant == "No")
print(signifikante_anzahl)
[1] 13