Soziometrie und soziale Netzwerkanalyse in pädagogischen Kontexten mit R

1 Über diesen Selbstlernkurs

Dieser Selbstlernkurs wurde für das Projekt participate@UOL der Universtität Oldenburg entwickelt.

Titel: Soziometrie und soziale Netzwerkanalyse in pädagogischen Kontexten mit R
Autor: Pawel R. Kulawiak
Lizenz: CC BY 4.0
Die dargestellten Logos sind von dieser Lizenz ausgenommen.
Beschreibung: Dieser Selbstlernkurs vermittelt die ersten Schritte, um mit Hilfe der Software R (bzw. R Studio) soziometrische Daten zur Analyse von sozialen Netzwerken zu nutzen und diese grafisch darzustellen. Vorkenntnisse in R sind empfehlenswert, technische Voraussetzungen werden direkt zur Beginn des Kurses geklärt. Das Material enthält sowohl Übungen zum Ausprobieren als auch umfangreiche Literaturhinweise zum Nach- und Weiterlesen.
Stichworte: Soziometrie, soziale Netzwerke, R, R Studio, igraph, Analyse, grafische Darstellung, Übung, Selbstlernkurs, Einführung, soziometrische Befragung, soziometrische Datenverarbeitung, Netzwerkanalyse, Netzwerkvisualisierung, soziometrische Daten; Carl von Ossietzky Universität Oldenburg; participate@UOL
Kontakt: kulawiak@uni-potsdam.de
Hinweis zur Nutzung von ChatGPT

Einzelne Textpassagen des Übungsmaterials wurden unter Zuhilfenahme von ChatGPT verfasst.

2 Einleitung

🤗 Herzlich willkommen zum Übungsmaterial “Soziometrie und soziale Netzwerkanalyse in pädagogischen Kontexten mit R”

Eine soziometrische Befragung ist eine Methode, um die sozialen Beziehungen innerhalb einer Gruppe zu messen, z.B. innerhalb einer Schulklasse. Das Ziel der Befragung ist es, Informationen über die Beziehungen der Schüler:innen untereinander in Bezug auf ihre Klassenkamerad:innen zu sammeln und somit die sozialen Strukturen innerhalb der Klasse zu identifizieren. Die erhobenen soziometrischen Daten können für die Darstellung und Analyse von sozialen Netzwerken genutzt werden. Durch die Analyse dieser Daten können verschiedene Netzwerkmaße berechnet werden, um die Struktur des sozialen Netzwerks innerhalb der Klasse zu untersuchen. Die Verwendung von soziometrischen Daten für soziale Netzwerkanalysen ermöglicht es Pädagog:innen, ein besseres Verständnis für die sozialen Strukturen und Dynamiken innerhalb der Klasse zu entwickeln.

Insgesamt bietet die Programmiersprache R mehrere Vorteile für die Verarbeitung soziometrischer Daten und soziale Netzwerkanalysen:

  • Spezialisierte Pakete: R verfügt über spezialisierte Pakete für die Analyse und Visualisierung von Netzwerken, die eine Vielzahl von Funktionen und Algorithmen bieten.

  • Flexibilität: R ist eine Open-Source-Sprache (kostenfrei), die an individuelle Bedürfnisse und Forschungsfragen angepasst werden kann.

  • Datenmanipulation: R bietet umfangreiche Funktionen zur Datenmanipulation, die für die Aufbereitung und Bereinigung von soziometrischen Daten wichtig sind.

  • Statistische Analysen: R bietet eine breite Palette von statistischen Funktionen für die Analyse von soziometrischen Daten und Netzwerken.

  • Visualisierung: R ermöglicht ansprechende Grafiken und Visualisierungen zur Veranschaulichung von Netzwerkstrukturen und -mustern.

3 Lernergebnisse

Mit dem Übungsmaterial zu den Grundlagen der soziometrischen Befragung lernen Sie, wie Sie eine Befragung durchführen, um Informationen über soziale Beziehungen in einer Gruppe zu sammeln. Das Übungsmaterial zur soziometrischen Datenverarbeitung mit R vermittelt Ihnen grundlegende Kenntnisse zur Verarbeitung und Analyse der gesammelten Daten, einschließlich Datenimport, Visualisierung und statistischer Auswertung. Dadurch sind Sie in der Lage, aussagekräftige Informationen zu extrahieren und Schlussfolgerungen über die soziale Struktur der Gruppe zu ziehen.

Lernergebnisse 📖
  • Grundlagen der soziometrischen Befragung
    • Vorbereitung und Durchführung der Befragung
  • Grundlagen der soziometrischen Datenverarbeitung mit R
    • Dateneingabe und Datenimport mit R
  • Grundlagen der sozialen Netzwerkanalyse mit R
    • Berechnung und Interpretation von Netzwerkparametern
  • Grundlagen der sozialen Netzwerkvisualisierung mit R
    • Gestaltung und Interpretation von Netzwerkvisualisierungen

4 Voraussetzungen

4.1 Vorerfahrung mit der Programmiersprache R

Vorerfahrung mit der Programmiersprache R

Erste Erfahrungen mit der Programmiersprache R (Datenverarbeitung, Datenanalyse und Datenvisualisierung) sind eine große Hilfe und nützliche Voraussetzung für die Arbeit mit dem vorliegenden Übungsmaterial.

📗 Einführungsbücher bieten einen guten Einstieg in die Programmiersprache R:

Wollschläger, D. (2021). R kompakt: Der schnelle Einstieg in die Datenanalyse (3. Aufl.). Springer Spektrum. https://doi.org/10.1007/978-3-662-63075-4

Wickham, H., & Grolemund, G. (2016). R for data science: Import, tidy, transform, visualize, and model data. O’Reilly Media. https://r4ds.had.co.nz/

4.2 R und R-Studio Installation

Installationsanleitungen für R sind hier verfügbar:

https://www.r-project.org/

Für die Arbeit mit R wird die Arbeitsumgebung R-Studio empfohlen:

https://posit.co/download/rstudio-desktop/

R Version 4.3.0 💻

Für diese Übungsmaterialien wurde R Version 4.3.0 genutzt.

R-Studio Version 2023.03.1+446 💻

Für diese Übungsmaterialien wurde R-Studio Version 2023.03.1+446 genutzt.

4.3 R-Zusatzpaket igraph

Für die Netzwerkanalysen wird das R-Zusatzpaket igraph genutzt. Das R-Zusatzpaket igraph ist eine leistungsstarke Bibliothek zur Analyse und Manipulation von Netzwerken. Es bietet eine breite Palette von Funktionen und Algorithmen für die Erstellung, Modellierung, Analyse und Visualisierung von Netzwerken. Das Paket muss daher installiert und stets geladen sein:

install.packages("igraph") # R-Zusatzpaket igraph installieren
library(igraph) # R-Zusatzpaket igraph laden
igraph Version 1.4.2 💻

Für diese Übungsmaterialien wurde igraph Version 1.4.2 genutzt.

Weitere nützliche Infos zu igraph:

https://igraph.org/

https://r.igraph.org/

Literatur-Tipp 📗

Es gibt ein umfangreiches Lehrbuch zu Netzwerkanalysen mit igraph:

Kolaczyk, E. D., & Csardi, G. (2020). Statistical analysis of network data with R (2. Aufl.). Springer Nature. https://doi.org/10.1007/978-3-030-44129-6

5 Soziometrische Befragung

