Skip to main content
4 of 4
added 132 characters in body
John
  • 23.6k
  • 9
  • 59
  • 93

Your scale has only 3 levels so it's very unlikely to be conducive to any kind of regular least squares analysis. You cannot treat it as continuous. And, you can't really treat it as equal intervals either without some additional theory about the particular measure and evidence.

The easiest thing here looks to be a chi-square. That would tell you if there is a relationship between your measures of any shape. Unfortunately your measures aren't entirely independent so a regular chi-square test doesn't work and neither does a McNemar test which requires 2x2 tables. I believe that there are generalizations of the McNemar test that you could use but I'm not familiar with them. I don't see a nonparametric bootstrapping solution because there's nothing really to randomize within subjects.

If you're willing to place some restrictions on what you think happens to the relationship you have more options.

The suggestion of a logistic regression with the rating as a categorical predictor and intention to stay as a response is good. You'd need to turn the intention to stay into a numeric variable with just 0's and 1's.

Alternatively you might try an ordinal regression with your rating as response and intention to stay as a predictor. You should be expecting the relationship to be one of moving higher or lower in the ratings and not some other kind of change (like a more concentrated distribution in the middle). If your data appear to conform to these limitations you should be OK using either analysis.

So, that's how you should approach analysis. If you just want some kind of correlation type measure to compare across experiments, conditions, or other similar kinds of correlations, then you need one based on chi-square. One of the ones below will work.

# (you pass these functions the columns in a long format data.frame 
# that you want to assess, not the counts.)
# Pearson contingency coefficient function.
C <- function(v1, v2) {
    x <- chisq.test(v1, v2, correct = FALSE)$statistic
    sqrt( x/(length(v1) + x) )
}

# Cramer's V function
V <- function(v1, v2){
    tab <- table(v1, v2)
    X <- chisq.test(tab)$statistic
    n <- length(v1)
    q <- min(nrow(tab), ncol(tab))
    sqrt( X / (n*q) )
}
John
  • 23.6k
  • 9
  • 59
  • 93