> has anyone written a package/function in R for computing a point-
> biserial resp. biserial correlation?

Note that the point-biserial correlation is nothing but the standard 
correlation coefficient when one of the variables is dichotomous, so that 
cor(.) is OK.

The biserial is different and includes a correction for the so-called "point 
of dichotomy". The following should work (translating a formula found in a 
psychometric manual) :

cor.biserial = function(x,y)
{
  stopifnot(is.factor(x))
  stopifnot(length(levels(x))==2)
  stopifnot(length(x)==length(y))

  N = length(y)

  # Success / Failure frequencies
  f = table(x)/length(x)

  # Means of success/failure groups on the global score
  m = tapply(y,x,mean)

  # Variance of the global score
  Sy = sqrt(var(y)*(N-1)/N)

  # Biserial correlation
  # Be cautious in interpreting the sign : 
  # depends upon the ordering of levels(x)
  ((m[1]-m[2])/Sy)*(f[1]*f[2]/dnorm(f[1]-.5))

}

Yvonnick Noel, PhD.
Department of Psychology
U. of Lille 3

______________________________________________
[EMAIL PROTECTED] mailing list
https://www.stat.math.ethz.ch/mailman/listinfo/r-help

Reply via email to