Eine soziometrische Befragung ist eine Methode, um die sozialen Beziehungen innerhalb einer Gruppe zu messen, z.B. innerhalb einer Schulklasse. Die Mitglieder einer sozialen Gruppe, z.B. Schüler:innen in einer Klassengemeinschaft oder Lehrkräfte in einem Kollegium, werden anhand einer bestimmten Frage nach ihrem “Verhältnis” zu den anderen Gruppenmitgliedern befragt. Die gestellte Frage wird auch als soziometrisches Kriterium bezeichnet. Soziometrische Befragungen können schriftlich bzw. digital (Fragebogen) oder mündlich (Interview) erfolgen. Das Prinzip einer soziometrischen Befragung in einer Schulklasse besteht daher darin, Informationen über die sozialen Beziehungen zwischen den Schülerinnen und Schülern zu sammeln. Jede Schüler:in wird gebeten, ihre Präferenzen und Beziehungen zu den Mitschüler:innen anzugeben. Eine entsprechende Befragung kann aber auch mit Lehrkräften, also im Lehrerkollegium, durchgeführt werden. Nachfolgend sind Beispiele für soziometrische Kriterien dargestellt.

Beispiele für soziometrische Kriterien (Schüler:innen-Ebene)
Soziometrisches Kriterium Dimension (gemessenes Konstrukt)
Mit wem aus deiner Klasse hast du in der letzten großen Pause gespielt? Gemeinsame Aktivitäten (Spiel)
Mit wem aus deiner Klasse spielst du gerne? Beliebtheit als Spielpartner:in
Mit wem aus deiner Klasse spielst du nicht so gerne? Unbeliebtheit als Spielpartner:in
Mit wem aus deiner Klasse hast du in der letzten Woche gemeinsam gelernt (außerhalb der Schule)? Außerschulische Lernaktivitäten
Mit wem aus deiner Klasse triffst du dich auch außerhalb der Schule? Außerschulische Kontakte (allgemein)
Mit wem aus deiner Klasse triffst du dich auch außerhalb der Schule zum Spielen? Außerschulische Kontakte (Spielen)
Wen aus deiner Klasse magst du gerne? Allgemeine Beliebtheit
Wen aus deiner Klasse magst du nicht so gerne? Allgemeine Unbeliebtheit
Neben wem aus deiner Klasse würdest du gerne sitzen? Beliebtheit als Sitzpartner:in
Neben wem aus deiner Klasse würdest du nicht so gerne sitzen? Unbeliebtheit als Sitzpartner:in
Gibt es Mitschüler:innen, die deine Sachen mit Absicht kaputtmachen? Abweichendes Verhalten (Sachbeschädigung)
Gibt es Mitschüler:innen, die dich mit Absicht schlagen, schubsen, treten, usw.? Abweichendes Verhalten (physische Gewalt)
Beispiele für soziometrische Kriterien (Lehrkraft-Ebene)
Soziometrisches Kriterium Dimension (gemessenes Konstrukt)
Mit welchen Kolleg:innen haben Sie im aktuellen Schuljahr Förderplangespräche geführt? Teamarbeit (Förderplanung)
Mit welchen Kolleg:innen haben Sie in den letzten vier Wochen gemeinsam unterrichtet (Teamteaching)? Teamarbeit (Teamteaching)
Mit welchen Kolleg:innen haben Sie in den letzten vier Wochen kollegiale Fallberatungen durchgeführt? Teamarbeit (kollegiale Fallberatung)
Mit welchen Kolleg:innen kooperieren Sie besonders gerne? Beliebtheit als Kooperationspartner:in
Mit welchen Kolleg:innen kooperieren Sie nicht so gerne? Unbeliebtheit als Kooperationspartner:in

Das soziometrische Kriterium sollte mit Bedacht formuliert sein: Welche Dimension einer Sozialbeziehung soll fokussiert werden (z.B. Beliebtheit, Teamarbeit, usw.)? Soll ein konkreter zeitlicher Rahmen gesetzt werden (z.B. gestern, heute, morgen, aktuelles Schuljahr, in der Zukunft, usw.)? Soll ein konkretes Setting abgefragt werden (z.B. in der Pause, im Kunstunterricht, auf dem Ausflug, usw.)? Bei einer soziometrischen Befragung sollten ebenfalls ethische Richtlinien Beachtung finden:

  • Wie fühlen sich die befragten Personen (z.B. Angst/Scham)?

  • Verstärken die Fragen negative Emotionen (z.B. “Wenn magst du nicht so gerne?”)?

Für die Befragung muss daher ein geschützter Rahmen geschaffen werden, um negative Effekte auf die Klassengemeinschaft zu vermeiden. Ein entsprechender Fragebogen ist nachfolgend dargestellt.

Hinweis

Findet eine soziometrische Befragung im Rahmen einer wissenschaftlichen Studie mit Minderjährigen statt, dann bedarf es zusätzlich der Einholung der elterlichen Einverständniserklärungen. Schüler:innen ohne Einverständniserklärung dürfen nicht befragt und von den anderen Mitschüler:innen im Rahmen der Befragung nicht benannt werden bzw. dürfen die soziometrischen Daten für die Schüler:innen ohne Einverständniserklärung nicht erhoben/gespeichert werden.

Beispiel für einen soziometrischen Fragebogen
Mit wem aus deiner Klasse hast du in der letzten großen Pause gespielt?
(bitte ankreuzen)
Dein Name: Robert
Dein Alter: 9
Name bitte hier ankreuzen
Charlotte X
Hans
Lene
Dominik X
Lieselotte X
Gerda
Roberta X
Robert
Florentine
Leonore
Paul
Literatur-Tipps 📗

Überblicksarbeit zur Soziometrie:

Dollase, R. (2013). Soziometrie – Anfänge, historische Entwicklung und Aktualität. In C. Stadler (Hrsg.), Soziometrie (S. 15–29). Springer Fachmedien Wiesbaden. https://doi.org/10.1007/978-3-531-18981-9_1

Ethische Aspekte einer soziometrischen Befragung:

Child, S., & Nind, M. (2013). Sociometric methods and difference: A force for good – or yet more harm. Disability & Society, 28(7), 1012–1023. https://doi.org/10.1080/09687599.2012.741517

6 Soziometrische Daten

Beim zuvor dargestellten Fragebogen muss der befragte Schüler (Robert) seine Mitschüler:innen anhand des soziometrischen Kriteriums ankreuzen, also nominieren (“Mit wem aus deiner Klasse hast du in der letzten großen Pause gespielt?”). Man spricht deshalb auch von einer soziometrischen Nominierung (bzw. Wahl), d.h. eine soziometrische Nominierung signalisiert in unserem Beispiel, dass Robert angegeben hat, dass er mit Charlotte gespielt hat. Charlotte hat evtl. die gleiche Wahrnehmung der Situation und hat Robert deshalb ebenfalls nominiert. Die soziometrische Nominierung kann daher als eine Sender-Empfänger-Modell konzeptualisiert werden, also eine binäre Dateninformation (1 und 0):

  • 1: Nominierung zwischen zwei Personen vorhanden
  • 0: Nominierung zwischen zwei Personen nicht vorhanden

Sender:in → Empfänger:in

Robert → Charlotte (Robert …hat gespielt mit… Charlotte)

Charlotte → Robert (Charlotte …hat gespielt mit… Robert)

Die Daten können mit R und igraph in einer sehr ähnlichen Form für die weiteren Analyseschritte abgespeichert werden. Jedoch wird nicht der Pfeil (→) als Symbol genutzt, sondern -+:

Robert -+ Charlotte (Robert …hat gespielt mit… Charlotte)

Charlotte -+ Robert (Charlotte …hat gespielt mit… Robert)

