Wie erhält man eine Korrelation zwischen zwei kategorialen Variablen und einer kategorialen Variablen und einer stetigen Variablen?

63

Ich erstelle ein Regressionsmodell und muss das Folgende berechnen, um auf Korrelationen zu prüfen

  1. Korrelation zwischen 2 mehrstufigen kategorialen Variablen
  2. Korrelation zwischen einer mehrstufigen kategorialen Variablen und einer stetigen Variablen
  3. VIF (Varianzinflationsfaktor) für mehrstufige kategoriale Variablen

Ich glaube, es ist falsch, den Pearson-Korrelationskoeffizienten für die obigen Szenarien zu verwenden, da Pearson nur für 2 kontinuierliche Variablen funktioniert.

Bitte beantworten Sie die folgenden Fragen

  1. Welcher Korrelationskoeffizient eignet sich am besten für die oben genannten Fälle?
  2. Die VIF-Berechnung funktioniert nur für kontinuierliche Daten. Was ist die Alternative?
  3. Welche Annahmen muss ich überprüfen, bevor ich den von Ihnen vorgeschlagenen Korrelationskoeffizienten verwende?
  4. Wie implementiere ich sie in SAS & R?
GeorgeOfTheRF
quelle
4
Ich würde sagen, CV.SE ist ein besserer Ort für Fragen zu solchen theoretischeren Statistiken. Wenn nicht, würde ich sagen, dass die Antwort auf Ihre Fragen vom Kontext abhängt. Manchmal ist es sinnvoll ist , mehrere Ebenen in Dummy - Variablen zu glätten, ein anderes Mal ist es wert Ihre Daten nach Multinomialverteilung zu modellieren, usw.
ffriend
Sind Ihre kategorialen Variablen sortiert? Wenn ja, kann dies die Art der Korrelation beeinflussen, nach der Sie suchen möchten.
Nassimhddd
Ich habe das gleiche Problem in meiner Forschung. Aber ich konnte nicht die richtige Methode finden, um dieses Problem zu lösen. Wenn Sie also bitte so freundlich sein können, mir die Referenzen zu geben, die Sie gefunden haben.
User89797
meinst du, der p-Wert ist der gleiche wie der Korrelationskoeffizient r?
Ayo Emma
Die obige Lösung mit ANOVA für kategoriale vs. kontinuierliche ist gut. Kleiner Schluckauf. Je kleiner der p-Wert ist, desto besser ist die "Übereinstimmung" zwischen den beiden Variablen. Nicht umgekehrt.
Myudelson

Antworten:

73

Zwei kategoriale Variablen

Mit dem Chi-Squared-Unabhängigkeitstest kann überprüft werden, ob zwei kategoriale Variablen unabhängig sind.

Dies ist ein typischer Chi-Quadrat-Test : Wenn wir annehmen, dass zwei Variablen unabhängig sind, sollten die Werte der Kontingenztabelle für diese Variablen gleichmäßig verteilt werden. Und dann prüfen wir, wie weit die tatsächlichen Werte von der Uniform entfernt sind.

Es gibt auch ein Crammer-V , das ein Maß für die Korrelation ist, die sich aus diesem Test ergibt

Beispiel

Angenommen, wir haben zwei Variablen

  • Geschlecht: männlich und weiblich
  • Stadt: Blois und Tours

Wir haben folgende Daten beobachtet:

beobachtete Werte

Sind Geschlecht und Stadt unabhängig? Lassen Sie uns einen Chi-Squred-Test durchführen. Nullhypothese: Sie sind unabhängig. Alternative Hypothese ist, dass sie in irgendeiner Weise korreliert sind.

Unter der Nullhypothese nehmen wir eine gleichmäßige Verteilung an. Unsere erwarteten Werte sind also die folgenden

erwarteter Wert

Wir führen also den Chi-Quadrat-Test durch und der resultierende p-Wert kann hier als Maß für die Korrelation zwischen diesen beiden Variablen angesehen werden.

Um Crammers V zu berechnen, ermitteln wir zunächst den Normalisierungsfaktor Chi-Quadrat-Max, der in der Regel der Größe der Stichprobe entspricht. Teilen Sie das Chi-Quadrat durch diesen Faktor und ziehen Sie eine Quadratwurzel

