"kontingenz" <- function(x, P = 0.95, info = TRUE) { #----------------------------------------------- # Kontingenzanalyse, Auswertung auf Basis des Chi-Quadrat-Tests # # Grundlage: http://www.faes.de/Basis/Basis-Lexikon/Basis-Lexikon-Kontingenztabell/basis-lexikon-kontingenztabell.html # # Entwickelt durch: G. Faes # E-Mail: guenter@faes.de # Datum: 21.03.2008 15:45:10 Version: 1.0 # R-Version: 2.6.2 #----------------------------------------------- # In der übergebenen Datenmatrix muss die 1. Spalte die Merkmalbeschreibung # enthalten sein. Diese Spalte wird nicht im Objekt das der Funktion chisq.test # übergeben wird, abgelegt. # # Die Wahrscheinlichkeit P wird mit 95% vorgegeben und dient nur zum "Einordnen" # des Chi-Quadrat-Wertes. Ist eine Info-Ausgabe! # Als Voreinstellung ist info auf TRUE eingestellt, sodass weitere Informationen # ausgegeben werden. #----------------------------------------------- # Variablenindizierung: dim_Matrix <- dim(x) # Dimension der Matrix x ermitteln dim_n <- dim_Matrix[c(2)] # Matrixdimension (horizontal) dim_m <- dim_Matrix[c(1)] # Matrixdimension (vertikal) n_gesamt <- NULL # Gesamtstichprobenumfang der Matrix (alle Beobachtungen) Daten <- NULL # Nimmt den Datensatz auf dim_Daten <- NULL # Dimension der Daten ermitteln (K max) dim_Daten_min <- NULL # Kleinster Wert der Matrixdimension (M, K max) Chiquadrat <- NULL # Nimmt die Chiquadratschätzung auf Chiquadrat.PG <- NULL # Nimmt die Chiquadrat-Schätzung auf Chiquadrat.df <- NULL # Freiheitsgrad der Chiquadrat-Schätzung Chiquadrat.vw <- NULL # Chiquadrat-Vergleichswert Chiquadrat.p <- NULL # Wahrscheinlichkeit von H0 der Chaiquadrat-Schätzung Kontingenzkoeffizient <- NULL # Nimmt den Kontingenzkoeffizienten auf K_max <- NULL # K-Max als Normierungshilfe Korr_Kontingenzkoef <- NULL # Korrigierter Kontingenzkoeffizienten # Berechnungsteil: Datensatzbezeichnung <- names(x) # 1. Spalte entfernen: Daten <- x[2 : dim_n] # Chiquadratschätzung: Chiquadrat <- chisq.test(Daten) # Chiquadratschätzung (PG): Chiquadrat.PG <- Chiquadrat$statistic # Freiheitsgrad: Chiquadrat.df <- Chiquadrat$parameter # Wahrscheinlichkeit: Chiquadrat.p <- Chiquadrat$p.value # Vergleichswert des Chiquadratverteilung ermitteln: Chiquadrat.vw <- qchisq(P, Chiquadrat.df) # Kontingenzkoeffizient berechnen: n_gesamt <- sum(Daten) Kontingenzkoeffizient <- sqrt(Chiquadrat.PG / (Chiquadrat.PG + n_gesamt)) # Korrigierte Kontingenzkoeffizient berechnen: dim_Daten <- dim(Daten) dim_Daten_min <- min(dim_Daten) K_max <- sqrt((dim_Daten_min - 1) / dim_Daten_min) Korr_Kontingenzkoef <- Kontingenzkoeffizient / K_max # Ergebnisausgabe: cat("\n") cat(" Kontingenzanalyse", "\n", "\n") cat(" Chquadrat-Prüfgröße: ", Chiquadrat.PG, "\n") # Info-Ausgabe: if (info == TRUE) { cat(" Freiheitsgrad: ", Chiquadrat.df, "\n") cat("Vergleichswert der Chiquadratverteilung mit P", (P*100),"%: ", Chiquadrat.vw, "\n") cat(" p-value: ", Chiquadrat.p, "\n", "\n") cat(" Anzahl Beobachtungen in der Matrix: ", n_gesamt, "\n") cat(" Kontingenzkoeffizient: ", Kontingenzkoeffizient, "\n") cat(" M (zur Berechnung von K max): ", dim_Daten_min, "\n") cat(" K max: ", K_max, "\n","\n") } cat(" Korrigierter Kontingenzkoeffizient: ", Korr_Kontingenzkoef, "\n") # Funktionsausgabe: Ausgabe <- list(Chiquadrat_PG = Chiquadrat.PG, Freiheitsgrad = Chiquadrat.df, Wahrscheinlichkeit = Chiquadrat.p, Korrigierter_Kontingenzkoeffizient = Korr_Kontingenzkoef) invisible(Ausgabe) } # Funktions-Ende