Diese Systematik wird innerhalb des Befehls graph_from_literal() genutzt. Alle soziometrischen Nominierungen werden mit dem Zuweisungspfeil <- als Objekt netzwerk gespeichert (hier nur beispielhaft für die beiden Personen Robert und Charlotte).

netzwerk <- graph_from_literal(Robert -+ Charlotte, Charlotte -+ Robert)
igraph Dokumentation 📃

igraph bietet eine ausführliche Dokumentation aller Befehle:

https://r.igraph.org/reference/index.html

Dort findet man auch entsprechende Hinweise zum Befehl graph_from_literal():

https://r.igraph.org/reference/graph_from_literal.html

Wichtig

Alternativ können Sie jeden R-Befehl im Übungsmaterial direkt anklicken und gelangen direkt zur entsprechenden Online-Dokumentation des Befehls.

6.1 Übung A

Fallbeispiel

Eine Grundschullehrkraft hat eine kleine Klasse mit 7 Kindern übernommen. Wenn die Schüler:innen der gesamten Schule in der großen Pause auf dem Schulhof zusammen spielen, dann ist es allerdings sehr unübersichtlich und die Lehrkraft kann nicht alle Aktivitäten der Kinder gleichermaßen im Auge behalten. Die Lehrkraft möchte daher einen genaueren Einblick in das “soziale Miteinander” ihrer neuen Klasse erhalten und startet deshalb eine soziometrische Befragung der einzelnen Schüler:innen: Mit wem aus deiner Klasse hast du in der letzten großen Pause gespielt? Die Lehrkraft notiert die Antworten der Kinder in einer Tabelle.

Befragtes Kind Antworten
Susi …hat gespielt mit… Max, Ali, Til
Eda …hat gespielt mit… Lena
Ella …hat gespielt mit… -
Lena …hat gespielt mit… Eda
Max …hat gespielt mit… Ali, Susi
Ali …hat gespielt mit… Max, Susi
Til …hat gespielt mit… Susi
Übung A 👩‍🔧
  1. Speichern Sie die soziometrischen Nominierungen (siehe Fallbeispiel und Tabelle) als Objekt netzwerk mit dem Befehl graph_from_literal(). Da Ella mit niemandem gespielt hat, erfolgt für Ella ausschließlich die Übergabe des Namen Ella innerhalb des Befehls graph_from_literal().

  2. Visualisieren sie anschließend das Netzwerk mit den folgenden Befehlen:

par(mar = c(0, 0, 0, 0)) # Ränder (margins) der Grafik auf null setzten (verbessert die Darstellungsform der Visualisierung)
plot(netzwerk, vertex.size = 30)
netzwerk <- graph_from_literal(Susi -+ Max, Susi -+ Ali, Susi -+ Til, Eda -+ Lena,
                               Ella, Lena -+ Eda, Max -+ Ali, Max -+ Susi,
                               Ali -+ Max, Ali -+ Susi, Til -+ Susi)

Alle Antworten (Nominierungen) der Kinder werden in der Form Susi -+ Max (Susi …hat gespielt mit… Max) an die Funktion graph_from_literal() übergeben. Da Ella mit niemandem gespielt hat, erfolgt für Ella ausschließlich die Übergabe des Namen Ella. Alle Antworten der Kinder werden dann mit dem Zuweisungspfeil <- als Objekt netzwerk gespeichert.

par(mar = c(0, 0, 0, 0)) # Ränder (margins) der Grafik auf null setzten
plot(netzwerk, vertex.size = 20)

Ein Bild sagt mehr als tausend Worte. Daher haben wir die Antworten der Kinder visualisiert (Netzwerkvisualisierung). Wir übergeben daher das Objekt netzwerk an die Funktion plot() (plotten) und definieren noch ein paar Eigenschaften der Abbildung, z.B. die Größe der Kreissymbole mit dem Argument vertex.size = 20. Die grafische Darstellung des Netzwerkes kann variieren, da der Visualisierungsalgorithmus unterschiedliche aber ähnliche Lösungen für die Darstellung des Netzwerks ermittelt. Auf der nachfolgenden Netzwerkvisualisierung erscheint beispielsweise eine geringfügig andere Anordnung der Kreissymbole.

Die Grafik ist eine Repräsentation der Antworten der Kinder (mit Pfeilen und Kreissymbolen). Die Kinder werden als Kreissymbole dargestellt. Die Nominierungen werden durch Pfeile symbolisiert. In der Grafik sehen wir auf den ersten Blick spannende soziale Netzwerkstrukturen: Eine Triade bzw. Dreier-Clique (Max, Ali, Susi), zwei Dyaden (Eda und Lena sowie Susi und Til) und das isolierte Kind ohne Spielpartner:innen (Ella). In diesem Netzwerk beruhen alle Nominierungen auf Gegenseitigkeit (Beispiel: Susi hat mit Max gespielt; Max hat mit Susi gespielt), d.h. die Kreissymbole/Kinder sind mit Doppelpfeilen miteinander verbunden (↔︎). In der Abbildung sehen wir, dass die drei Kinder Susi, Ali und Max mit gegenseitigen Nominierungen verbunden sind (Triade bzw. Dreier-Clique). Dies bedeutet aber nicht zwangsläufig, dass alle gemeinsam in dieser Konstellation zusammen gespielt haben. Die Interaktionen haben möglicherweise zeitversetzt stattgefunden:

  • Susi und Max spielen gemeinsam Fangen.
  • Ali spielt währenddessen alleine Basketball.
  • Max möchte nun auch Basketball spielen und geht deshalb zu Ali.
  • Susi hat keine Lust auf Basketball und findet in Til einen neuen Spielpartner fürs Fangen.

Es ist also wichtig zu beachten, dass das Vorhandensein einer Triade nicht zwangsläufig darauf hinweist, dass diese drei Personen gemeinsam Zeit miteinander verbracht haben. Eine Triade (oder größere Netzwerkstruktur wie eine Vierer-Clique) kann aber ein Indikator dafür sein, dass eine gewisse Beziehung oder Interaktion zwischen mehreren Personen besteht.

📗 Weiterführende Hinweise und Literatur-Tipp

Im Rahmen der sozialen Netzwerkforschung können zusätzlich zur Soziometrie sogenannte RFID-Chips (radio-frequency identification) genutzt werden. Jede Schüler:in wird dann mit einem kleinen RFID-Chip ausgestattet (z.B. an der Kleidung befestigt). Die RFID-Chips ermöglichen eine Messung der physischen Nähe, sofern sich mehrere Schüler:innen über einen bestimmten Zeitraum in einer gewissen Nähe zueinander befinden (z.B. Minimalabstand von 1,5 Metern). Dies wäre ein Indikator dafür, dass eine Interaktion tatsächlich innerhalb einer Gruppe (z.B. Dreier-Clique) stattgefunden hat. Diese Information kann dann wiederum mit den soziometrischen Befragungsdaten abgeglichen werden. Eine engmaschige Messung mittels RFID-Chips würde „Kontakt-Daten” über einen spezifischen Zeitraum zur Verfügung stellen (z.B. gesamte Hofpause). Eine soziometrische Befragung kann ebenfalls regelmäßig wiederholt werden (z.B. wöchentlich), um die Sozialbeziehungen über einen gewissen Zeitraum abzubilden. Die Analyse dieser zeitlichen (längsschnittlichen/longitudinalen) Daten kann Einblicke in verschiedene Aspekte der sozialen Netzwerke liefern, wie z.B. die Bildung und Auflösung von Gruppen über spezifische Zeiträume. Für die Analyse sogenannter längsschnittlicher soziometrischer Daten stehen spezifische aber komplexe Analysemethoden zur Verfügung. An dieser Stelle erfolgen daher lediglich Literaturverweise zur Nutzung von RFID-Chips und zur Anwendung von longitudinalen (längsschnittlichen) Analysemethoden in der sozialen Netzwerkforschung.

