Nominal bir değişkene (değişik konuşma konularına, konu 0 = 0 vb. Olarak kodlanmış) ve bir konuşmanın uzunluğu gibi bir dizi ölçek değişkenine (DV) sahibim.
Nominal ve ölçek değişkenler arasındaki korelasyonu nasıl türetebilirim?
Nominal bir değişkene (değişik konuşma konularına, konu 0 = 0 vb. Olarak kodlanmış) ve bir konuşmanın uzunluğu gibi bir dizi ölçek değişkenine (DV) sahibim.
Nominal ve ölçek değişkenler arasındaki korelasyonu nasıl türetebilirim?
Yanıtlar:
Bu sorunun başlığı temel bir yanlış anlaşılma olduğunu gösteriyor. En temel korelasyon fikri, "bir değişken arttıkça, diğer değişken artar (pozitif korelasyon), azalır (negatif korelasyon) veya aynı kalır (korelasyon olmaz)" dır. korelasyon 0, mükemmel negatif korelasyon -1'dir. "Mükemmel" in anlamı, hangi korelasyon ölçüsünün kullanıldığına bağlıdır: Pearson korelasyonu için, dağılım grafiği üzerindeki noktaların, Spearman korelasyonu için, düz bir çizgide (+1 için yukarı ve aşağı doğru eğimli) uzanması anlamına gelir . tam olarak katılıyorum (ya da kesinlikle katılmıyorum, bu nedenle ilk önce -1 ile eşleştirildi) ve Kendall’ın tautüm gözlem çiftlerinin uyumlu rütbelere (veya -1 için uyumsuz) sahip olmaları. Bunun pratikte nasıl çalıştığına dair bir sezgi, aşağıdaki dağılım grafikleri ( resim kredisi ) için Pearson korelasyonlarından toplanabilir :
Daha fazla bilgi, dört veri setinin hepsinin Pearson korelasyonu +0.816 olduğu Anscombe'nin Quartet'in dikkate alınmasından gelir, " arttıkça, y artış" eğilimini çok farklı şekillerde izlemesine rağmen ( görüntü kredisi ):
data.df <- data.frame(
topic = c(rep(c("Gossip", "Sports", "Weather"), each = 4)),
duration = c(6:9, 2:5, 4:7)
)
print(data.df)
boxplot(duration ~ topic, data = data.df, ylab = "Duration of conversation")
Hangi verir:
> print(data.df)
topic duration
1 Gossip 6
2 Gossip 7
3 Gossip 8
4 Gossip 9
5 Sports 2
6 Sports 3
7 Sports 4
8 Sports 5
9 Weather 4
10 Weather 5
11 Weather 6
12 Weather 7
"Konu" için referans seviyesi olarak "Dedikodu" kullanarak ve "Spor" ve "Hava Durumu" için ikili kukla değişkenleri tanımlayarak çoklu regresyon yapabiliriz.
> model.lm <- lm(duration ~ topic, data = data.df)
> summary(model.lm)
Call:
lm(formula = duration ~ topic, data = data.df)
Residuals:
Min 1Q Median 3Q Max
-1.50 -0.75 0.00 0.75 1.50
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.5000 0.6455 11.619 1.01e-06 ***
topicSports -4.0000 0.9129 -4.382 0.00177 **
topicWeather -2.0000 0.9129 -2.191 0.05617 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.291 on 9 degrees of freedom
Multiple R-squared: 0.6809, Adjusted R-squared: 0.6099
F-statistic: 9.6 on 2 and 9 DF, p-value: 0.005861
> rsq <- summary(model.lm)$r.squared
> rsq
[1] 0.6808511
> sqrt(rsq)
[1] 0.825137
0.825'in Süre ve Konu arasındaki ilişki olmadığını unutmayın; bu iki değişkeni ilişkilendiremeyiz, çünkü Konu nominaldir. Aslında temsil ettiği şey, gözlemlenen sürelerle, modelimiz tarafından öngörülen (takılan) arasındaki korelasyondur . Bu değişkenlerin her ikisi de sayısaldır, bu yüzden onları ilişkilendirebiliriz. Aslında, takılan değerler her grup için sadece ortalama sürelerdir:
> print(model.lm$fitted)
1 2 3 4 5 6 7 8 9 10 11 12
7.5 7.5 7.5 7.5 3.5 3.5 3.5 3.5 5.5 5.5 5.5 5.5
Sadece kontrol etmek için gözlemlenen ve takılan değerler arasındaki Pearson korelasyonu:
> cor(data.df$duration, model.lm$fitted)
[1] 0.825137
Bunu bir dağılım grafiği üzerinde görselleştirebiliriz:
plot(x = model.lm$fitted, y = data.df$duration,
xlab = "Fitted duration", ylab = "Observed duration")
abline(lm(data.df$duration ~ model.lm$fitted), col="red")
Bu ilişkinin gücü görsel olarak Anscombe’nun Quartet parsellerine çok benziyor, ki bu da hepsinin 0.82 civarında Pearson korelasyonu olması şaşırtıcı değil.
Kategorik bağımsız bir değişkenle, tek yönlü bir ANOVA yerine (çoklu) bir regresyon yapmayı seçtiğimde şaşırabilirsiniz . Ancak bu aslında eşdeğer bir yaklaşım olarak ortaya çıkıyor.
library(heplots) # for eta
model.aov <- aov(duration ~ topic, data = data.df)
summary(model.aov)
Bu, aynı F istatistiği ve p değerinin bir özetini verir :
Df Sum Sq Mean Sq F value Pr(>F)
topic 2 32 16.000 9.6 0.00586 **
Residuals 9 15 1.667
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Yine ANOVA modeli, regresyonun yaptığı gibi grup araçlarına uyar:
> print(model.aov$fitted)
1 2 3 4 5 6 7 8 9 10 11 12
7.5 7.5 7.5 7.5 3.5 3.5 3.5 3.5 5.5 5.5 5.5 5.5
> etasq(model.aov, partial = FALSE)
eta^2
topic 0.6808511
Residuals NA
eta kare. Bu ANOVA tek yönlü olduğu için (yalnızca bir kategorik öngörücü vardı), kısmi eta karesi eta karesiyle aynıdır, ancak daha fazla yordayıcılı modellerde işler değişir.
> etasq(model.aov, partial = TRUE)
Partial eta^2
topic 0.6808511
Residuals NA
Bununla birlikte, ne “korelasyon” ne de “açıklanan varyans oranı” nın kullanmak istediğiniz etki büyüklüğünün ölçüsü olması oldukça olasıdır. Örneğin, odaklanmanız, araçların gruplar arasında nasıl farklılık gösterdiği konusunda daha fazla yalan söyleyebilir. Bu soru ve cevap , eta kare, kısmi eta kare ve çeşitli alternatifler hakkında daha fazla bilgi içerir.