Crammer v

R

tbl = matrix(data=c(55, 45, 20, 30), nrow=2, ncol=2, byrow=T)
dimnames(tbl) = list(City=c('B', 'T'), Gender=c('M', 'F'))

chi2 = chisq.test(tbl, correct=F)
c(chi2$statistic, chi2$p.value)

Hier ist der p-Wert 0,08 - ziemlich klein, aber immer noch nicht genug, um die Hypothese der Unabhängigkeit zu verwerfen. Wir können also sagen, dass die "Korrelation" hier 0,08 ist

Wir berechnen auch V:

sqrt(chi2$statistic / sum(tbl))

Und erhalte 0,14 (je kleiner v, desto geringer die Korrelation)

Betrachten Sie einen anderen Datensatz

    Gender
City  M  F
   B 51 49
   T 24 26

Dafür gäbe es folgendes

tbl = matrix(data=c(51, 49, 24, 26), nrow=2, ncol=2, byrow=T)
dimnames(tbl) = list(City=c('B', 'T'), Gender=c('M', 'F'))

chi2 = chisq.test(tbl, correct=F)
c(chi2$statistic, chi2$p.value)

sqrt(chi2$statistic / sum(tbl))

Der p-Wert ist 0,72, was weit näher bei 1 liegt, und v ist 0,03 - sehr nahe bei 0

Kategoriale vs numerische Variablen

Für diesen Typ führen wir normalerweise einen Einweg-ANOVA-Test durch : Wir berechnen die gruppeninterne Varianz und die gruppeninterne Varianz und vergleichen sie dann.

Beispiel

Wir wollen gegen die Art von Fett , das die Beziehung zwischen absorbierte Fett aus Donuts studieren verwendet Donuts zu erzeugen (zB aus genommen hier )

Donuts

Gibt es eine Abhängigkeit zwischen den Variablen? Dazu führen wir einen ANOVA-Test durch und stellen fest, dass der p-Wert nur 0,007 beträgt - zwischen diesen Variablen besteht keine Korrelation.

R

t1 = c(164, 172, 168, 177, 156, 195)
t2 = c(178, 191, 197, 182, 185, 177)
t3 = c(175, 193, 178, 171, 163, 176)
t4 = c(155, 166, 149, 164, 170, 168)

val = c(t1, t2, t3, t4)
fac = gl(n=4, k=6, labels=c('type1', 'type2', 'type3', 'type4'))

aov1 = aov(val ~ fac)
summary(aov1)

Ausgabe ist

            Df Sum Sq Mean Sq F value  Pr(>F)   
fac          3   1636   545.5   5.406 0.00688 **
Residuals   20   2018   100.9                   
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Wir können also auch hier den p-Wert als Maß für die Korrelation nehmen.

Verweise

Alexey Grigorev
quelle
1
Danke Alexey für die Details. Basierend auf mehr Forschung habe ich über polyserielle und polychlorische Korrelation gefunden. Wie ist Ihr Ansatz besser als diese? Bitte erklären Sie
GeorgeOfTheRF
1
Mir sind diese Dinge nicht bewusst, sorry.
Alexey Grigorev
Fasntastische Antwort von @Alexey. Nachdem ich Ihren Kommentar gelesen habe, habe ich die Korrelationen zwischen polychromen und polyserien online gelesen. Sie sind eine Technik zum Schätzen der Korrelation zwischen zwei latenten Variablen aus zwei beobachteten Variablen. Ich glaube nicht, dass Sie danach gefragt haben, und es ist nicht vergleichbar mit Alexeys Antwort.
KarthikS
1
Ihr erstes Beispiel handelt NICHT von kategorial gegen kategorial, sondern von kategorial gegen numerisch. Tatsächlich sehen Sie die Stadt gegen die Anzahl der Männer (bzw. Frauen), die numerisch ist. Kategorisch gegen kategorisch wäre zum Beispiel Stadt gegen Farbe der Augen oder Formen oder irgendetwas anderes, aber keineswegs wäre es die Anzahl der Repräsentanten des Geschlechts.
Gented
1
@AlexeyGrigorev Wenn unsere Daten nicht normal verteilt sind, sollte kruskal-wallicstatt one-way anova? Danke im Voraus.
Ebrahimi