Dai, S. (2022). Study of dynamical social networks of pre-school children using wearable wireless sensors. https://theses.hal.science/tel-04010766

Koskinen, J., & Snijders, T. A. B. (2023). Multilevel longitudinal analysis of social networks. Journal of the Royal Statistical Society Series A: Statistics in Society, 186(3), 376–400. https://doi.org/10.1093/jrsssa/qnac009

6.2 Grundbegriffe der Netzwerktheorie: Vertex und Edge

Die soziometrischen Daten aus dem Fallbeispiel sind nun im Objekt netzwerk hinterlegt und wir haben eine erste Netzwerkvisualisierung vollzogen. Mit einigen Befehlen können wir uns nun einen Überblick über die Netzwerkdaten verschaffen. Vorher besprechen wir jedoch zwei Grundlegende Begriffe der Netzwerktheorie (in der Mathematik auch als Graphentheorie bezeichnet): Vertex und Edge.

Im Kontext der Netzwerktheorie werden die Begriffe Vertex (Knoten) und Edge (Kante) verwendet, um die grundlegenden Elemente eines Netzwerks zu beschreiben. Die Personen sind die Knoten (Vertex) des Netzwerks und die Kanten (Edge) sind die Verbindungen (Nominierungen) zwischen den Personen (Knoten).

Der Befehl V() (Vertex) gibt uns einen Überblick über die Anzahl und Namen der Personen im Netzwerk (in unserem Beispiel 7 Personen). Darüber hinaus erfahren wir, dass die Knoten im Netzwerk über Namen verfügen (named). Für jedes Netzwerk wird ein Zufalls-ID erstellt. In diesem Fall 9c975fd. Mit der Symbolik [1] wird lediglich angezeigt, dass mit der Darstellung des ersten Elements begonnen wird (Name der ersten Person im Netzwerk).

V(netzwerk)
+ 7/7 vertices, named, from 9c975fd:
[1] Susi Max  Ali  Til  Eda  Lena Ella

Der Befehl E() (Edge) gibt uns einen Überblick über die Nominierungen zwischen den Personen im Netzwerk (mit der Pfeilsymbolik in der Form Sender:in -> Empfändger:in). Dabei wird auch die Anzahl aller Nominierungen im Netzwerk ausgezählt (in unserem Fallbeispiel 10 Nominierungen). Auch hier wird wieder das erste Element angezeigt ([1]), also die erste aufgelistete Nominierung (Susi->Max). Beim Zeilenumbruch sehen wir, dass mit der Auflistung des 7. Elements ([7]) fortgefahren wird, also die 7. aufgelistete Nominierung (Ali ->Max).

E(netzwerk)
+ 10/10 edges from 9c975fd (vertex names):
 [1] Susi->Max  Susi->Ali  Susi->Til  Max ->Susi Max ->Ali  Ali ->Susi
 [7] Ali ->Max  Til ->Susi Eda ->Lena Lena->Eda 
Literatur-Tipp 📗

Das Buch von Wassermann und Faust ist ein Klassiker der sozialen Netzwerktheorie. Grundlegende Begriffe der Netzwerktheorie können dort nachgeschlagen werden:

Wasserman, S., & Faust, K. (1994). Social network analysis: Methods and applications. Cambridge University Press. https://doi.org/10.1017/CBO9780511815478

7 Netzwerk-Datenstruktur

7.1 Adjazenzmatrix

Die Darstellung der soziometrischen Nominierungen in der Form Sender:in -> Empfändger:in bzw. Sender:in -+ Empfändger:in ist bei großen Netzwerken umständlich und unübersichtlich (viele Personen, viele Nominierungen). Daher können die soziometrischen Daten auch in einer kompakten Form dargestellt und gespeichert werden, nämlich in einer Adjazenzmatrix (auch Soziomatrix genannt).

Eine Adjazenzmatrix ist eine rechteckige Matrix, die in der Netzwerktheorie verwendet wird, um die Beziehungen zwischen den Personen eines Netzwerks darzustellen. Die Zeilen und Spalten der Matrix repräsentieren die Personen, und jedes Element in der Matrix zeigt an, ob eine Nominierung zwischen den entsprechenden Personen besteht oder nicht. In der Regel werden hierfür binäre Werte verwendet (1 und 0):

  • 1: Nominierung zwischen zwei Personen vorhanden
  • 0: Nominierung zwischen zwei Personen nicht vorhanden (bei igraph wird ein Punkt . anstelle der 0 genutzt)

Mit dem Befehl as_adjacency_matrix(netzwerk) wird die entsprechende Matrix des Netzwerks dargestellt. Anhand der Einträge (“1”) in der Matrix lässt sich nun erkennen, zwischen welchen Personen Nominierungen vorhanden sind. Wichtig: Bei igraph sind die Sender in den Zeilen und Empfänger in den Spalten dargestellt.

7 x 7 sparse Matrix of class "dgCMatrix"
     Susi Max Ali Til Eda Lena Ella
Susi    .   1   1   1   .    .    .
Max     1   .   1   .   .    .    .
Ali     1   1   .   .   .    .    .
Til     1   .   .   .   .    .    .
Eda     .   .   .   .   .    1    .
Lena    .   .   .   .   1    .    .
Ella    .   .   .   .   .    .    .

7.2 Datenimport

Die soziometrischen Nominierungen müssen nicht unbedingt in der Form Sender:in -+ Empfändger:in an den Befehl graph_from_literal() übergeben werden (dies ist insbesondere bei großen Netzwerken sehr umständlich). Die Eingabe der soziometrischen Daten kann auch in eine entsprechende Adjazenzmatrix erfolgen und die Daten können anschließend in R überführt werden (Datenimport). Für die Eingabe der Daten als Adjazenzmatrix kann ein Tabellenkalkulationsprogramm genutzt werden, z.B. Excel. Die Daten aus dem Fallbeispiel sehen in einer Excel-Tabelle wie folgt aus:

Bei Excel kann die Matrix im CSV-Format zum Beispiel unter dem Namen “Soziometrie_matrix” gespeichert werden (Speichern unter: CSV - Trennzeichen getrennt). Die Datei hat dann die Dateiendung “csv”: Soziometrie_matrix.csv.

Zwecks Übung können Sie die soziometrischen Daten der Beispielklasse bei Excel eingeben und als CSV-Datei abspeichern oder Sie nutzen die bereitgestellte CSV-Datei: “Soziometrie_matrix.csv”

Hinweis

Beim Öffnen einer CSV-Datei in Excel erscheint möglicherweise eine Warnung „Möglicher Datenverlust” und die Aufforderung die Datei im Excel-Format abzuspeichern. Dies ist nicht notwendig und die Warnung kann getrost ignoriert werden. Diese Warnung erscheint, da in einer CSV-Datei entsprechende Excel-Funktionen (z.B. Mittelwertberechnung) nicht abgespeichert werden können.

