- Yes, point-biserial correlation is usually recommended when you want to check the correlation between binary and continuous variables (see this wikipedia entry). In R, you can use
cor.test
function. As you can see below, the output returns Pearson's product-moment correlation. In this case, it is equivalent to point-biserial correlation:
df <- data.frame(
x = c(0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0),
y = c(10, 18, 12, 14, 9, 22, 25, 15, 19, 18, 8)
)
cor.test(df$x,df$y)
Pearson's product-moment correlation
data: df$x and df$y
t = 2.2684, df = 9, p-value = 0.04949
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.005098737 0.883391276
sample estimates:
cor
0.603129
When authors did not state the type of correlation analysis they used, we can assume that they used Pearson's correlation.
- Yes, that is true. That's how you get 1 for correlation coefficient, which is quite unlikely:
a <- c(0,0,0,0,0,1,1,1,1,1)
b <- c(11,11,11,11,11,21,21,21,21,21)
cor.test(a,b)
Pearson's product-moment correlation
data: a and b
t = Inf, df = 8, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
1 1
sample estimates:
cor
1
In more realistic cases (as in the first example), positive point-biserial correlation coefficient indicates that observations with $x=1$ have more frequently higher y values compared to observations with $x=0$. Or, as Gung nicely explained here: "...if the correlation is positive, I would say that means moving from the 0 category to the 1 category is associated with an increase in 𝑌, and/or higher 𝑌 values tend to co-occur with category 1. A negative correlation would be the opposite of that." Otherwise, the interpretation is similar to Pearson's correlation.
- I guess the authors want to provide a single bivariate measure for all variables which is quite common in some fields. You can use t-test and report mean difference, etc. In the end, you will get identical or very similar results (e.g., test statistic, p-value) because common statistical tests are linear models. You can see this in our example:
cor.test(df$y, df$x)
Pearson's product-moment correlation
data: df$y and df$x
t = 2.2684, df = 9, p-value = 0.04949
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
0.005098737 0.883391276
sample estimates:
cor
0.603129
t.test(df$y ~ df$x, var.equal = TRUE)
Two Sample t-test
data: df$y by df$x
t = -2.2684, df = 9, p-value = 0.04949
alternative hypothesis: true difference in means between group 0 and group 1 is not equal to 0
95 percent confidence interval:
-12.64919419 -0.01747248
sample estimates:
mean in group 0 mean in group 1
12.00000 18.33333
You can calculate point-biserial correlation manually to see how it relates, e.g., to t-test:
$$r_{pb} = \frac{M_1 - M_0}{s_{n-1}}\sqrt{\frac{n_1n_0}{(n(n-1))}}$$
Where $M_1$ and $M_0$ are the mean values on the continuous variable y for all observations in groups 1 and 0, respectively. Similarly, $n_1$ are $n_0$ are the sample sizes for each group, and $n$ is the total sample size.
mean_y0 <- mean(subset(df, x == 0)$y)
mean_y1 <- mean(subset(df, x == 1)$y)
(mean_y1 - mean_y0)/sd(df$y) * (sqrt((5*6)/(11*10)))
0.603129