Programmier-Tutorial - Seite 18

 

Chi-Quadrat-Anpassungstest in R


Chi-Quadrat-Anpassungstest in R

Hallo zusammen, in der heutigen Sitzung werden wir uns mit dem Testen der Anpassungsgüte mit R befassen. Wir werden ein paar Probleme durcharbeiten, um das Konzept besser zu verstehen. Wenn Sie mit Anpassungstests nicht vertraut sind, empfehle ich Ihnen, sich zuerst mein Einführungsvideo zu diesem Thema anzusehen (Link oben).

Beginnen wir mit dem ersten Problem. Eine Hochschule gibt an, dass 50 % der Studenten in ihren Statistikkursen Erstsemester sind, 30 % sind Studenten im zweiten Jahr, 10 % sind Junioren und 10 % sind Senioren. Wir haben eine einfache Zufallsstichprobe von 65 Studierenden erhalten und die Verteilung in unserer Stichprobe weicht geringfügig von den angegebenen Anteilen ab. Wir möchten feststellen, ob diese Unterschiede einen starken Beweis gegen die Behauptung der Hochschule liefern oder ob sie auf zufällige Variabilität zurückzuführen sein könnten.

Um den Anpassungstest in R durchzuführen, verwenden wir den Chi-Quadrat-Test. Ich habe die Hilfedatei für die Funktion „chi-square.test“ aufgerufen, aber wir konzentrieren uns vorerst ausschließlich auf das Testen der Anpassungsgüte.

Geben wir zunächst unsere Daten ein. Wir erstellen einen Vektor namens „Jahre“, um die beobachteten Zahlen zu speichern: 28 Erstsemester, 24 Zweitsemester, 9 Junioren und 4 Senioren.

years <- c ( 28 , 24 , 9 , 4 )

Als nächstes müssen wir einen Vektor mit erwarteten Proportionen unter der Nullhypothese erstellen. In diesem Fall geht die Nullhypothese davon aus, dass die behaupteten Proportionen wahr sind. Nennen wir diesen Vektor „Requisiten“ und weisen die Proportionen zu: 0,5 für Erstsemester, 0,3 für Zweitsemester, 0,1 für Junioren und 0,1 für Senioren.

props <- c ( 0.5 , 0.3 , 0.1 , 0.1 )

Jetzt können wir den Chi-Quadrat-Test mit der Funktion chi-square.test durchführen. Die grundlegende Syntax ist einfach: chi.square.test(data, p = erwartete_Proportionen). Denken Sie daran, p = props einzuschließen, um die erwarteten Proportionen anzugeben.

result <- chi.square.test ( years , p = props )

Der Test gibt die Freiheitsgrade, die Chi-Quadrat-Teststatistik und den p-Wert aus. Für dieses Problem haben wir drei Freiheitsgrade, eine Chi-Quadrat-Teststatistik von 3,58 und einen p-Wert von 0,31. Diese Ergebnisse stimmen mit denen überein, die wir im Einführungsvideo erhalten haben.

Mit einem p-Wert von 0,31 haben wir nicht genügend Beweise, um die Nullhypothese abzulehnen. Daher können wir nicht den Schluss ziehen, dass die Unterschiede zwischen unserer Stichprobenverteilung und den angegebenen Anteilen statistisch signifikant sind. Die Daten sind mit der Behauptung der Hochschule vereinbar.

Kommen wir nun zum zweiten Problem. Wir haben 200 Würfelwürfe durchgeführt und die resultierende Verteilung ist wie folgt: 28 Einsen, 32 Zweien und so weiter. Wir möchten feststellen, ob diese Verteilung einen Beweis dafür liefert, dass der Würfel unfair ist.

Wir werden den gleichen Prozess wie zuvor durchführen. Erstellen wir einen Vektor namens counts, um die beobachteten Zählungen zu speichern: 28 Einsen, 30 Zweier, 22 Dreier, 31 Vierer, 38 Fünfer und 51 Sechser.

counts <- c ( 28 , 30 , 22 , 31 , 38 , 51 )

Jetzt können wir den Chi-Quadrat-Test direkt auf diese Zählungen anwenden.

result <- chi.square.test ( counts )