Die Informationen aus der CSV-Datei werden nun in R eingelesen und in ein Netzwerk überführt. Der Dateipfad "C:/Users/Pawel/Desktop/Soziometrie_matrix.csv" (Speicherort auf der Festplatte) wird an den Befehl read.csv2() übergeben. Der Befehl read.csv2() liest somit die CSV-Datei ein. Das Argument row.names = 1 gibt an, dass die Namen der Personen in der ersten Spalte der CSV-Datei lokalisiert sind. Die eingelesenen Daten werden direkt mit dem Pipe-Operator |> an den Befehl as.matrix() übergeben. Dadurch werden die Daten als Matrix-Objekt data gespeichert. Wir betrachten das Matrix-Objekt data. Mit der Funktion graph_from_adjacency_matrix() wird das Matrix-Objekt data als Netzwerk-Objekt netzwerk gespeichert. Anschließend prüfen wir mit den bereits bekannten Befehlen V(netzwerk) und E(netzwerk), ob alle Informationen erfolgreich aus der CSV-Datei überführt worden sind.

data <- read.csv2("C:/Users/Pawel/Desktop/Soziometrie_matrix.csv", row.names = 1) |> as.matrix()
data
netzwerk <- data |> graph_from_adjacency_matrix()
V(netzwerk)
E(netzwerk)
     Susi Max Ali Til Eda Lena Ella
Susi    0   1   1   1   0    0    0
Max     1   0   1   0   0    0    0
Ali     1   1   0   0   0    0    0
Til     1   0   0   0   0    0    0
Eda     0   0   0   0   0    1    0
Lena    0   0   0   0   1    0    0
Ella    0   0   0   0   0    0    0
+ 7/7 vertices, named, from 9d15b8d:
[1] Susi Max  Ali  Til  Eda  Lena Ella
+ 10/10 edges from 9d15b8d (vertex names):
 [1] Susi->Max  Susi->Ali  Susi->Til  Max ->Susi Max ->Ali  Ali ->Susi
 [7] Ali ->Max  Til ->Susi Eda ->Lena Lena->Eda 
Wichtig

Sender:in: = Zeile

Empfänger:in = Spalte

Bei igraph sind die Sender:innen in den Zeilen und Empfänger:innen in den Spalten dargestellt. Prinzipiell können die Daten bei Excel auch genau andersherum eingegeben werden, also Sender:innen in den Spalten und Empfänger:innen in den Zeilen (das ist Geschmackssache). Die notwendige Ordnung (Sender:in = Zeile; Empfänger:in = Spalte) lässt sich leicht herstellen, in dem das Matrix-Objekt mit dem Befehl t() transponiert wird. Die Transponierung einer Matrix ist eine Operation, bei der die Zeilen und Spalten einer Matrix vertauscht werden.

Der Datenimport müsste wie folgt aussehen, sofern sich die Sender:innen in den Spalten und Empfänger:innen in den Zeilen der Adjazenzmatrix befinden:

data <- read.csv2("C:/Users/Pawel/Desktop/Soziometrie_matrix.csv", row.names = 1) |> as.matrix() |> t()
netzwerk <- data |> graph_from_adjacency_matrix()

7.3 Übung B

Übung B 👩‍🔧

Mit dieser Übung erproben Sie den Import von soziometrischen Daten anhand einer CSV-Datei.

Befragung der Schulklasse A

Soziometrisches Kriterium: Mit wem aus deiner Klasse spielst du gerne?

Eine Adjazenzmatrix (CSV-Datei) mit den soziometrischen Daten der Schulklasse steht hier zum Download bereit: “Soziometrie_KLASSE_A.csv”

Öffnen und betrachten Sie die Datei. Die soziometrischen Daten wurden anonymisiert. Daher sind keine Klarnamen verfügbar. Die Schüler:innen sind stattdessen mit entsprechenden Buchstaben gekennzeichnet (A, B, C, usw.).

Wichtig: Die Sender:innen befinden sich in den Spalten und Empfänger:innen in den Zeilen.

  1. Importieren Sie die soziometrischen Daten.

    Prüfen Sie, ob der Import erfolgreich war, indem Sie sich folgende Informationen anzeigen lassen:

  2. Lassen Sie sich die Adjazenzmatrix anzeigen.

  3. Bestimmen Sie die Anzahl der Nominierungen im Netzwerk.

  4. Visualisieren Sie das Netzwerk.

data <- read.csv2("C:/Users/Pawel/Desktop/Soziometrie_KLASSE_A.csv", row.names = 1) |> as.matrix() |> t()
netzwerk <- data |> graph_from_adjacency_matrix()

Der Dateipfad zur gespeicherten CSV-Datei muss an den Befehl read.csv2() übergeben werden, z.B. "C:/Users/Pawel/Desktop/Soziometrie_KLASSE_A.csv". Die Matrix muss unbedingt mit dem Befehlt t() transponiert werden, da sich die Sender:innen in den Spalten und Empfänger:innen in den Zeilen befinden (igraph erwartet die Matrix genau andersherum: Sender:innen in den Zeilen und Empfänger:innen in den Spalten). Die Transponierung einer Matrix ist eine Operation, bei der die Zeilen und Spalten einer Matrix vertauscht werden.

19 x 19 sparse Matrix of class "dgCMatrix"
  [[ suppressing 19 column names 'A', 'B', 'C' ... ]]
                                       
A . 1 . 1 . 1 . . . . . 1 . . 1 1 . . 1
B 1 . 1 . . 1 . . . 1 . 1 . . 1 . 1 . .
C 1 1 . . 1 1 . 1 . . 1 1 1 1 1 . . . 1
D . . 1 . 1 1 . 1 . . 1 1 1 . 1 1 1 . .
E . 1 1 . . . 1 . . . . 1 . 1 1 . 1 . .
F 1 . 1 1 1 . . 1 . . . 1 1 . 1 . 1 . .
G . . 1 1 1 . . . 1 . . 1 . . 1 . 1 1 .
H 1 1 1 . . 1 . . . 1 1 1 1 1 1 . . . 1
I . . . . . . . . . . . . 1 1 . . 1 . .
J . 1 1 . . 1 . 1 . . . 1 1 . . . 1 . .
K 1 . 1 . . . . . 1 . . 1 1 1 1 . . 1 .
L . 1 1 . 1 1 . 1 . 1 1 . . . 1 . 1 . .
M . . . . . . . . 1 . . . . . . . . 1 .
N . . . . . . 1 . 1 . 1 1 1 . . . 1 1 .
O 1 . 1 . . 1 . 1 . . 1 1 . . . . . . 1
P 1 . . 1 1 1 . . . . . 1 . . 1 . 1 . .
Q . . 1 . 1 . 1 . 1 . . 1 . 1 . . . . .
R . . 1 . . . 1 . 1 . 1 1 1 1 . . . . .
S 1 1 1 1 1 1 . 1 . . 1 1 1 . 1 . 1 . .
data
  A B C D E F G H I J K L M N O P Q R S
A 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1 1 0 0 1
B 1 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 0
C 1 1 0 0 1 1 0 1 0 0 1 1 1 1 1 0 0 0 1
D 0 0 1 0 1 1 0 1 0 0 1 1 1 0 1 1 1 0 0
E 0 1 1 0 0 0 1 0 0 0 0 1 0 1 1 0 1 0 0
F 1 0 1 1 1 0 0 1 0 0 0 1 1 0 1 0 1 0 0
G 0 0 1 1 1 0 0 0 1 0 0 1 0 0 1 0 1 1 0
H 1 1 1 0 0 1 0 0 0 1 1 1 1 1 1 0 0 0 1
I 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0
J 0 1 1 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 0
K 1 0 1 0 0 0 0 0 1 0 0 1 1 1 1 0 0 1 0
L 0 1 1 0 1 1 0 1 0 1 1 0 0 0 1 0 1 0 0
M 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0
N 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 1 1 0
O 1 0 1 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 1
P 1 0 0 1 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0
Q 0 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0
R 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 0 0 0 0
S 1 1 1 1 1 1 0 1 0 0 1 1 1 0 1 0 1 0 0

