--- title: "Übungszettel Harry Potter" author: "Joshua Driesen (joshua.driesen@stud.uni-goettingen.de)" subtitle: "M.Psy.205, Dozent: Dr. Peter Zezula" output: html_document: theme: paper toc: yes toc_depth: 2 toc_float: yes pdf_document: default # latex_engine: xelatex header-includes: - \usepackage{comment} params: soln: TRUE todo: TRUE mainfont: Helvetica linkcolor: blue --- # German ## Links [Übungszettel als PDF-Datei zum Drucken](https://pzezula.pages.gwdg.de/sheet_harry_potter.pdf) `r if(!params$soln) {"\\begin{comment}"}` **Übungszettel mit Lösungen** [Lösungszettel als PDF-Datei zum Drucken](https://pzezula.pages.gwdg.de/sheet_harry_potter_solutions.pdf) [Der gesamte Übugszettel als .Rmd-Datei](https://pzezula.pages.gwdg.de/sheet_harry_potter.Rmd) (Zum Downloaden: Rechtsklick > Speichern unter...) `r if(!params$soln) {"\\end{comment}"}` ## Hinweise zur Bearbeitung 1. Bitte beantworten Sie die Fragen in einer .Rmd Datei. Sie können Sie über `Datei > Neue Datei > R Markdown...` eine neue R Markdown Datei erstellen. Den Text unter dem *Setup Chunk* (ab Zeile 11) können Sie löschen. [Unter diesem Link](https://pzezula.pages.gwdg.de/students_template.Rmd) können Sie auch unsere Vorlage-Datei herunterladen (Rechtsklick > Speichern unter...). 2. Informationen, die Sie für die Bearbeitung benötigen, finden Sie auf der [Website der Veranstaltung](https://www.psych.uni-goettingen.de/de/it/team/zezula/courses/multivariate) 3. Zögern Sie nicht, im Internet nach Lösungen zu suchen. Das effektive Suchen nach Lösungen für R-Probleme im Internet ist tatsächlich eine sehr nützliche Fähigkeit, auch Profis arbeiten auf diese Weise. Die beste Anlaufstelle dafür ist der [R-Bereich der Programmiererplattform Stackoverflow](https://stackoverflow.com/questions/tagged/r) 4. Auf der Website von R Studio finden Sie sehr [hilfreiche Übersichtszettel](https://www.rstudio.com/resources/cheatsheets/) zu vielen verschiedenen R-bezogenen Themen. Ein guter Anfang ist der [Base R Cheat Sheet](http://github.com/rstudio/cheatsheets/raw/master/base-r.pdf) ## Allgemeines Wir möchten Ihnen in dieser Woche einen kleinen Vorgeschmack auf die Klausur geben. Dieser Übungszettel entspricht in seiner Form und Aufgabenstellung recht genau dem, was Sie in der Klausur erwartet, lediglich der Umfang ist hier geringer als er es in der sechsstündigen Klausur sein wird. Ihnen wird nach einer kurzen Einführung in den jeweiligen Themenbereich eine fertige Auswertung vorgelegt, die sie nachvollziehen sollen. Diese Auswertung ist manchen Bereichen nicht optimal, etwa wegen verletzter Annahmen oder falsch interpretierter Ergebnisse, aber auch inhaltlicher Ungereimtheiten. Ihre Aufgabe soll es sein, diese Probleme zu erkennen, und einzuschätzen, welche Aussagen der Auswertung Sie weiterhin für valide halten, welche Aussagen sich als unhaltbar herausstellen, und welche Verbesserungen die bestehenden Unklarheiten ausräumen könnten. Sie sollten dabei Ihre Verbesserungsvorschläge in R-Code umzusetzen können oder zumindest Ansätze dazu. Ihre andere wichtige Aufgabe ist das Finden einer guten Visualisierung eines Aspekts der Daten. Auch diese Visualisierung sollte in R erstellt werden, um die volle Punktzahl zu erreichen. Ihre Darstellungsidee sollen Sie aber auch ganz analog mit Stift und Papier verdeutlichen, vor allem, wenn eine Umsetzung mit ggplot-Code nicht gelingen sollte. Die beste Übung für diese Art von Aufgabe ist das Lesen von Papern, bei denen Sie besonders auf die jeweilig verwendeten Visualisierungsformen achten. Ist es den Autoren geglückt, Ihre Befunde anschaulich darzustellen? Wenn ja, wie? Wenn nein, was fehlt, oder ist zu viel? ## Aufgabe Die Hogwarts Schule für Hexerei und Zauberei hat eine Studie durchgeführt, um Lernkultur und magische Fähigkeiten innerhalb Ihrer vier Häuser Gryffindor, Hufflepuff, Ravenclaw und Slytherin zu untersuchen. Hierzu wurde für alle Schüler_innen eines Jahrgangs erhoben, wieviele Stunden sie pro Woche durchschnittlich in der Bibliothek verbringen. Zudem führten alle Schüler_innen den Wingardium-Leviosa Zauber aus, um eine Feder zum Schweben zu bringen. Dabei wurde die erreichte Schwebehöhe in Zentimetern gemessen, um eine objektive Messung der Zauberfähigkeit zu erhalten. Zusätzlich wurde die Hauszugehörigkeit erfasst, sodass insgesamt drei Variablen in die Auswertung eingehen. ```{r} library(tidyverse) hogwarts_data <- read_csv("https://pzezula.pages.gwdg.de/data/HarryPotter.dat") hogwarts_data$Haus <- factor(hogwarts_data$Haus) head(hogwarts_data) library(psych) describeBy(hogwarts_data, hogwarts_data$Haus) ``` Als Schule für Hexerei und Zauberei interessiert ist für uns vor allem die Schebehöhe als Kriterium interessant, deshalb: ```{r} hogwarts_m1 <- lm(Schwebehoehe ~ Haus + Lernzeit, data = hogwarts_data) summary(hogwarts_m1) ``` Die wichtigste Erkenntnis ist der signifikante Lernzeit-Prädiktor: Die Lehre an Hogwarts scheint zu funktionieren. Auffällig sind allerdings auch die teils signifikanten Dummyprädiktoren der Hauszugehörigkeit; anscheinend gibt es teils erhebliche Unterschiede zwischen den magischen Fähigkeiten der verschiedenen Häuser. Professor Snape betont vor allem die negative Sonderrolle Hufflepuffs: Der höchstsignifikante Dummyprädiktor ist für ihn ein klarer Beleg, dass es sich bei den Hufflepuffs um die mit Abstand schlechtesten Zauberer und Hexen Hogwarts handelt - und vielleicht sogar um hoffnungslose Fälle, bei denen jede weitere Lehranstrengung verschwendet sei. Auf Wunsch von Professor Flitwick wurde eine zusätzliche Analyse durchgeführt. Er ist überzeugt davon, dass die in seinem Haus Ravenclaw verbreitete Kultur des Fleißes dazu führt, dass seine Schülerinnen und Schüler mehr lernen als in den anderen Häusern üblich. Hierzu liess er eine logistische Regression durchführen, bei der aus der Lernzeit die Zugehörigkeit zu Ravenclaw vorhergesagt wurde: ```{r} hogwarts_data <- mutate(hogwarts_data, Ravenclaw_ja_nein = ifelse( Haus == "Ravenclaw", 1, 0)) #Wenn Ravenclaw 1, sonst 0 hogwarts_m2 <- glm(Ravenclaw_ja_nein ~ Lernzeit, data = hogwarts_data, family = "binomial") summary(hogwarts_m2) ``` Lernzeit erweist sich als signifikanter Prädiktor für Ravenclaw-Zugehörigkeit, wodurch sich Professor Flitwick darin bestätigt sieht, dass die Fleißkultur seines Hauses zu mehr Lernen führt. In der ursprünglichen Auswertung befand sich zudem eine visuelle Darstellung der erhobenen Daten, diese Seite scheint aber von der Briefeule verspeist worden zu sein. Können Sie mit ggplot, dem Muggle-Ersatz für graphische Zauberei, eine angemessene Visualiersung erstellen? `r if(!params$soln) {"\\begin{comment}"}` ## Lösung Vorweg: Die hier genannten Kritikpunkte und Verbesserungsvorschläge sollten Sie nicht so verstehen, dass alle diese Punkte für die volle Punktzahl gefunden werden müssen. Uns ist eher wichtig, dass Sie die Bedeutung der Kritikpunkte für die Validität der gezogenen Schlüsse gut herausarbeiten können. Wenn Sie gut dafür argumentieren, dass schon ein oder zwei von Ihnen gefundene Probleme die gesamte Aussagekraft der Studie negieren, ist das Finden weiterer, nicht so fundamentaler Schwachstellen der Auswertung eher Kür als Pflicht. Seien Sie deswegen nicht frustriert, wenn Sie nicht alle hier genannten Aspekte gefunden haben. Andersherum kann es natürlich auch sein, dass Sie Probleme erkannt haben, die uns beim Erstellen dieser Aufgabe selbst nicht bewusst waren! ### Schwebehöhe als Kriterium Zunächst lässt sich inhaltlich hinterfragen, ob das Meistern eines einzelnen Zauberspruchs überhaupt eine erschöpfende Messung der Zauberfähigkeit darstellt. Aber es gibt auch ein ganz praktisches Problem: ```{r} hist(hogwarts_data$Schwebehoehe) shapiro.test(hogwarts_data$Schwebehoehe) ``` Viele Schüler_innen haben es gar nicht erst geschafft, die Feder abheben zu lassen - die erreichte Schwebehöhe beträgt null. Dies führt zu einem Bodeneffekt und zu einer sehr ungewöhnlichen Verteilung unserer Reaktionsvariable. Als potentielle Lösung könnten alle Fälle ausgeschlossen werden, in denen die Schwebehöhe null beträgt, sodass nur noch der Effekt von Lernzeit innerhalb der Schüler_innengruppe untersucht wird, die die Feder überhaupt zum Schweben gebracht haben. Dies reduziert jedoch die Aussagekraft der Analyse, da sie nur noch auf eine Teilgruppe der Schüler_innen zutrifft. ```{r} hogwarts_data_neu <- filter(hogwarts_data, Schwebehoehe > 0) hogwarts_m1a <- lm(Schwebehoehe ~ Lernzeit + Haus, data = hogwarts_data_neu) ``` Eine andere Alternative wäre, das Kriterium zu dichotomisieren, und den Einfluss der Lernzeit darauf zu untersuchen, ob die Feder überhaupt schwebt oder nicht. Diese Alternativanalyse trifft zwar im Gegensatz zu dem ersten Ansatz immer noch auf die gesamte Schule zu, jedoch geht hier viel vorhandene Information verloren. ```{r} hogwarts_data <- mutate(hogwarts_data, Schweben_ja_nein = ifelse( Schwebehoehe > 0, 1, 0) ) hogwarts_m1b <- glm( Schweben_ja_nein ~ Lernzeit + Haus, data = hogwarts_data, family = "binomial" ) ``` Bemerkung: Die problematische Verteilung der Outcome-Variablen wird hier übrigens nicht im Zusammenhang von Voraussetzungsprüfung betrachtet, sondern inhaltlich hinterfragt. ### Regressionsanalyse Neben der problematischen Verteilung unserer Reaktionsvariable gibt es noch weitere Probleme mit der Regressionsanalyse. Zunächst stellt sich die Frage, wieso die Interaktion von Haus und Lernzeit nicht untersucht wurde. Gerade da die weiteren Analysen eine Sensibilität für unterschiedliche Lernkulturen in den Häusern zeigen, wäre dies eine wertvolle Informationsquelle. Ein möglicher Grund könnte die geringe Stichprobengrösse sein, aber auch diese Überlegung hätte explizit in der Analyse auftauchen müssen. ```{r} hogwarts_m1c <- lm(Schwebehoehe ~ Lernzeit*Haus, data = hogwarts_data) ``` Professor Snapes Interpretation der Regressionsanalyse stellt einen weiteren Kritikpunkt dar: Die Signifikanz des Hufflepuff-Dummyprädiktors bedeutet lediglich, dass sich Hufflepuff signifikant von der Referenzgruppe, in diesem Fall also Gryffindor, unterscheidet. Eine herausstechende Einzigartigkeit ist damit noch nicht bewiesen. Hierzu seien nur die durchschnittlichen Schwebehöhe von Snapes eigenem Haus, Slytherin, und die von Hufflepuff nebeneinander gestellt: ```{r} mean(hogwarts_data$Schwebehoehe[hogwarts_data$Haus == "Slytherin"]) mean(hogwarts_data$Schwebehoehe[hogwarts_data$Haus == "Hufflepuff"]) ``` Knapp sechs Zentimeter Unterschied sprechen wirklich nicht gerade für eine Sonderrolle Hufflepuffs. ### Lernkultur in Ravenclaw Hier ist vor allem die Wahl der logistischen Regression als Verfahren zu hinterfragen. Die von Professor Flitwick postulierte Kausalrichtung war ja "Zugehörigkeit zu Ravenclaw erhöht Lernzeit", die logistische Regression testet aber konzeptionell eher "Viel Lernen erhöht die Wahrscheinlichkeit, zu Ravenclaw zu gehören." Insofern wäre dieses Verfahren die richtige Wahl, um die vom sprechenden Hut bei der Hauszuteilung herangezogenen Kriterien zu testen, aber das war ja hier nicht das Ziel. Möchte man den Einfluss des Hauses auf die Lernzeit untersuchen, bietet sich eher eine Kontrastanalyse an. Allerdings ist hier dennoch die andere Kausalrichtung zu berücksichtigen: Der sprechende Hut ist ein klassisches Beispiel für Selection Bias, eine Randomisierung erfolgt nicht. Insofern ist es fraglich, ob Flitwicks Kausalrichtung hier überhaupt untersucht werden kann. ```{r} hogwarts_data$Haus_c <- hogwarts_data$Haus contrasts(hogwarts_data$Haus_c) <- c(-1, -1, 3, -1) hogwarts_m2a <- lm(Lernzeit ~ Haus_c, data = hogwarts_data) summary(hogwarts_m2a) # Kontrast Haus_c1, der uns interessiert, ist signifikant ``` ### Plot ```{r} harry_plotter <- ggplot(data = hogwarts_data, aes(Lernzeit, Schwebehoehe, color = Haus)) + geom_point() + geom_smooth(method = "lm", se = F) harry_plotter #Es zeigt sich, dass Lernen vor allem in Ravenclaw mit besseren Zauberfähigkeit #verbunden ist; noch ein Grund mehr, Interaktionsterme in das Ursprungsmodell #aufzunehmen. #mischief managed ``` `r if(!params$soln) {"\\end{comment}"}` `r if(!params$todo) {"\\begin{comment}"}` ### Zusatzaspekte #### Als MLM Wir müssen den Optimierungsprozess bei der Parameterschätzung beeinflussen, um eine Lösung zu bekommen. Das geschieht über den Parameter `control` im `lme()` Befehl. Hier konkret: `control=list(opt="optim", msMaxIter=500)` ```{r} library(tidyverse) dd <- read_csv("https://pzezula.pages.gwdg.de/data/HarryPotter.dat") dd$Haus <- factor(dd$Haus) mlm.1 <- nlme::gls(Schwebehoehe ~ Lernzeit * Haus, data = dd, method='ML') anova(mlm.1) # random intercept model mlm.2 <- nlme::lme(Schwebehoehe ~ Lernzeit, random = ~1 | Haus, control=list(opt="optim", msMaxIter=500), data = dd, method='ML') nlme::fixef(mlm.2) nlme::ranef(mlm.2) # random intercept and slope model mlm.3 <- nlme::lme(Schwebehoehe ~ Lernzeit, random = ~1 + Lernzeit | Haus, control=list(opt="optim", msMaxIter=500), data = dd, method='ML') nlme::fixef(mlm.3) nlme::ranef(mlm.3) anova(mlm.2, mlm.3) ``` `anova(mlm.1)` oben zeigt, dass Lernzeit und Haus als Gesamteffekt signifikant sind, der Interaktionseffekt aber nicht signifikant ist. Auch der Modellvergleich `anova(mlm.2, mlm.3)` belegt, dass random slopes für Lernzeit keinen signifikanten Varianzanteil binden. #### Volles Model mit Interaktion ```{r} mlm.1 <- nlme::gls(Schwebehoehe ~ Lernzeit * Haus, data = dd, method='ML') summary(mlm.1) lm.1 <- lm(Schwebehoehe ~ Lernzeit * Haus, data = dd) # kein Einzeleffekt aufgesplittet auf die Dummy-Effekte wird signifikant summary(lm.1) # ... wohl aber als Omnibus-Test anova(lm.1) ``` Wir können also zu nach Häusern getrennten Einzel-Effekten bei diesem Vorgehen nichts statistisch Abgesichertes interpretieren. `r if(!params$todo) {"\\end{comment}"}` # English ## Links [Exercise sheet in PDF](https://pzezula.pages.gwdg.de/sheet_harry_potter.pdf) `r if(!params$soln) {"\\begin{comment}"}` **Exercise sheet with solutions included** [Exercise sheet with solutions included as PDF](https://pzezula.pages.gwdg.de/sheet_harry_potter_solutions.pdf) [The source code of this sheet as .Rmd](https://pzezula.pages.gwdg.de/sheet_harry_potter.Rmd) (Right click and "store as" to download ...) `r if(!params$soln) {"\\end{comment}"}` ## Some hints 1. Please give your answers in a .Rmd file. You may generate one from scratch using the file menu: 'File > new file > R Markdown ...' Delete the text below *Setup Chunk* (starting from line 11). Alternatively you may use this [sample Rmd](https://pzezula.pages.gwdg.de/students_template.Rmd) by donloading it. 2. You may find the informations useful that you can find on the [start page of this course](https://www.psych.uni-goettingen.de/de/it/team/zezula/courses/multivariate). 3. Don't hesitate to google for solutions. Effective web searches to find solutions for R-problems is a very useful ability, professionals to that too ... A really good starting point might be the R area of the programmers platform [Stackoverflow](https://stackoverflow.com/questions/tagged/r) 4. You can find very useful [cheat sheets](https://www.rstudio.com/resources/cheatsheets/) for various R-related topics. A good starting point is the [Base R Cheat Sheet](http://github.com/rstudio/cheatsheets/raw/master/base-r.pdf). ## Genereal info This week we want to give you a little taste of the final exam. This sheet's form and exercise type matches those of the final exam pretty well, although the final exam will of course be longer. After all, you'll be given six hours for the final exam, so you shoudn't worry about that aspect too much. After a short introduction to the general topic, you'll be given a finished data analysis whcih you're supposed to understand and evaluate. This analysis is sub-optimal in multiple ways, in the sense of e.g. violated assumptions or wrongly interpeted results. There can also be inconsistencies contentwise. You're task is to identify these problems and to give an estimate of the severity of their impact on the overall integrity of the results presented. Additionally, you'll be able to make proposals for possible improvements. You should be able to implement these improvements in R or at least give us an idea of what you intend with your code. Your other big task will be the design of a good visual representation for a key aspect of the data. If you can implement that using ggplot or other R graphical possibilities - great. But you should show us at least an idea of your idea using "old-school" pen and paper. For this sheet however, we'll be focusing on the ggplot-part. The best way to prepare for this part of the exam is to read real papers, with a special focus on the way the authors chose to visualize their results. Did they succeed in showing their results clearly? If so, how? If not, what's missing, what's superfluous? ## Main exercise The Hogwarts School of Witchcraft and Wizardry conducted a study investigating learning culture and magical abilities within the four houses Gryffindor, Hufflepuff, Ravenclaw and Slytherin. For this, they asked all students from one age cohort how many hours per week they spent in the library on average. Additionally, all students had to perform the Wingardium Leviosa spell to levitate a feather. The distance that the feather levitate above the ground was used as an objective measure of magical ability. Finally, they noted which of the four houses the student belonged to, thus including three variables in total for this study. ```{r} library(tidyverse) hogwarts_data <- read_csv("https://pzezula.pages.gwdg.de/data/HarryPotter.dat") hogwarts_data$Haus <- factor(hogwarts_data$Haus) #Haus = house head(hogwarts_data) library(psych) describeBy(hogwarts_data, hogwarts_data$Haus) ``` As a school for witchcraft and wizardry, the leviation height of the feather was especially interesting as a criterion, therefor: ```{r} hogwarts_m1 <- lm(Schwebehoehe ~ Haus + Lernzeit, data = hogwarts_data) #Schwebehoehe = leviation height #Lernzeit = study time summary(hogwarts_m1) ``` The most important result is the significance of the learning time predictor: Hogwart's teaching style seems to be working. However, some of the dummy variables of the different houses reached significance, too, indicating substantial differences in magical abilities between the houses. Professor Snape especially emphasizes Hufflepuff's negative results. To him, their highly significant dummy predictor is clear evidence for the Hufflepuffs being by far the worst witches and wizards in Hogwarts. They might even be completely hopeless cases, whom no further teaching capacities should be wasted on. Professor Flitwick expressed a wish for an additional analysis. He's convinced that the culture of striving found in his house Ravenclaw leads to his students spending more time learning than the other houses. To show this, he conducted a logstic regression, using learning time to predict whether the student in question is a Ravenclaw or not: ```{r} hogwarts_data <- mutate(hogwarts_data, Ravenclaw_ja_nein = ifelse( #Ravenclaw_ja_nein = Ravenclaw_yes_no Haus == "Ravenclaw", 1, 0)) #If student's a Ravenclaw 1, otherwise 0 hogwarts_m2 <- glm(Ravenclaw_ja_nein ~ Lernzeit, data = hogwarts_data, family = "binomial") summary(hogwarts_m2) ``` Learning time proves to be a significant predictor of 'Ravenclaw-ness', leading professor Flitwick to feel validated in his opinion of his house's striving culture leading to more learning. In the original analysis, there was also a visual representation of the collected data. However, the owl carrying these dcuments must've eaten that page. Are you able to use ggplot, the muggle alternative to visual wizardry, to create an adequate visualization? `r if(!params$soln) {"\\begin{comment}"}` ## Solution Note: The critical points and suggestions for improvement made here are *not* to be understood as a check list where you need to find all of them in order to get an A in the exam. For us, it's more important that you're able to clearly discuss how the critical points you mention affect the validity of the results. If you're able to conclusively show that one or two problems completely ruin the entire analysis, then finding more points to critique becomes more of a voluntary exercise. So don't be frustrated if you didn't catch all aspects listed in the solution. Conversely, it's also definitely possible that you discovered problems we ourselves missed when creating this sheet! ### Levitation height as criterion First you could argue that the mastery of one single spell might not be an adequate test for general magic abilities, which most likely is a rather diverse field. There is also a more practical problem with this criterion variable: ```{r} hist(hogwarts_data$Schwebehoehe) shapiro.test(hogwarts_data$Schwebehoehe) ``` Many students didn't even get the feather off the ground - their leviation height is zero. This floor effect leads to a special situation in the distribution of our reaction variable. A potential solution for this might be to exclude all cases with a levitation heigth of zero. This way, you'd focus your analysis on the effect of learning time on levitation height within the subgroup of students who are able to perform this particular spell. However, this subgroup focus reduces the external validity of the study, because its results no longer apply to *all* students. ```{r} hogwarts_data_neu <- filter(hogwarts_data, Schwebehoehe > 0) #neu - new hogwarts_m1a <- lm(Schwebehoehe ~ Lernzeit + Haus, data = hogwarts_data_neu) ``` You could also turn the criterion into a dichotomous variable, and analyse the effect of study time on the probability of being able to get the feather of the ground at all. This solution has the advantage of still being applicable to all students, but there's substantial loss of information in the variable transformation. ```{r} hogwarts_data <- mutate(hogwarts_data, Schweben_ja_nein = ifelse( Schwebehoehe > 0, 1, 0) ) #Schweben_ja_nein - Levitate_yes_no hogwarts_m1b <- glm( Schweben_ja_nein ~ Lernzeit + Haus, data = hogwarts_data, family = "binomial" ) ``` ### Regression Besides the special distribution of variable "Schwebehoehe", there are other problems with the regression analysis. First of all, why didn't the authors include the interaction between house and study time? Especially in the light of the later analyses of different leanring cultures in different houses, this would have been valuable information. Their reason not to include it might have been the small sample size, but this should have been made explicit in the text. ```{r} hogwarts_m1c <- lm(Schwebehoehe ~ Lernzeit*Haus, data = hogwarts_data) ``` There are also deep problems with professor Snape's interpretation of the regression results: Hufflepuff's dummy predictor's being significant only indicates that Hufflepuff is significantly different from the reference group, i.e. Gryffindor. It does not prove that Hufflepuff's scores are outstandingly or uniquely bad. To emphasize this, you can simply compare Snape's own house, Slytherin, to Hufflepuff directly: ```{r} mean(hogwarts_data$Schwebehoehe[hogwarts_data$Haus == "Slytherin"]) mean(hogwarts_data$Schwebehoehe[hogwarts_data$Haus == "Hufflepuff"]) ``` An average of barely six centimetres doesn't really show Hufflepuff being uniquely bad. ### Learning culture in Ravenclaw Here, you'd probably start by questioning the choice of logistic regression as statistical method. Professor Flitwick's proposed causal direction was "being a Ravenclaw makes you study more", whereas the logistic regression is conceptionally closer to "studying more makes it more likely to be a Ravenclaw". In light of this, the logitic regression would have been a better method for investigating, what criteria the Sorting Hat uses for choosing the houses for new students - but this wasn't our goal here. The best method for investigating the effect of house on learning time would be a contrast analysis. However, you'd still have to keep the other causal direction in mind: The Sorting Hat is a classic example for selection bias, not randomization. Thus, it's might be argued that Flitwick's causal direction is not directly testable. Nonetheless: ```{r} contrasts(hogwarts_data$Haus) <- c(-1, -1, 3, -1) hogwarts_m2a <- lm(Lernzeit ~ Haus, data = hogwarts_data) summary(hogwarts_m2a) #highly significant ``` ### Plot ```{r} harry_plotter <- ggplot(data = hogwarts_data, aes(Lernzeit, Schwebehoehe, color = Haus)) + geom_point() + geom_smooth(method = "lm", se = F) harry_plotter #You can see that learning is especially related to magical skill in #the house Ravenclaw - another reason to the interaction to #the original regressional model! #mischief managed ``` `r if(!params$soln) {"\\end{comment}"}` Version: `r format(Sys.time(), '%d %B, %Y %H:%M')`