Der Test gibt die Freiheitsgrade, die Chi-Quadrat-Teststatistik und den p-Wert aus. In diesem Fall haben wir fünf Freiheitsgrade, eine Chi-Quadrat-Teststatistik von 15,22 und einen p-Wert von 0,009463.

Mit einem sehr kleinen p-Wert von 0,009463 haben wir genügend Beweise, um die Nullhypothese abzulehnen. Daraus können wir schließen, dass der Würfel aufgrund der beobachteten Verteilung gewichtet und nicht fair zu sein scheint.

Damit ist unsere Diskussion und Anwendung des Chi-Quadrat-Anpassungstests mit R abgeschlossen. Denken Sie daran, dass dieser Test es uns ermöglicht, die Kompatibilität beobachteter Daten mit einer erwarteten Verteilung zu bewerten und statistische Schlussfolgerungen auf der Grundlage des p-Werts zu ziehen.

 

Chi-Quadrat-Test auf Unabhängigkeit in R


Chi-Quadrat-Test auf Unabhängigkeit in R

Hallo zusammen, im heutigen Video werden wir R verwenden, um Chi-Quadrat-Tests für die Unabhängigkeit kategorialer Variablen durchzuführen. Zu diesem Zweck verwenden wir die Funktion chi-squared.test. Bitte beachten Sie, dass wir in diesem Video nicht auf Anpassungstests eingehen, die auch die gleiche zugrunde liegende Funktion in R verwenden. Wenn Sie mehr über Anpassungstests erfahren möchten, habe ich ein separates Video zu diesem Thema (Link oben angegeben).

Lassen Sie uns ein Problem aus dem OpenStax-Lehrbuch zur Einführungsstatistik durcharbeiten. Bei dem Problem handelt es sich um eine Freiwilligengruppe, in der Erwachsene ab 21 Jahren ein bis neun Stunden pro Woche ehrenamtlich Zeit mit einem behinderten Senioren verbringen. Das Programm rekrutiert Freiwillige aus drei Kategorien: Community-College-Studenten, vierjährige College-Studenten und Nicht-Studenten. Wir haben eine Kontingenztabelle oder eine Zwei-Wege-Tabelle, die die Verteilung der Freiwilligen auf der Grundlage von zwei kategorialen Variablen anzeigt: der Art des Freiwilligen und der Anzahl der freiwillig geleisteten Stunden, kategorisiert in ein bis drei Stunden, vier bis sechs Stunden und sieben bis neun Stunden.

Wechseln wir nun zu R, geben die Daten ein und führen einen Chi-Quadrat-Test durch, um festzustellen, ob diese kategorialen Variablen miteinander verknüpft sind oder nicht.

Um die Daten einzugeben, erstellen wir mithilfe der Matrixfunktion eine Matrix namens „Freiwillige“. Wir geben die Daten zeilenweise ein, von links nach rechts, von oben nach unten.

volunteers <- matrix ( c ( 111 , 96 , 48 , 96 , 133 , 61 , 91 , 150 , 53 ) , nrow = 3 , byrow = TRUE )

Als nächstes fügen wir Zeilennamen und Spaltennamen hinzu, um die Matrix besser interpretierbar zu machen.

row.names ( volunteers ) <- c ( "Community College Students" , "Four-Year College Students" , "Non-Students" ) colnames ( volunteers ) <- c ( "1-3 hours" , "4-6 hours" , "7-9 hours" )

Jetzt haben wir eine optisch ansprechende Tabelle, die die Verteilung der Freiwilligen auf die verschiedenen Kategorien zeigt.

Um den Chi-Quadrat-Test durchzuführen, verwenden wir die Funktion chi.square.test. Durch die Zuweisung des Ergebnisses zu einer Variablen, beispielsweise einem Modell, können wir bei Bedarf auf zusätzliche Informationen zugreifen.

model <- chi.square.test ( volunteers )

Um die Testergebnisse anzuzeigen, geben Sie einfach den Namen der Variablen „Modell“ ein.

model

Die Testausgabe umfasst die Chi-Quadrat-Teststatistik, die Freiheitsgrade und den p-Wert. Für dieses Beispiel erhalten wir eine Chi-Quadrat-Teststatistik von 12,991, 2 Freiheitsgrade und einen typischerweise sehr kleinen p-Wert.

