JuanJMV
JuanJMV

Reputation: 145

Polychoric Correlation and CI

I am trying to calculate some polychoric correlations (reproducible code here)

library(polycor)
Var1 <- (c(1,2,3,1,2,2,3,2,2,1,2))
Var2 <- (c(2,2,3,1,2,1,3,2,2,1,2))
        
df <- as.data.frame(cbind(Var1, Var2))


polychor(df$Var1,df$Var2)

However, I also need the confidence intervals but I am not able to calculate them. I have calculated the polychoric correlations with the polycor package. I have found some packages such as ci.rpc but they do not work in my R version.

Does anybody now how to calculate CI for polychoric correlations? Maybe using boostrapping?

Thank you so much in advance.

Upvotes: -1

Views: 66

Answers (1)

Davyd Antoniuk
Davyd Antoniuk

Reputation: 106

You can use the boot library.Bootstrapping involves resampling your data multiple times to create a distribution of the polychoric correlation estimates, from which you can derive confidence intervals.

library(polycor)
library(boot)
Var1 <- (c(1,2,3,1,2,2,3,2,2,1,2))
Var2 <- (c(2,2,3,1,2,1,3,2,2,1,2))

df <- as.data.frame(cbind(Var1, Var2))
polychor(df$Var1,df$Var2)

# Function to calculate polychoric correlation
polychoric_correlation <- function(data, indices) {
  sample_data <- data[indices, ]  # resample the data
  return(polychor(sample_data$Var1, sample_data$Var2))
}

# Bootstrapping
set.seed(123)  # for reproducibility
results <- boot(data = df, statistic = polychoric_correlation, R = 1000)

# Confidence intervals
boot.ci(results, type = "perc")

Output:

BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 997 bootstrap replicates

CALL : 
boot.ci(boot.out = results, type = "perc")

Intervals : 
Level     Percentile     
95%   ( 0.4239,  0.9998 )  
Calculations and Intervals on Original Scale

Also, if you have any problems installing the libraries, I recommend that you update your version of R and RStudio https://posit.co/download/rstudio-desktop/

Upvotes: 1

Related Questions