Mit der Darstellung der Adjazenzmatrix erfolgt auch die Auszählung der Personen (19 Schüler:innen im Netzwerk).

Aus Platzgründen wird bei größeren Netzwerken auf die Darstellung der Spaltennamen verzichtet (suppressing 19 column names ‘A’, ‘B’, ‘C’ ...), sofern die Adjazenzmatrix mit dem Befehl as_adjacency_matrix(netzwerk) erstellt worden ist. Die Spaltennamen sind aber sichtbar, wenn das vorherige Matrix-Objekt aufgerufen wird (in diesem Fall data).

E(netzwerk)
+ 145/145 edges from 9d1e004 (vertex names):
  [1] A->B A->D A->F A->L A->O A->P A->S B->A B->C B->F B->J B->L B->O B->Q C->A
 [16] C->B C->E C->F C->H C->K C->L C->M C->N C->O C->S D->C D->E D->F D->H D->K
 [31] D->L D->M D->O D->P D->Q E->B E->C E->G E->L E->N E->O E->Q F->A F->C F->D
 [46] F->E F->H F->L F->M F->O F->Q G->C G->D G->E G->I G->L G->O G->Q G->R H->A
 [61] H->B H->C H->F H->J H->K H->L H->M H->N H->O H->S I->M I->N I->Q J->B J->C
 [76] J->F J->H J->L J->M J->Q K->A K->C K->I K->L K->M K->N K->O K->R L->B L->C
 [91] L->E L->F L->H L->J L->K L->O L->Q M->I M->R N->G N->I N->K N->L N->M N->Q
[106] N->R O->A O->C O->F O->H O->K O->L O->S P->A P->D P->E P->F P->L P->O P->Q
[121] Q->C Q->E Q->G Q->I Q->L Q->N R->C R->G R->I R->K R->L R->M R->N S->A S->B
[136] S->C S->D S->E S->F S->H S->K S->L S->M S->O S->Q

145 Nominierungen im Netzwerk

par(mar = c(0, 0, 0, 0)) # Ränder (margins) der Grafik auf null setzten
plot(netzwerk, vertex.size = 15)

Die Vielzahl der Nominierungen erschwert die Lesbarkeit der Visualisierung. D.h. im Gewirr der Pfeile ist teilweise schwer nachvollziehbar, zwischen welchen Personen Nominierungen bestehen. Jedoch ist die Anzahl der eingehenden Nominierungen für eine Person anhand der eingehenden Pfeile am jeweiligen Kreissymbol leicht ersichtlich. Somit lässt sich anhand der Inspektion der eingehenden Pfeile zwischen Personen mit einer hohen und geringen Beliebtheit unterscheiden. Auf die Schüler:innen P und J sind beispielsweise jeweils lediglich 2 Pfeilspitzen gerichtet (eher geringe Beliebtheit als Spielpartner). Wohingegen Schüler:innen L und C fast gänzlich von einer Vielzahl von Pfeilspitzen umrundet sind (eher hohe Beliebtheit als Spielpartner).

Da die Visualisierung des Netzwerks eine Gewisse Unübersichtlichkeit mit sich bringt, ist für ein präziseres Verständnis der Netzwerkstrukturen und Netzwerkpositionen die Berechnung von Netzwerkparametern (siehe nächster Abschnitt) sowie eine Reduktion der Komplexität der Netzwerkvisualisierung sinnvoll (siehe Abschnitt Netzwerkvisualisierung).

8 Netzwerkparameter

Zur Beschreibung der Netzwerkpositionen der einzelnen Personen können nun Netzwerkparameter herangezogen werden. Nachfolgend werden einige Parameter beispielhaft vorgestellt.

8.1 Indegree und Outdegree

Der Netzwerkparameter Indegree bezieht sich auf die Anzahl der erhaltenen Nominierungen. Im Kontext der Daten aus Beispielklasse A (siehe Übung B) kann dieser Wert als Grad der Beliebtheit interpretiert werden (Beliebtheit als Spielpartner). Somit können mehr und weniger beliebte Schüler:innen identifiziert werden.

Die Berechnung der Indegrees erfolgt mit dem Befehl degree(), wobei das Argument mode = "in" definiert werden muss. Somit erhalten wir für jede Schüler:in den Indegree.

degree(netzwerk, mode = "in")
 A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S 
 8  7 13  5  8 10  4  7  6  3  8 16 10  7 12  2 11  4  4 

Wird der Indegree mit dem Befehl sort() aufsteigend sortiert, so können wir auf den ersten Blick die beliebtesten und die am wenigsten beliebten Schüler:innen identifizieren.

degree(netzwerk, mode = "in") |> sort()
 P  J  G  R  S  D  I  B  H  N  A  E  K  F  M  Q  O  C  L 
 2  3  4  4  4  5  6  7  7  7  8  8  8 10 10 11 12 13 16 

Schüler:in P hat lediglich 2 Nominierungen erhalten (unbeliebteste) und Schüler:in L hat 16 Nominierungen erhalten (beliebteste).

Der Netzwerkparameter Outdegree bezieht sich auf die Anzahl der ausgesendeten Nominierungen. Im Kontext der Daten aus Beispielklasse A (siehe Übung B) kann dieser Wert als Grad der Aussendung von sozialen Impulsen interpretiert werden: Mit wie vielen Personen spielt Schüler:in X laut eignen Angaben gerne zusammen? Zur Bestimmung der Outdegrees muss innerhalb des Befehls degree() das Argument mode = "out" definiert werden.

8.2 Übung C

Übung C 👩‍🔧

Bestimmen Sie für die Schüler:innen der Beispielklasse A (siehe Übung B) die Outdegrees.

  • Welche Schüler:in sendet die meisten sozialen Impulse?

  • Welche Schüler:in sendet die wenigsten sozialen Impulse?

degree(netzwerk, mode = "out") |> sort()
 M  I  Q  A  B  E  J  N  O  P  R  G  K  F  L  D  C  H  S 
 2  3  6  7  7  7  7  7  7  7  7  8  8  9  9 10 11 11 12 

Schüler:in M sendet die wenigsten sozialen Impulse (Indegree von 2).

Schüler:in S sendet die meisten sozialen Impulse (Indegree von 12).

Bezug zur Netzwerkvisualisierung: Für die Positionen der Personen im visualisierten Netzwerk ist die Summe der gesendeten (Outdegree) und empfangenen Nominierungen (Indegree) entscheidend. Personen mit einer hohen Anzahl von Nominierungen (sowohl gesendete als auch empfangene Nominierungen) erscheinen eher in der Mitte des Netzwerks (hohe Vernetzung). Personen mit einer geringen Anzahl von Nominierungen erscheinen eher am Rande des Netzwerks (geringere soziale Vernetzung). So können auch Personen mit einer verhältnismäßig hohen Beliebtheit (Indegree) am Rande des visualisierten Netzwerks erscheinen, weil die Summe aus Indegree und Outdegree verhältnismäßig klein ist. Dies ist Beispielsweise der Fall für Schüler:in M (siehe auch Übung C und entsprechende Lösung). Sie empfängt verhältnismäßig viele Nominierungen innerhalb der Klasse (Indegree: 10 Nominierungen) und ist zugleich auch die Schüler:in mit der geringsten Aussendung von Nominierungen (Outdegree: 2 Nominierungen). Die Summe aus Indegree und Outdegree lässt sich für jede Person mit dem Befehl degree() bestimmen (ohne die Spezifikation des Arguments mode).