Es ist wichtig zu beachten, dass das Modellobjekt zusätzliche Informationen enthält, beispielsweise die erwarteten Zellzahlen und Residuen. Diese können bei Bedarf zur weiteren Analyse abgerufen werden.

Eine andere Möglichkeit, den Chi-Quadrat-Test durchzuführen, besteht darin, die Matrix in eine Tabelle umzuwandeln und die Zusammenfassungsfunktion zu verwenden.

vol_table <- as.table ( volunteers )
summary ( vol_table )

Dieser Ansatz liefert auch die Chi-Quadrat-Teststatistik, Freiheitsgrade und den p-Wert.

Dies deckt den Prozess der Durchführung von Chi-Quadrat-Tests für die Unabhängigkeit kategorialer Variablen unter Verwendung von R ab. Denken Sie daran, dass der Chi-Quadrat-Test uns dabei hilft, basierend auf beobachteten und erwarteten Häufigkeiten festzustellen, ob ein signifikanter Zusammenhang zwischen zwei kategorialen Variablen besteht.

 

Test der Anpassungsgüte mit R: Beispiel


Test der Anpassungsgüte mit R: Beispiel

Heute werden wir R verwenden, um ein typisches Problem von Anpassungstests anzugehen. Hier ist es:

In einer Zufallsstichprobe von 10 Familien mit drei Kindern war die Verteilung der Mädchen wie folgt:

  • 12 Familien hatten keine Mädchen
  • 31 Familien hatten ein Mädchen
  • 42 Familien hatten zwei Mädchen
  • 15 Familien hatten drei Mädchen

Die Frage ist: Ist es plausibel, dass die Anzahl der Mädchen in solchen Familien einer Binomialverteilung mit den Parametern n=3 und p=0,5 folgt?

Wechseln wir zu R, wo ich die beobachteten Werte bereits eingegeben habe. Um fortzufahren, müssen wir die erwarteten Werte berechnen und sie mit den beobachteten Zählungen vergleichen. Wir beginnen mit den erwarteten Proportionen, die mit der dbinom-Funktion in R ermittelt werden können.

Hier sind die erwarteten Anteile für 0, 1, 2 oder 3 Mädchen in einer Familie:

  • 12,5 % für 0 Mädchen
  • 37,5 % für 1 Mädchen
  • 37,5 % für 2 Mädchen
  • 12,5 % für 3 Mädchen

Als Nächstes berechnen wir die erwartete Anzahl, indem wir die erwarteten Anteile mit 100 multiplizieren (da wir insgesamt 100 Familien haben).

Lassen Sie uns nun mit zwei verschiedenen Ansätzen zur Lösung dieses Problems fortfahren. Zuerst verwenden wir die Funktion chisq.test in R, die eine direkte Antwort liefert, indem sie die Teststatistik und den p-Wert berechnet. Anschließend gehen wir die Berechnungen Schritt für Schritt durch, um ein tieferes Verständnis des Prozesses zu erlangen.

Verwendung von chisq.test:

observed_counts <- c ( 12 , 31 , 42 , 15 )
expected_proportions <- dbinom ( 0 : 3 , size = 3 , prob = 0.5 )
expected_counts <- expected_proportions * 100
result <- chisq.test ( observed_counts , p = expected_proportions )
p_value <- result $ p.value print ( p_value )

Der erhaltene p-Wert gibt die Wahrscheinlichkeit an, Daten zu erhalten, die so extrem sind wie die von uns beobachteten, vorausgesetzt, die Nullhypothese ist wahr. In diesem Fall beträgt der p-Wert etwa 0,07232.

Da unser Signifikanzniveau auf 0,05 festgelegt wurde und der p-Wert darüber liegt, verfügen wir nicht über ausreichende Beweise, um die Nullhypothese abzulehnen. Wir können daraus schließen, dass die Daten mit der Hypothese übereinstimmen, dass die Anzahl der Mädchen in diesen Familien einer Binomialverteilung mit den Parametern n=3 und p=0,5 folgt.

Lassen Sie uns nun die Chi-Quadrat-Teststatistik manuell berechnen, um den Prozess besser zu verstehen:

chi_stat <- sum ( ( observed_counts - expected_counts ) ^ 2 / expected_counts )
degrees_of_freedom <- length ( observed_counts ) - 1
p_value_manual <- 1 - pchisq ( chi_stat , df = degrees_of_freedom )
print ( p_value_manual )

