A notebook made by Paul Amat, amat-design.com
Context and objectives
Is there an association between two nominal variables?
Research hypothesis
Statistical hypothesis
H0:
H1:
Data preparation and exploration
Starting session
library(readr)
data <- read_csv("data.csv", show_col_types = FALSE)
Observed counts
t <- table(data$mood, data$gender)
t
Man Woman
Happy 56 56
Sad 41 47
Proportions
round(prop.table(t, 1),2)
Man Woman
Happy 0.50 0.50
Sad 0.47 0.53
Parametric test
Conditions
Independent observations
The independence of observations is guaranteed by the recruitment
process.
Test
test <- chisq.test(data$mood, data$gender) #ok jamovi
test
Pearson's Chi-squared test with Yates' continuity correction
data: data$mood and data$gender
X-squared = 0.11312, df = 1, p-value = 0.7366
Post-test conditions
More than 5 observations in each combination of theoretical
frequencies
all(test$expected > 5)
[1] TRUE
Effect size (nominal)
Standardized residuals
test$stdres
data$gender
data$mood Man Woman
Happy 0.47885 -0.47885
Sad -0.47885 0.47885
Values greater than 2 indicate over-representation, values less than
-2 indicate under-representation.
Odds ratio (2x2 only)
n00 <- t[1,1]
n01 <- t[1,2]
n10 <- t[2,1]
n11 <- t[2,2]
OR <- (n00 * n11)/(n01 * n10)
OR # ok jamovi
[1] 1.146341
Ratio of proportions. When there is no effect, the OR is equal to 1.
In this case, the two proportions are equal: we have the same number in
the numerator and in the denominator.
Relative risk (2x2 only)
if(!require(DescTools)) install.packages("DescTools")
Le chargement a nécessité le package : DescTools
Registered S3 method overwritten by 'data.table':
method from
print.data.table
Attachement du package : ‘DescTools’
L'objet suivant est masqué depuis ‘package:car’:
Recode
library(DescTools)
RelRisk(t) # ok jamovi
[1] 1.073171
Cramer’s V
if(!require(rcompanion)) install.packages("rcompanion")
Le chargement a nécessité le package : rcompanion
Attachement du package : ‘rcompanion’
L'objet suivant est masqué depuis ‘package:effectsize’:
phi
library(rcompanion)
(cramer <- cramerV(data$mood, data$gender)) #ok jamovi
Cramer V
0.03386
Cramer’s V for tables bigger than 2x2. Effect: .10 low, .30 moderate,
.50 high.
Effect size (ordinal)
Gamma
data$gender <- factor(data$gender)
data$mood <- factor(data$mood, levels=c("Happy", "Sad"))
if(!require(DescTools)) install.packages("DescTools")
library(DescTools)
GoodmanKruskalGamma(table(data$mood, data$gender)) # ok jamovi
[1] 0.06818182
For ordinal variables, the Gamma if parametric. The effect is
interpreted as a correlation coefficient, which ranges from -1 to +1.
The closer the result is to 0, the less the variables are dependent on
each other, and vice versa.
Power analysis
Finding power
if(!require(pwr)) install.packages("pwr")
library(pwr)
pwr.chisq.test(w = cramer, N = length(data$mood), df = test$parameter)
Chi squared power calculation
w = 0.03386
N = 200
df = 1
sig.level = 0.05
power = 0.07665618
NOTE: N is the number of observations
Finding N
pwr.chisq.test(w = cramer, df = test$parameter, sig.level = 0.05, power = 0.8)
Chi squared power calculation
w = 0.03386
N = 6845.934
df = 1
sig.level = 0.05
power = 0.8
NOTE: N is the number of observations
Non-parametric test: Continuity correction
test <- chisq.test(data$mood, data$gender, correct = T) #ok jamovi
test
Pearson's Chi-squared test with Yates' continuity correction
data: data$mood and data$gender
X-squared = 0.11312, df = 1, p-value = 0.7366
Interpretation: continuity p-value from Yates or Fisher’s exact test
if theoretical numbers <5. Continuity correction limits the bias
brought by the fact that the sampling distribution is discrete but the
chi-square distribution is continuous.
Effect size (ordinal)
Kendall Tau B
data$gender <- factor(data$gender)
data$mood <- factor(data$mood, levels=c("Happy", "Sad"))
if(!require(DescTools)) install.packages("DescTools")
library(DescTools)
KendallTauB(table(data$mood, data$gender)) # ok jamovi
[1] 0.0338598
For ordinal variables, Kendall’s Tau-b if non-parametric. The effect
is interpreted as a correlation coefficient, which ranges from -1 to +1.
The closer the result is to 0, the less the variables are dependent on
each other, and vice versa.
Non-parametric test: Fisher’s Exact Test
fisher.test(data$mood, data$gender) #ok jamovi
Fisher's Exact Test for Count Data
data: data$mood and data$gender
p-value = 0.6704
alternative hypothesis: true odds ratio is not equal to 1
95 percent confidence interval:
0.6311207 2.0838391
sample estimates:
odds ratio
1.145556
Results and recommendations
LS0tDQp0aXRsZTogIkFzc29jaWF0aW9uIGJldHdlZW4gdHdvIGluZGVwZW5kZW50IG5vbWluYWwgdmFyaWFibGVzIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KQSBub3RlYm9vayBtYWRlIGJ5IFBhdWwgQW1hdCwgW2FtYXQtZGVzaWduLmNvbV0oYW1hdC1kZXNpZ24uY29tKQ0KDQojIyBDb250ZXh0IGFuZCBvYmplY3RpdmVzDQoNCj4gSXMgdGhlcmUgYW4gYXNzb2NpYXRpb24gYmV0d2VlbiB0d28gbm9taW5hbCB2YXJpYWJsZXM/DQoNCiMjIyBSZXNlYXJjaCBoeXBvdGhlc2lzDQoNCiMjIyBTdGF0aXN0aWNhbCBoeXBvdGhlc2lzDQoNCkgwOg0KDQpIMToNCg0KIyMgRGF0YSBwcmVwYXJhdGlvbiBhbmQgZXhwbG9yYXRpb24NCg0KIyMjIFN0YXJ0aW5nIHNlc3Npb24NCg0KYGBge3J9DQpsaWJyYXJ5KHJlYWRyKQ0KZGF0YSA8LSByZWFkX2NzdigiZGF0YS5jc3YiLCBzaG93X2NvbF90eXBlcyA9IEZBTFNFKQ0KYGBgDQoNCiMjIyBPYnNlcnZlZCBjb3VudHMNCg0KYGBge3J9DQp0IDwtIHRhYmxlKGRhdGEkbW9vZCwgZGF0YSRnZW5kZXIpDQp0DQpgYGANCg0KIyMjIFByb3BvcnRpb25zDQoNCmBgYHtyfQ0Kcm91bmQocHJvcC50YWJsZSh0LCAxKSwyKQ0KYGBgDQoNCiMjIFBhcmFtZXRyaWMgdGVzdA0KDQojIyMgQ29uZGl0aW9ucw0KDQojIyMjIEluZGVwZW5kZW50IG9ic2VydmF0aW9ucw0KDQpUaGUgaW5kZXBlbmRlbmNlIG9mIG9ic2VydmF0aW9ucyBpcyBndWFyYW50ZWVkIGJ5IHRoZSByZWNydWl0bWVudCBwcm9jZXNzLg0KDQojIyMgVGVzdA0KDQpgYGB7cn0NCnRlc3QgPC0gY2hpc3EudGVzdChkYXRhJG1vb2QsIGRhdGEkZ2VuZGVyKSAjb2sgamFtb3ZpDQp0ZXN0DQpgYGANCg0KIyMjIFBvc3QtdGVzdCBjb25kaXRpb25zDQoNCiMjIyMgTW9yZSB0aGFuIDUgb2JzZXJ2YXRpb25zIGluIGVhY2ggY29tYmluYXRpb24gb2YgdGhlb3JldGljYWwgZnJlcXVlbmNpZXMNCg0KYGBge3J9DQphbGwodGVzdCRleHBlY3RlZCA+IDUpDQpgYGANCg0KIyMjIEVmZmVjdCBzaXplIChub21pbmFsKQ0KDQojIyMjIFN0YW5kYXJkaXplZCByZXNpZHVhbHMNCg0KYGBge3J9DQp0ZXN0JHN0ZHJlcw0KYGBgDQoNClZhbHVlcyBncmVhdGVyIHRoYW4gMiBpbmRpY2F0ZSBvdmVyLXJlcHJlc2VudGF0aW9uLCB2YWx1ZXMgbGVzcyB0aGFuIC0yIGluZGljYXRlIHVuZGVyLXJlcHJlc2VudGF0aW9uLg0KDQojIyMjIE9kZHMgcmF0aW8gKDJ4MiBvbmx5KQ0KDQpgYGB7cn0NCm4wMCA8LSB0WzEsMV0NCm4wMSA8LSB0WzEsMl0NCm4xMCA8LSB0WzIsMV0NCm4xMSA8LSB0WzIsMl0NCk9SIDwtIChuMDAgKiBuMTEpLyhuMDEgKiBuMTApDQpPUiAjIG9rIGphbW92aQ0KYGBgDQoNClJhdGlvIG9mIHByb3BvcnRpb25zLiBXaGVuIHRoZXJlIGlzIG5vIGVmZmVjdCwgdGhlIE9SIGlzIGVxdWFsIHRvIDEuIEluIHRoaXMgY2FzZSwgdGhlIHR3byBwcm9wb3J0aW9ucyBhcmUgZXF1YWw6IHdlIGhhdmUgdGhlIHNhbWUgbnVtYmVyIGluIHRoZSBudW1lcmF0b3IgYW5kIGluIHRoZSBkZW5vbWluYXRvci4NCg0KIyMjIyBSZWxhdGl2ZSByaXNrICgyeDIgb25seSkNCg0KYGBge3J9DQppZighcmVxdWlyZShEZXNjVG9vbHMpKSBpbnN0YWxsLnBhY2thZ2VzKCJEZXNjVG9vbHMiKQ0KbGlicmFyeShEZXNjVG9vbHMpDQoNClJlbFJpc2sodCkgIyBvayBqYW1vdmkNCmBgYA0KDQojIyMjIENyYW1lcidzIFYNCg0KYGBge3J9DQppZighcmVxdWlyZShyY29tcGFuaW9uKSkgaW5zdGFsbC5wYWNrYWdlcygicmNvbXBhbmlvbiIpDQpsaWJyYXJ5KHJjb21wYW5pb24pDQoNCihjcmFtZXIgPC0gY3JhbWVyVihkYXRhJG1vb2QsIGRhdGEkZ2VuZGVyKSkgI29rIGphbW92aQ0KYGBgDQoNCkNyYW1lcidzIFYgZm9yIHRhYmxlcyBiaWdnZXIgdGhhbiAyeDIuIEVmZmVjdDogLjEwIGxvdywgLjMwIG1vZGVyYXRlLCAuNTAgaGlnaC4NCg0KIyMjIEVmZmVjdCBzaXplIChvcmRpbmFsKQ0KDQojIyMjIEdhbW1hDQoNCmBgYHtyfQ0KZGF0YSRnZW5kZXIgPC0gZmFjdG9yKGRhdGEkZ2VuZGVyKQ0KZGF0YSRtb29kIDwtIGZhY3RvcihkYXRhJG1vb2QsIGxldmVscz1jKCJIYXBweSIsICJTYWQiKSkNCg0KaWYoIXJlcXVpcmUoRGVzY1Rvb2xzKSkgaW5zdGFsbC5wYWNrYWdlcygiRGVzY1Rvb2xzIikNCmxpYnJhcnkoRGVzY1Rvb2xzKQ0KDQpHb29kbWFuS3J1c2thbEdhbW1hKHRhYmxlKGRhdGEkbW9vZCwgZGF0YSRnZW5kZXIpKSAjIG9rIGphbW92aQ0KYGBgDQoNCkZvciBvcmRpbmFsIHZhcmlhYmxlcywgdGhlIEdhbW1hIGlmIHBhcmFtZXRyaWMuIFRoZSBlZmZlY3QgaXMgaW50ZXJwcmV0ZWQgYXMgYSBjb3JyZWxhdGlvbiBjb2VmZmljaWVudCwgd2hpY2ggcmFuZ2VzIGZyb20gLTEgdG8gKzEuIFRoZSBjbG9zZXIgdGhlIHJlc3VsdCBpcyB0byAwLCB0aGUgbGVzcyB0aGUgdmFyaWFibGVzIGFyZSBkZXBlbmRlbnQgb24gZWFjaCBvdGhlciwgYW5kIHZpY2UgdmVyc2EuDQoNCiMjIyBQb3dlciBhbmFseXNpcw0KDQojIyMjIEZpbmRpbmcgcG93ZXINCg0KYGBge3J9DQppZighcmVxdWlyZShwd3IpKSBpbnN0YWxsLnBhY2thZ2VzKCJwd3IiKQ0KbGlicmFyeShwd3IpDQpwd3IuY2hpc3EudGVzdCh3ID0gY3JhbWVyLCBOID0gbGVuZ3RoKGRhdGEkbW9vZCksIGRmID0gdGVzdCRwYXJhbWV0ZXIpDQpgYGANCg0KIyMjIyBGaW5kaW5nIE4NCg0KYGBge3J9DQpwd3IuY2hpc3EudGVzdCh3ID0gY3JhbWVyLCBkZiA9IHRlc3QkcGFyYW1ldGVyLCBzaWcubGV2ZWwgPSAwLjA1LCBwb3dlciA9IDAuOCkNCmBgYA0KDQojIyBOb24tcGFyYW1ldHJpYyB0ZXN0OiBDb250aW51aXR5IGNvcnJlY3Rpb24NCg0KYGBge3J9DQp0ZXN0IDwtIGNoaXNxLnRlc3QoZGF0YSRtb29kLCBkYXRhJGdlbmRlciwgY29ycmVjdCA9IFQpICNvayBqYW1vdmkNCnRlc3QNCmBgYA0KDQpJbnRlcnByZXRhdGlvbjogY29udGludWl0eSBwLXZhbHVlIGZyb20gWWF0ZXMgb3IgRmlzaGVyJ3MgZXhhY3QgdGVzdCBpZiB0aGVvcmV0aWNhbCBudW1iZXJzIFw8NS4gQ29udGludWl0eSBjb3JyZWN0aW9uIGxpbWl0cyB0aGUgYmlhcyBicm91Z2h0IGJ5IHRoZSBmYWN0IHRoYXQgdGhlIHNhbXBsaW5nIGRpc3RyaWJ1dGlvbiBpcyBkaXNjcmV0ZSBidXQgdGhlIGNoaS1zcXVhcmUgZGlzdHJpYnV0aW9uIGlzIGNvbnRpbnVvdXMuDQoNCiMjIyBFZmZlY3Qgc2l6ZSAob3JkaW5hbCkNCg0KIyMjIyBLZW5kYWxsIFRhdSBCDQoNCmBgYHtyfQ0KZGF0YSRnZW5kZXIgPC0gZmFjdG9yKGRhdGEkZ2VuZGVyKQ0KZGF0YSRtb29kIDwtIGZhY3RvcihkYXRhJG1vb2QsIGxldmVscz1jKCJIYXBweSIsICJTYWQiKSkNCg0KaWYoIXJlcXVpcmUoRGVzY1Rvb2xzKSkgaW5zdGFsbC5wYWNrYWdlcygiRGVzY1Rvb2xzIikNCmxpYnJhcnkoRGVzY1Rvb2xzKQ0KDQpLZW5kYWxsVGF1Qih0YWJsZShkYXRhJG1vb2QsIGRhdGEkZ2VuZGVyKSkgIyBvayBqYW1vdmkNCmBgYA0KDQpGb3Igb3JkaW5hbCB2YXJpYWJsZXMsIEtlbmRhbGwncyBUYXUtYiBpZiBub24tcGFyYW1ldHJpYy4gVGhlIGVmZmVjdCBpcyBpbnRlcnByZXRlZCBhcyBhIGNvcnJlbGF0aW9uIGNvZWZmaWNpZW50LCB3aGljaCByYW5nZXMgZnJvbSAtMSB0byArMS4gVGhlIGNsb3NlciB0aGUgcmVzdWx0IGlzIHRvIDAsIHRoZSBsZXNzIHRoZSB2YXJpYWJsZXMgYXJlIGRlcGVuZGVudCBvbiBlYWNoIG90aGVyLCBhbmQgdmljZSB2ZXJzYS4NCg0KIyMgTm9uLXBhcmFtZXRyaWMgdGVzdDogRmlzaGVyJ3MgRXhhY3QgVGVzdA0KDQpgYGB7cn0NCmZpc2hlci50ZXN0KGRhdGEkbW9vZCwgZGF0YSRnZW5kZXIpICNvayBqYW1vdmkNCmBgYA0KDQojIyBSZXN1bHRzIGFuZCByZWNvbW1lbmRhdGlvbnMNCg==