degree(netzwerk) |> sort()
 I  P  J  R  G  M  B  N  A  D  E  K  S  Q  H  F  O  C  L 
 9  9 10 11 12 12 14 14 15 15 15 16 16 17 18 19 19 24 25 

8.3 Wechselseitige und einseitige Nominierungen

Werden Nominierungen im Netzwerk erwidert? Beruhen die Nominierungen auf Gegenseitigkeit (Wechselseitigkeit)?

Für Schüler:in M (siehe auch Übung C und entsprechende Lösung) stellt sich nun die Frage, ob die ausgesendeten beiden Nominierungen von den Empfänger:innen erwidert werden (reziproke bzw. wechselseitige Nominierung): Sender:in nominiert Empfänger:in und vice versa. Es stellt sich daher die Frage, ob der gesendete soziale Impuls (Präferenz als Spielpartner:in) erwidert wird. Entsprechend können wir zwischen wechselseitigen und einseitigen Nominierungen unterscheiden.

↔︎ wechselseitige/reziproke Nominierung

→ einseitige/asymmetrische Nominierung

Bei der Berechnung der Indegrees und Outdegrees wurde bisher nicht zwischen wechsel- und einseitigen Nominierungen unterschieden.

Die Summe bzw. Degree der wechselseitigen Nominierungen kann für jede Person im Netzwerk berechnet werden, nämlich mit dem Befehl degree(netzwerk |> as.undirected(mode = "mutual")). Hierbei wird das Netzwerk-Objekt mit dem Befehl as.undirected() umgewandelt, wobei lediglich die wechselseitigen Nominierungen beibehalten werden (dies wird definiert durch mode = "mutual"). Für Schüler:in P sehen wir, dass die beiden ausgesendeten Nominierungen (Outdegree) tatsächlich auf Gegenseitigkeit beruhen.

degree(netzwerk |> as.undirected(mode = "mutual")) |> sort()
D M P G I J B E N R S A K Q F H O C L 
2 2 2 3 3 3 4 4 4 4 4 5 5 5 6 6 7 8 9 

Nun können wir auch für jede Person die Summe der einseitig eingehenden Nominierungen bestimmen, indem wir die Differenz aus Indegree (degree(netzwerk, mode = "in")) und wechselseitigen Nominierungen (degree(netzwerk |> as.undirected(mode = "mutual"))) bilden. Diese Differenz wird als Objekt einseitig gespeichert und anschließend mit dem Befehl sort() der Größe nach aufsteigend sortiert.

einseitig <- degree(netzwerk, mode = "in") - degree(netzwerk |> as.undirected(mode = "mutual"))
sort(einseitig)
J P R S G H A B D I K N E F C O Q L M 
0 0 0 0 1 1 3 3 3 3 3 3 4 4 5 5 6 7 8 

Für Schüler:in M sehen wir entsprechend, dass Sie jene Schüler:in ist, welche über die meisten eingehenden und zugleich unerwiderten Sozialimpulse verfügt. In der weiteren pädagogischen Arbeit könnte man die Gründe dafür identifizieren, warum Schüler:in M die sozialen Impulse unbeantwortet lässt. Ein Grund könnte z.B. Schüchternheit oder soziales Rückzugsverhalten sein. Zur Förderung der sozialen Eingebundenheit könnte sich die Pädagogische Arbeit insbesondere auf jene Sender:innen und Empfänger:innen fokussieren, welche mit einseitigen (unbeantworteten) Nominierungen verbunden sind. Diese Verbindungen können wir uns anzeigen lassen, indem wir die Nominierungen aufrufen (E(netzwerk)) und in eckigen Klammern die Bedingung setzen, dass wir die nicht Wechselseitigen Nominierungen erhalten möchten [!which_mutual(netzwerk)]. Mit [which_mutual(netzwerk)] würde eigentlich der Aufruf der wechselseitigen Nominierungen erfolgen. Mit dem vorausgestellten Ausrufezeichen (!) wird das Gegenteil erreicht, nämlich der Aufruf der einseitigen Nominierungen.

E(netzwerk)[!which_mutual(netzwerk)]
+ 59/145 edges from 9d1e004 (vertex names):
 [1] A->D A->L B->F B->O B->Q C->A C->M C->N D->C D->E D->H D->K D->L D->M D->O
[16] D->Q E->B E->N E->O F->E F->M F->Q G->C G->D G->I G->L G->O H->A H->B H->K
[31] H->M H->N J->C J->F J->M J->Q K->A K->I K->M N->G N->L N->M P->E P->F P->L
[46] P->O P->Q Q->C R->C R->I R->L S->B S->D S->E S->F S->K S->L S->M S->Q

In der Liste sind nun alle einseitigen (unerwiderten) Nominierungen ersichtlich. Hier können wir auch für Schüler:in M ablesen, welche Mitschüler:innen soziale Impulse aussenden, die aber seitens von Schüler:in M unbeantwortet bleiben (C→M, D→M, F→M, H→M, J→M, K→M, N→M, S→M).

Literatur-Tipp 📗

Die konkrete Anwendung von Netzwerkparametern wird in einer Studie thematisiert. Hier wurde untersucht, inwiefern sich spezifische Netzwerkparameter (z.B. wechselseitige Nominierungen) im Rahmen eine Förderung (kooperatives Lernen) verändern.

Hank, C., Weber, S., & Huber, C. (2023). The role of cooperative learning in promoting social integration: an intervention-study. Unterrichtswissenschaft. https://doi.org/10.1007/s42010-023-00174-1

9 Netzwerkvisualisierung

In den Vorausgegangenen Übungen haben wir bereits erfolgreich Netzwerke visualisiert. Abschließend werden jedoch noch ein paar Visualisierungsoptionen vorgestellt. Für die Visualisierung muss das Netzwerkobjekt lediglich an den Befehl plot() übergeben werden. Mit unterschiedlichen Argumenten können wir die optische Erscheinung des Netzwerks steuern. Diese Optionen ermöglichen es, die visuelle Darstellung von Knoten und Kanten im Netzwerk anzupassen, indem Größe, Farbe, Rahmen, Beschriftung und Pfeilattribute festgelegt werden.

par(mar = c(0, 0, 0, 0)) # Ränder (margins) der Grafik auf null setzten
plot(netzwerk,
     vertex.size = 15,
     vertex.color = "#A9CCE3",
     vertex.frame.color = "#5499C7",
     vertex.label.color = "#154360",
     vertex.frame.width = 2,
     edge.color = "#5499C7",
     edge.arrow.size = 0.5,
     edge.arrow.width = 4,
     edge.width = 2)

  • vertex.size: Legt die Größe der Knoten fest (Kreissymbol).
  • vertex.color: Bestimmt die Füllfarbe der Knoten.
  • vertex.frame.color: Legt die Farbe des Rahmen um die Knoten fest.
  • vertex.label.color: Bestimmt die Farbe der Knotenbeschriftungen (Personen).
  • vertex.frame.width: Legt die Breite des Rahmens um die Knoten fest.
  • edge.color: Bestimmt die Farbe der Kanten (Pfeile).
  • edge.arrow.size: Legt die Größe des Pfeilkopfs für gerichtete Kanten fest.
  • edge.arrow.width: Bestimmt die Breite des Pfeilkopfs für gerichtete Kanten.
  • edge.width: Legt die Breite der Kanten fest.
HEX: Hexadezimale Farbdefinition 🎨

Die Farben können als Hexadezimalzahlen angegeben werden. Eine HEX-Farbe besteht aus einem Hashtag (#) gefolgt von sechs Zeichen, die die RGB-Werte der Farbe repräsentieren (#RRGGBB). Die RGB-Werte stehen für Rot, Grün und Blau. Ein bestimmter Farbton kann beispielsweise mit einem Online-Color-Picker erstellt werden (siehe auch Abbildung): https://g.co/kgs/LgPA8j

Die Vielzahl der gerichteten Pfeile kann eine Netzwerkvisualisierung durchaus unübersichtlich machen. Die Komplexität des Netzwerkes kann etwas reduziert werden, indem lediglich die wechselseitigen Nominierungen dargestellt werden. Hierfür muss das Netzwerk-Objekt mit dem Befehl as.undirected() umgewandelt werden, wobei lediglich die wechselseitigen Nominierungen beibehalten werden (dies wird definiert durch mode = "mutual"). Die Befehlskette zur Umwandlung netzwerk |> as.undirected(mode = "mutual") kann direkt innerhalb des Visualisierungsbefehls plot() genutzt werden.

par(mar = c(0, 0, 0, 0)) # Ränder (margins) der Grafik auf null setzten
plot(netzwerk |> as.undirected(mode = "mutual"),
     vertex.size = 15,
     vertex.color = "#A9CCE3",
     vertex.frame.color = "#5499C7",
     vertex.label.color = "#154360",
     vertex.frame.width = 2,
     edge.color = "#5499C7",
     edge.arrow.size = 0.5,
     edge.arrow.width = 4,
     edge.width = 2)

In der obigen Abbildung erfolgt lediglich die Visualisierung der wechselseitigen Nominierungen. Auf die Darstellung der Pfeilspitzen wird zwecks Übersichtlichkeit verzichtet.

9.1 Netzwerkdekoration

Netzwerkdekoration bezieht sich auf den Prozess des Hinzufügens von zusätzlichen Informationen zu den Knoten oder Kanten eines Netzwerks. Diese Zusatzinformationen können helfen, bestimmte Merkmale oder Eigenschaften des Netzwerks besser zu verstehen und zu analysieren. Dabei werden z.B. den einzelnen Knoten (Personen) im Netzwerk zusätzliche Informationen zugeordnet. Dies kann beispielsweise das Alter, das Geschlecht oder eine Charaktereigenschaft sein (z.B. introvertiert vs. extrovertiert). Die Eigenschaften der Personen werden im Rahmen der Netzwerkvisualisierung anschließend sichtbar gemacht, z.B. durch farbliche Hervorhebungen oder spezifische Formen.

Der Prozess der Netzwerkdekoration wird nun anhand des Fallbeispiels erläutert (siehe Übung A). Dieses Netzwerk besteht aus 7 Kindern.

V(netzwerk)
+ 7/7 vertices, named, from 9d7fba5:
[1] Susi Max  Ali  Til  Eda  Lena Ella

Da es sich um eine jahrgangsübergreifende Klasse handelt (jahrgangsübergreifendes Lernen), liegen uns Informationen über die Klassenstufe vor:

Klassenstufe
Kind Stufe
Susi 2
Max 2
Ali 2
Til 1
Eda 1
Lena 1
Ella 1

Die Informationen über die Klassenstufe werden als Objekt STUFE gespeichert. Die Speicherung der Informationen muss in der selben Reihenfolge erfolgen wie auch die Reihenfolge der Kinder im Netzwerk ist (Susi, Max, Ali, usw.). Anschließend wird auf Kind-Ebene dem Netzwerk-Attribut shape (Form der Knoten) eine geometrische Form zugeordnet. In diesem Fall wird Kindern, die den Wert 1 in STUFE haben, ein Quadrat ("square") und Kindern mit dem Wert 2 ein Kreis ("circle") zugeordnet.

STUFE <- c(2, 2, 2, 1, 1, 1, 1)

V(netzwerk)[STUFE == 1]$shape <- "square"
V(netzwerk)[STUFE == 2]$shape <- "circle" 

Für jedes Kind ist nun innerhalb des Netzwerk-Objekts gespeichert, welche geometrische Form bei der Visualisierung angezeigt werden soll:

  • Kinder der Klassenstufe 1 als Quadrate.
    • V(netzwerk)[SFB == 1]$shape <- "square"
  • Kinder der Klassenstufe 2 als Kreise.
    • V(netzwerk)[SFB == 0]$shape <- "circle"

Mit dem Befehl vertex_attr() können wir uns anzeigen lassen, welche Informationen (Attribute) nun im Netzwerk-Objekt abgespeichert sind.

vertex_attr(netzwerk)
$name
[1] "Susi" "Max"  "Ali"  "Til"  "Eda"  "Lena" "Ella"

$shape
[1] "circle" "circle" "circle" "square" "square" "square" "square"

Schließlich wird der Befehl plot() wie gewohnt verwendet, um das dekorierte Netzwerk zu visualisieren. Diese Art der Netzwerkdekoration ermöglicht es, bestimmte Merkmale oder Eigenschaften der Knoten im Netzwerk visuell hervorzuheben und somit Informationen über das Netzwerk effektiv zu präsentieren.

par(mar = c(0, 0, 0, 0)) # Ränder (margins) der Grafik auf null setzten
plot(netzwerk,
     arrow.size = 0.1,
     vertex.size = 20)

Wir sehen, dass die Kinder der Jahrgangsstufe 2 eine Dreier-Clique bilden. Jahrgangsübergreifende Sozialkontakte finden nur zwischen Susi (Klassenstufe 2) und Til (Klassenstufe 2) statt.

9.2 Übung D

Übung D 👩‍🔧
  • Dekorieren und visualisieren Sie das Netzwerk der Beispielklasse A (siehe Übung B).

  • Für die Schüler:innen liegen folgende Informationen über das Geschlecht vor (1 = männlich; 0 = weiblich):

    1 1 1 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1

  • In der Visualisierung sollen nur die wechselseitigen Nominierungen sichtbar sein.

SEX <- c(1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1)

V(netzwerk)[SEX == 0]$shape <- "square"
V(netzwerk)[SEX == 1]$shape <- "circle" 

par(mar = c(0, 0, 0, 0)) # Ränder (margins) der Grafik auf null setzten
plot(netzwerk |> as.undirected(mode = "mutual"),
     vertex.size = 15,
     vertex.color = "#A9CCE3",
     vertex.frame.color = "#5499C7",
     vertex.label.color = "#154360",
     vertex.frame.width = 2,
     edge.color = "#5499C7",
     edge.arrow.size = 0.5,
     edge.arrow.width = 4,
     edge.width = 2)

Es ist ersichtlich, dass die allermeisten wechselseitigen Nominierungen innerhalb fast geschlossener Mädchen-Cliquen und Jungen-Cliquen stattfinden (Kumulierung der Kreise und Quadrate). Lediglich 3 männliche Schüler (E, K und Q) und drei weibliche Schülerinnen (C,L,O) verfügen über wechselseitige Nominierungen zu Kindern des jeweils anderen Geschlechts. Sollte dieser Sachverhalt nicht eindeutig ersichtlich sein, so lohnt sich eine mehrfache Visualisierung des Netzwerkes (einzelne Visualisierungen können aufgrund von Pfeil- und Symbolüberschneidungen unübersichtlich erscheinen).

Hinweis

Dieses Übungsmaterial basiert auf einem Lehrbuch, welches gegenwärtig in Vorbereitung ist:

Soziometrie und soziale Netzwerkanalyse für Lehrkräfte und pädagogische Fachkräfte

https://pawelkulawiak.github.io/SozNetBuchR/

Letzte Bearbeitung am 11. Septeber 2023 von Susanne Schorer für participate@UOL