Der manuell berechnete p-Wert stimmt mit dem mit chisq.test erhaltenen Ergebnis überein und bestätigt unseren früheren Befund von etwa 0,07232.

Zusammenfassend führen beide Ansätze zu derselben Schlussfolgerung: Die Daten stimmen mit der Nullhypothese überein, dass die Anzahl der Mädchen in diesen Familien einer Binomialverteilung mit den Parametern n=3 und p=0,5 folgt.

 

Korrelationstests in R


Korrelationstests in R

Hallo an alle! Heute werden wir Korrelationstests besprechen. Ich werde für diese Demonstration R verwenden, aber die Konzepte, die wir behandeln, sind universell anwendbar, unabhängig von Ihrer Arbeitsumgebung. Bleiben Sie also dran, auch wenn Sie eine andere Software verwenden.

Für dieses Beispiel verwende ich den Hochschuldatensatz aus dem islr2-Paket. Ich habe den Datensatz bereits geladen und mein Theme mithilfe des Titiverse-Pakets auf „Minimal“ gesetzt. Wenn Sie an einer detaillierten Analyse des Hochschuldatensatzes interessiert sind, habe ich in der Beschreibung einen Videolink.

Der Hochschuldatensatz besteht aus 777 Beobachtungen, die jeweils eine Hochschule aus dem Jahr 1995 repräsentieren. Er enthält verschiedene Variablen wie öffentliche oder private Bezeichnung, Vollzeiteinschreibung und Abschlussquote.

Unser Schwerpunkt liegt auf der Feststellung, ob ein statistisch signifikanter Zusammenhang zwischen dem Logarithmus der Vollzeiteinschreibungen im Grundstudium und der Abschlussquote an öffentlichen Universitäten besteht. Wir möchten wissen, ob dieser scheinbare Zusammenhang wahrscheinlich auf einen Zufall zurückzuführen ist oder ob es sich um einen bedeutsamen Trend handelt, auf den wir achten sollten.

Zunächst habe ich mit ggplot ein Streudiagramm erstellt, mit der Abschlussquote auf der y-Achse und dem Logarithmus der Vollzeiteinschreibungen auf der x-Achse. Da ich auch die Privatschulen herausgefiltert habe, analysieren wir nur die öffentlichen Hochschulen.

Kommen wir nun zum Logarithmus. Lassen Sie sich davon nicht einschüchtern; Es hilft uns lediglich, den Umfang der Daten zu interpretieren. In diesem Fall verwenden wir einen Logarithmus zur Basis 10, der uns die Anzahl der Nullen am Ende eines Werts angibt. Beispielsweise ist 3,0 auf einer logarithmischen Skala 10^3, also 1.000. Durch die Logarithmierung erreichen wir eine gleichmäßigere Streuung und einen annähernd linearen Zusammenhang zwischen den Variablen.

Die Korrelation misst die Stärke einer im Allgemeinen linearen Beziehung zwischen zwei quantitativen Variablen. In diesem Fall haben wir eine positive Korrelation von etwa 0,22, was darauf hindeutet, dass mit zunehmender Zahl der Vollzeit-Studenten die Abschlussquote tendenziell ebenfalls steigt. Dieser positive Zusammenhang zwischen Hochschulgröße und Abschlussquote mag überraschend erscheinen, es lohnt sich jedoch, näher darauf einzugehen.

Die Korrelation ist relativ schwach, da die Korrelationen zwischen -1 und 1 liegen. Eine Korrelation von -1 stellt eine perfekte negative Beziehung dar, während eine Korrelation von 1 eine perfekte positive Beziehung darstellt.

Führen wir nun einen Korrelationstest in R durch, um festzustellen, ob diese Korrelation statistisch signifikant ist. Die Syntax zum Ausführen eines Korrelationstests ähnelt der Syntax zur Berechnung der Korrelation. Durch die Verwendung der Funktion cor.test mit den beiden interessierenden Variablen erhalten wir die Korrelation und zusätzliche Informationen.

