Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Error in correlation with interaction in R

this is my dataset:

Variable_1 <- c(3, 5, 6, 9, 12)
Variable_2 <- c(5, 5, 7, 6, 10)
Variable_3 <- c(0, 1, 3, 3, 5)
Variable_4 <- c(6, 7, 5, 10, 10)

X <- data.frame(Variable_1, Variable_2, Variable_3, Variable_4)

I want to calculate the pairwise correlation of these variables, with interaction with a new variable (x). However, when I do this with my codes, the following error appears:

with(data.frame(x = rnorm(5)),
cor(model.matrix(~ . * x, X)))


> 1: In terms.formula(object, data = data) :
      'varlist' has changed (from nvar=4) to new 5 after EncodeVars() -- should no longer happen!
>    2: In terms.formula(formula, data = data) :
      'varlist' has changed (from nvar=4) to new 5 after EncodeVars() -- should no longer happen!
>    3: In cor(model.matrix(~. * x, X)) : standard deviation is zero

Why does it happen? And how can I fix this?

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

If you add x to the X data instead of using with in a separate data frame, that solves the errors 1 and 2. Warning 3 about the SD being 0 is because the model formula you have includes an intercept term, we can use + 0 or - 1 in the formula to not include an intercept.

cbind(X, x = rnorm(5)) |> 
  model.matrix(object = ~ . * x - 1) |> 
  cor()
#               Variable_1 Variable_2  Variable_3  Variable_4          x Variable_1:x
# Variable_1    1.00000000  0.8524929  0.94311913  0.82929841 -0.6392038   0.03777884
# Variable_2    0.85249292  1.0000000  0.91532579  0.48178766 -0.6351861  -0.31367519
# Variable_3    0.94311913  0.9153258  1.00000000  0.60163630 -0.6868033  -0.04758412
# Variable_4    0.82929841  0.4817877  0.60163630  1.00000000 -0.3359712   0.29232862
# x            -0.63920377 -0.6351861 -0.68680333 -0.33597124  1.0000000   0.56683001
# Variable_1:x  0.03777884 -0.3136752 -0.04758412  0.29232862  0.5668300   1.00000000
# Variable_2:x -0.53418365 -0.5306942 -0.54239657 -0.30656762  0.9766116   0.66241818
# Variable_3:x  0.45817294  0.1534868  0.51245819  0.35902826 -0.1084688   0.70426363
# Variable_4:x -0.33930292 -0.5650112 -0.47714884  0.06483919  0.8915007   0.83829795
#              Variable_2:x Variable_3:x Variable_4:x
# Variable_1    -0.53418365   0.45817294  -0.33930292
# Variable_2    -0.53069420   0.15348678  -0.56501121
# Variable_3    -0.54239657   0.51245819  -0.47714884
# Variable_4    -0.30656762   0.35902826   0.06483919
# x              0.97661158  -0.10846875   0.89150066
# Variable_1:x   0.66241818   0.70426363   0.83829795
# Variable_2:x   1.00000000   0.06749953   0.89434134
# Variable_3:x   0.06749953   1.00000000   0.20684320
# Variable_4:x   0.89434134   0.20684320   1.00000000
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading