#Titel: R-Skript zum Lehrwerk "Eine praktische Einfuehrung in die Statistik mit R und RStudio" #Dies ist das ergaenzende R-Skript zum Lehrwerk/ Buch mit dem Titel: #"Eine praktische Einfuehrung in die Statistik mit R und RStudio # - #Ein Lehrskript fuer Studierende der Rehabilitationspaedagogik, #Rehabilitationswissenschaften sowie (Sonder-)Paedagogik" #von Christian Kissler, Florian Krieger und Joerg-Tobias Kuhn. #Dieses R-Skript wurde im Jahr 2023 von Christian Kissler bereitgestellt #und dient als Ergaenzung zum oben genannten Manuskript/ Buch. #Dieses R-Skript darf frei verwendet sowie bearbeitet und verbreitet werden, #insofern der Autor entsprechend den Gepflogenheiten zur Angabe wissenschaftlicher #Quellen korrekt angegeben wird. #Empfehlung/ Vorschlag zur Quellenangabe dieses R-Skripts: #Kissler, Christian (2023). R-Skript zum Lehrwerk "Eine praktische Einfuehrung in die Statistik mit R und RStudio" von Christian Kissler, Florian Krieger und Joerg-Tobias Kuhn. Eldorado. #Der Aufbau dieses R-Skripts orientiert sich strukturell am #Aufbau des oben genannten Manuskripts/ Lehrwerks. #Inhaltliche Erlaeuterungen zu diesem R-Skript sind #in dem genannten Manuskript/ Lehrwerk zu finden. #Mit diesem R-Skript koennen zentrale Berechnungen anhand #eines fiktiven Beispieldatensatzes erprobt werden. #Der zugehoerige Beispieldatensatz kann ueber den folgenden Link #heruntergeladen werden: #http://hdl.handle.net/2003/42178 #oder #http://dx.doi.org/10.17877/DE290R-24012 #oder #https://eldorado.tu-dortmund.de/handle/2003/42178 #Literaturangabe zum Beispieldatensatz: #Kissler, C. (2023). Ein simulierter Datensatz zur Erprobung und Veranschaulichung quantitativer Methoden der Datenanalyse. Eldorado. ####################################################################################### ####################################################################################### ####################################################################################### #Kapitel 2: Grundlagen im Umgang mit R und RStudio #Kapitel 2.4: Code, grundlegende mathematische Operationen, Funktionen & Packages 3+2 3-2 3*2 3/2 3^2 3**2 sqrt(16) round(3.4365, digits = 2) floor(3.4365) ceiling(3.4365) #Kapitel 2.5: Packages zur Funktionserweiterung install.packages("psych") library(psych) require(psych) install.packages("car") require(car) #Kapitel 2.6: Die Help-Funktion ?sqrt help(sqrt) ??sqrt ??aov #Kapitel 2.7: Zuweisungen x <- 3 b <- 4+5 c <- x*b #Kapitel 2.8: Datentypen z <- "Otto" class (z) #Kapitel 2.9: Datensaetze abspeichern, erstellen und einlesen a <- c(3, 4, 6, 7) goppen <- c("Otto", "Klaus", "Hannah") W12d3 <- c(1, 2, 3) dat_2 <- c(55, 67, 102) data <- cbind(a, goppen) View(data) goppen <- c("Otto", "Klaus", "Hannah", NA) data <- cbind(a, goppen) View(data) #An dieser Stelle wird nun der Datensatz eingelesen, #der auch im oben genannten Manuskript verwendet wird. #Die meisten weiteren Operationen beziehen sich #auf diesen Datensatz bzw. nehmen auf ihn Bezug. getwd() setwd("/Users/christiankissler/Desktop/Publikationen/R-Manuskript/Upload_final") getwd() install.packages("readxl") library(readxl) data <- read_excel("datensatz.xlsx") read.table("dataset.txt", header=TRUE) class(data$id) #Kapitel 2.10: Datensaetze umformen und Daten manipulieren class(data$id) as.factor(data$id) as.numeric(data$id) data$id <- as.factor(data$id) class(data$id) is.factor(data$id) data$id <- as.numeric(data$id) class(data$id) is.factor(data$id) install.packages("tidyverse") install.packages("dplyr") library(tidyverse) library(dplyr) #Kommentar: #Die Auspraegung 1 bei der Variable geschlecht im Datensatz data bedeutet: weiblich #Die Auspraegung 0 bei der Variable geschlecht im Datensatz data bedeutet: maennlich data_f <- filter(data, geschlecht == "1") data_sub <- filter(data, geschlecht == 0, IQ > 115) View(data_sub) data_sub_arrange <- arrange(data_sub, Lieblingsfarbe) View(data_sub_arrange) data_select <- select(data, id, geschlecht, IQ) data_select <- mutate(data_select, IQ_neu = IQ+1) View(data_select) data_select$IQ_neu_2 <- data_select$IQ +1 View(data_select) names(data_sub_arrange) names (data_select) [2] <- "Geschlecht" View(data_select) data_select$Geschlecht <- recode(data_select$Geschlecht, "0"="m", "1"="w") View(data_select) data_merged <- bind_rows(data_f, data_sub) data_cols <- bind_cols(data, data_select) data_byID <- merge(data, data_select, by = "id") ####################################################################################### ####################################################################################### ####################################################################################### #Kapitel 3: Deskriptive Statistik #Kapitel 3.2: Haeufigkeiten table(data$geschlecht) table(data$Lieblingsfarbe, data$geschlecht, exclude = NULL) addmargins(table(data$Lieblingsfarbe, data$geschlecht, exclude = NULL)) prop.table(table(data$Lieblingsfarbe, data$geschlecht, exclude = NULL)) addmargins(prop.table(table(data$Lieblingsfarbe, data$geschlecht, exclude = NULL))) #Kapitel 3.3: Quantile quantile (data$IQ, na.rm=TRUE) quantile(data$IQ, probs = seq(from=0,to=1,by=0.1), na.rm = TRUE) #Kapitel 3.4: Masse der zentralen Tendenz und Streuungsmasse mean(data$Alter, na.rm=TRUE) median(data$Alter, na.rm=TRUE) table(data$Alter) range(data$Alter) sd(data$Alter, na.rm=TRUE) var(data$Alter, na.rm=TRUE) tapply(data$Alter, data$geschlecht, mean, na.rm=TRUE) install.packages("psych") require(psych) describe(data) install.packages("moments") library(moments) kurtosis(data$IQ, na.rm=TRUE) skewness(data$IQ, na.rm=TRUE) describeBy(data, data$geschlecht) #Kapitel 3.5: Grafiken/ Abbildungen erstellen pie(table(data$Autistisch), main = "Ist das Kind autistisch?") barplot (table(data$Autistisch), xlab="Ergebnis der Diagnostik", ylab="Anzahl der Personen", main = "Ist das Kind autistisch?", ylim=c(0, 200)) hist(data$Matheleistung, xlab="Leistung in Mathematik", ylab="Anzahl der Personen", main = "Verteilung der Mathematikleistung", ylim=c(0, 60), labels=TRUE) boxplot(data$Matheleistung, ylab="Mathematikleistung", main = "Verteilung der Mathematikleistung") #Kapitel 3.6: Standardisierungen data$z_Sozialverhalten <- scale(data$Sozialverhalten) mean(data$z_Sozialverhalten, na.rm = TRUE) sd(data$z_Sozialverhalten, na.rm=TRUE) data$IQ_Sozialverhalten <- 100 + 15 * data$z_Sozialverhalten data$T_Sozialverhalten <- 50 + 10 * data$z_Sozialverhalten mean(data$IQ_Sozialverhalten, na.rm = TRUE) sd(data$IQ_Sozialverhalten, na.rm=TRUE) mean(data$T_Sozialverhalten, na.rm = TRUE) sd(data$T_Sozialverhalten, na.rm=TRUE) #Kapitel 3.7: Zusammenhaenge und Zusammenhangsmasse plot(data$IQ, data$Matheleistung) cor(data$Matheleistung, data$IQ, use="pairwise.complete.obs", method = "pearson") cor(data$Matheleistung, data$IQ, use="pairwise.complete.obs", method = "spearman") cor(data$Matheleistung, data$IQ, use="pairwise.complete.obs", method = "kendall") ####################################################################################### ####################################################################################### ####################################################################################### #Kapitel 4: Inferenzstatistik #Kapitel 4.2: Gauss-Test install.packages("BSDA") require(BSDA) z.test (data$Allgemeine_Gesundheit, alternative = "two.sided", mu = 100, sigma.x = 15, conf.level=0.95) z.test (data$Allgemeine_Gesundheit, alternative = "greater", mu = 100, sigma.x = 15, conf.level=0.95) z.test (data$Allgemeine_Gesundheit, alternative = "less", mu = 100, sigma.x = 15, conf.level=0.95) #Kapitel 4.3: t-Tests und Levene-Test t.test (data$Additionsleistung, alternative = "two.sided", mu = 100, conf.level=0.95) install.packages("lawstat") require(lawstat) levene.test (data$Aufmerksamkeit, data$Autistisch) t.test(Aufmerksamkeit ~ Autistisch, data = data, paired = FALSE, var.equal = TRUE, alternative = "two.sided", conf.level = 0.95) mean (data$Lesefaehigkeit_praetest) mean (data$Lesefaehigkeit_posttest) t.test(data$Lesefaehigkeit_praetest, data$Lesefaehigkeit_posttest, paired = TRUE, alternative = "less", conf.level = 0.95) #Kapitel 4.4: Effektstaerken install.packages("lsr") library(lsr) cohensD(data$Lesefaehigkeit_praetest, data$Lesefaehigkeit_posttest) #Kapitel 4.5: Wilcoxon-Rangsummentest wilcox.test(Aufmerksamkeit ~ Autistisch, data = data, paired = FALSE, alternative = "two.sided", conf.level = 0.95) #Kapitel 4.6: ANOVAs anova_01 <- aov(Aufmerksamkeit ~ gruppe, data = data) summary (anova_01) library (stats) TukeyHSD(anova_01) anova_02 <- aov(Lesefaehigkeit_praetest ~ gruppe, data = data) summary (anova_02) TukeyHSD(anova_02) #Kapitel 4.7: Chi-Quadrat und Kramers V table(data$geschlecht, data$Autistisch) chisq.test(data$geschlecht, data$Autistisch) library(lsr) cramersV(data$geschlecht, data$Autistisch) #Kapitel 4.8: Korrelationen und Regressionen cor(data$Matheleistung, data$IQ, use="pairwise.complete.obs", method = "pearson") cor.test(data$Matheleistung, data$IQ, use="pairwise.complete.obs", method = "pearson") install.packages("Hmisc") library(Hmisc) rcorr(cbind(data$Matheleistung, data$IQ, data$Aufmerksamkeit, data$Sozialverhalten), type="pearson") LM_1 <- lm (Matheleistung ~ IQ, data = data) summary(LM_1) plot (data$IQ, data$Matheleistung, xlab = "IQ", ylab = "Matheleistung") abline (LM_1, col = "red") ####################################################################################### ####################################################################################### ####################################################################################### #Kapitel 5: Vertiefung und Ausblick #Kapitel 5.2 Bayesianische t-Tests install.packages("BayesFactor") library(BayesFactor) require(tidyverse) sub1 <- as.data.frame(select(data, Aufmerksamkeit, Autistisch)) sub1 <- na.omit(sub1) ttestBF(formula = Aufmerksamkeit ~ Autistisch, data = sub1, paired = FALSE, rscale="medium") sub2 <- as.data.frame(select(data, Lesefaehigkeit_praetest, Lesefaehigkeit_posttest)) sub2 <- na.omit(sub2) ttestBF (sub2$Lesefaehigkeit_praetest, sub2$Lesefaehigkeit_posttest, paired= TRUE, rscale = "medium") #Zusaetzliche Informationen: #Wenn in R ANOVAs berechnet werden, koennen sich die Ergebnisse dieser Berechnungen von #den Ergebnissen unterscheiden, die man erhaelt, wenn ANOVAs in SPSS berechnet werden. #Dies liegt daran, dass es unterschiedliche Ansaetze gibt, #um ANOVAs zu berechnen (Type-I, Type-II und Type-III ANOVAs). #In SPSS werden regelmaessig standardgemaess Type-III ANOVAs berechnet. Um sicherzustellen, dass #in R ebenfalls Type-III ANOVAs berechnet werden, kann der folgende Befehl ausgefuehrt werden: options(contrasts=c("contr.sum", "contr.poly")) #Weitergehende Informationen zu diesem Thema koennen #bei Bedarf unter folgenden URLs nachgelesen werden (Beispiele): #https://stats.stackexchange.com/questions/60362/choice-between-type-i-type-ii-or-type-iii-anova #https://md.psych.bio.uni-goettingen.de/mv/unit/lm_cat/lm_cat_unbal_ss_explained.html #https://www.r-bloggers.com/2011/03/anova-–-type-iiiiii-ss-explained/ #http://myowelt.blogspot.com/2008/05/obtaining-same-anova-results-in-r-as-in.html #Es wird keine Haftung fuer die Inhalte, fuer den Datenschutz, fuer die Funktionalitaet #sowie fuer alle weiteren Aspekte hinsichtlich der genannten URLs/ Links uebernommen. #Die Links waren zum Zeitpunkt der Veroeffentlichung des R-Skripts funktionsfaehig. #Impressum und Kontakt: #Technische Universitaet Dortmund #Fakultaet Rehabilitationswissenschaften #Methoden der empirischen Bildungsforschung #Hauptverantwortliche Kontaktperson: Christian Kissler #Emil-Figge-Str. 50, 44227 Dortmund #(+49)231 755-6544 #Sekretariat-eb.fk13@tu-dortmund.de #christian.kissler@tu-dortmund.de