Ho una variabile nominale (diversi argomenti di conversazione, codificata come topic0 = 0 ecc.) E un numero di variabili di scala (DV) come la durata di una conversazione.
Come posso derivare correlazioni tra le variabili nominali e di scala?
Ho una variabile nominale (diversi argomenti di conversazione, codificata come topic0 = 0 ecc.) E un numero di variabili di scala (DV) come la durata di una conversazione.
Come posso derivare correlazioni tra le variabili nominali e di scala?
Risposte:
Il titolo di questa domanda suggerisce un malinteso fondamentale. L'idea di base della correlazione è "quando una variabile aumenta, aumenta l'altra variabile (correlazione positiva), diminuisce (correlazione negativa) o rimane la stessa (nessuna correlazione)" con una scala tale che la correlazione positiva perfetta sia +1, nessuna correlazione è 0 e la perfetta correlazione negativa è -1. Il significato di "perfetto" dipende dalla misura della correlazione utilizzata: per la correlazione di Pearson significa che i punti su un diagramma a dispersione si trovano proprio su una linea retta (inclinata verso l'alto per +1 e verso il basso per -1), per la correlazione di Spearman che il i ranghi sono esattamente d'accordo (o esattamente in disaccordo, quindi il primo è accoppiato con l'ultimo, per -1), e per la tau di Kendallche tutte le coppie di osservazioni hanno ranghi concordanti (o discordanti per -1). Un'intuizione su come funziona in pratica può essere ricavata dalle correlazioni di Pearson per i seguenti grafici a dispersione ( credito di immagine ):
Ulteriori intuizioni vengono dal considerare il Quartetto di Anscombe in cui tutti e quattro i set di dati hanno una correlazione di Pearson +0,816, anche se seguono il modello "man mano che aumenta, tende ad aumentare" in modi molto diversi ( credito immagine ):y
Se la tua variabile indipendente è nominale, allora non ha senso parlare di ciò che accade " all'aumentare di ". Nel tuo caso, "Argomento della conversazione" non ha un valore numerico che può andare su e giù. Quindi non è possibile correlare "Argomento di conversazione" con "Durata della conversazione". Ma come ha scritto @ttnphns nei commenti, ci sono misure di forza dell'associazione che puoi usare che sono in qualche modo analoghe. Ecco alcuni dati falsi e il relativo codice R:
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")
Che dà:
> 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
Usando "Gossip" come livello di riferimento per "Argomento" e definendo variabili fittizie binarie per "Sport" e "Meteo", possiamo eseguire una regressione multipla.
> 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
Si noti che 0.825 non è la correlazione tra Durata e Argomento: non è possibile correlare queste due variabili perché l'argomento è nominale. Ciò che rappresenta in realtà è la correlazione tra le durate osservate e quelle previste (adattate) dal nostro modello. Entrambe queste variabili sono numeriche, quindi siamo in grado di correlarle. In effetti i valori adattati sono solo le durate medie per ciascun gruppo:
> 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
Solo per verificare, la correlazione di Pearson tra i valori osservati e quelli adattati è:
> cor(data.df$duration, model.lm$fitted)
[1] 0.825137
Possiamo visualizzarlo su un diagramma a dispersione:
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")
La forza di questa relazione è visivamente molto simile a quella delle trame del Quartetto di Anscombe, il che non sorprende poiché avevano tutte correlazioni di Pearson circa 0,82.
Potresti essere sorpreso dal fatto che con una variabile indipendente categoriale, ho scelto di fare una regressione (multipla) piuttosto che un ANOVA a senso unico . Ma in realtà questo risulta essere un approccio equivalente.
library(heplots) # for eta
model.aov <- aov(duration ~ topic, data = data.df)
summary(model.aov)
Questo fornisce un sommario con statistica F identica e valore p :
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
Ancora una volta, il modello ANOVA si adatta ai mezzi del gruppo, proprio come ha fatto la regressione:
> 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
Ciò significa che la correlazione tra valori adattati e osservati della variabile dipendente è la stessa del modello di regressione multipla. La "proporzione di varianza spiegata" misura per regressione multipla ha un equivalente ANOVA, (eta quadrato). Possiamo vedere che corrispondono.η 2
> etasq(model.aov, partial = FALSE)
eta^2
topic 0.6808511
Residuals NA
In questo senso, l'analogo più vicino a una "correlazione" tra una variabile esplicativa nominale e una risposta continua sarebbe , la radice quadrata di , che è l'equivalente del coefficiente di correlazione multipla per la regressione. Questo spiega il commento che "La misura più naturale di associazione / correlazione tra una variabile nominale (presa come IV) e una scala (presa come DV) è eta". Se sei più interessato alla proporzione di varianza spiegata, allora puoi rimanere con eta al quadrato (o il suo equivalente di regressione ). Per ANOVA, uno si imbatte spesso nel parzialeη 2 R R 2eta al quadrato. Poiché questo ANOVA era a senso unico (c'era solo un predittore categorico), l'eta quadrata quadrata è uguale all'eta quadrata, ma le cose cambiano nei modelli con più predittori.
> etasq(model.aov, partial = TRUE)
Partial eta^2
topic 0.6808511
Residuals NA
Tuttavia è del tutto possibile che né la "correlazione" né la "proporzione della varianza spiegata" siano la misura della dimensione dell'effetto che si desidera utilizzare. Ad esempio, la tua attenzione potrebbe essere più focalizzata sul modo in cui i mezzi differiscono tra i gruppi. Questa domanda e risposta contiene ulteriori informazioni su eta al quadrato, eta al quadrato e varie alternative.