In diesem Fall liefern die Testergebnisse einen p-Wert von 0,001, was darauf hindeutet, dass, wenn zwischen diesen Variablen in der Population keine Korrelation bestünde, die beobachtete Korrelation nur in etwa 0,1 % der Fälle zufällig auftreten würde. Eine derart niedrige Wahrscheinlichkeit weist darauf hin, dass die von uns beobachtete Korrelation statistisch signifikant ist, und wir können daraus schließen, dass ein Zusammenhang zwischen dem Logarithmus der Vollzeiteinschreibungen im Grundstudium und der Abschlussquote an öffentlichen Universitäten besteht.

Lassen Sie uns nun etwas tiefer in den Test selbst eintauchen. Es wird untersucht, ob die beobachtete Korrelation in den Stichprobendaten vernünftigerweise auf einen Zufall zurückzuführen ist. Der Test geht von einer linearen Beziehung zwischen den Variablen und der Unabhängigkeit der Beobachtungen aus und ist daher für Zeitreihendaten ungeeignet. Darüber hinaus wird davon ausgegangen, dass die Daten einer bivariaten Normalverteilung folgen, Abweichungen von der perfekten Normalität sind jedoch im Allgemeinen akzeptabel.

Es ist wichtig zu beachten, dass dieser Korrelationstest speziell die Nullhypothese testet, dass die Populationskorrelation Null ist. Es kann nicht zum Testen anderer Korrelationen als Null verwendet werden.

Unter der Haube verwendet der Test eine Teststatistik namens R, die als beobachtete Stichprobenkorrelation berechnet wird. Diese Statistik folgt einer Student-t-Verteilung mit n-2 Freiheitsgraden, vorausgesetzt, dass die Nullhypothese einer Nullkorrelation angenommen wird. Die mit n-2 bezeichneten Freiheitsgrade hängen von der Stichprobengröße (n) ab und werden durch die Anzahl der für die Schätzung verfügbaren unabhängigen Beobachtungen bestimmt.

Der Test liefert auch ein Konfidenzintervall für die Bevölkerungskorrelation. In diesem Fall liegt das 95 %-Konfidenzintervall zwischen 0,087 und 0,354. Dieses Intervall liefert uns eine Reihe plausibler Werte für die Populationskorrelation basierend auf unseren Stichprobendaten. Da das Intervall nicht Null enthält, können wir daraus schließen, dass die Populationskorrelation wahrscheinlich positiv ist.

Es ist erwähnenswert, dass Korrelation keine Kausalität bedeutet. Nur weil wir eine Korrelation zwischen zwei Variablen beobachten, heißt das nicht, dass eine Variable die andere verändert. Korrelation weist lediglich auf eine Beziehung zwischen den Variablen hin, es sind jedoch zusätzliche Untersuchungen und Analysen erforderlich, um die Kausalität festzustellen.

Um die Korrelation zu visualisieren, können wir unserem Streudiagramm eine Regressionslinie hinzufügen. Die Regressionslinie stellt die am besten geeignete Linie durch die Datenpunkte dar und gibt den allgemeinen Trend der Beziehung an. Durch die Verwendung der Funktion geom_smooth in ggplot mit dem Argument method = „lm“ können wir unserem Diagramm eine Regressionslinie hinzufügen.

Jetzt können wir die an die Datenpunkte angepasste Regressionslinie sehen. Es bietet eine visuelle Darstellung des positiven Zusammenhangs zwischen dem Logarithmus der Vollzeiteinschreibungen im Grundstudium und der Abschlussquote an öffentlichen Universitäten.

Zusammenfassend haben wir einen Korrelationstest durchgeführt, um festzustellen, ob ein statistisch signifikanter Zusammenhang zwischen dem Logarithmus der Vollzeiteinschreibungen für Studierende und der Abschlussquote an öffentlichen Universitäten besteht. Die Testergebnisse zeigten eine positive Korrelation mit einem p-Wert von 0,001, was auf einen signifikanten Zusammenhang schließen lässt. Bedenken Sie jedoch, dass Korrelation keine Kausalität bedeutet und eine weitere Analyse erforderlich ist, um kausale Zusammenhänge festzustellen.

Korrelationstests sind ein wertvolles Werkzeug in der statistischen Analyse, mit dem wir Beziehungen zwischen Variablen untersuchen und potenzielle Trends oder Zusammenhänge identifizieren können. Es hilft uns, fundierte Entscheidungen zu treffen und auf der Grundlage von Daten aussagekräftige Schlussfolgerungen zu ziehen.

Grund der Beschwerde: