CSIE Scoring - R
 

Home Up

#### Circumplex Scales of Interpersonal Efficacy – how to compute scale scores (and other indices) ####

library(dplyr)

## Compute raw CSIV octant scores ##
YourData <- YourData %>%
 mutate(PA = (item04 + item12 + item20 + item28)/4, # PA = Agentic
        BC = (item07 + item15 + item23 + item31)/4, # BC = Agentic & Uncommunal
        DE = (item02 + item10 + item18 + item26)/4, # DE = Uncommunal
        FG = (item05 + item13 + item21 + item29)/4, # FG = Unagentic & Uncommunal
        HI = (item08 + item16 + item24 + item32)/4, # HI = Unagentic
        JK = (item03 + item11 + item19 + item27)/4, # JK = Unagentic & Communal
        LM = (item06 + item14 + item22 + item30)/4, # LM = Communal
        NO = (item01 + item09 + item17 + item25)/4) # NO = Agentic & Communal
## Compute scores for the overall bipolar X (communal) and Y (agentic) vectors.
YourData <- YourData %>%
 mutate(AGENTIC = 0.25 * (PA - HI + (0.707 * (BC + NO - FG - JK))),
       COMMUNAL = 0.25 * (LM - DE + (0.707 * (NO + JK - FG - BC))))

### The above commands are all you need to do the basic scoring
### The code below offer examples of how to compute additional scores or indices

## Compute "Structural Summary" Parameters ##
YourData <- YourData %>%
 mutate(
  # Compute "vector length" or "amplitude" (AMP)
  AMP = sqrt(AGENTIC^2 + COMMUNAL^2),
  # Compute overall mean or "response elevation" (ELE)
  ELE = (PA + BC + DE + FG + HI + JK + LM + NO)/8,
  # Compute Sum of Squared Deviations (SStot)
  SStot = ((PA - ELE)^2 + (BC - ELE)^2 + (DE - ELE)^2 + (FG - ELE)^2 +
  (HI - ELE)^2 + (JK - ELE)^2 + (LM - ELE)^2 + (NO - ELE)^2),
  # Compute Circumplex Goodness-of-Fit (R-squared)
  R2 = (4 * (AMP^2)) / SStot
 )
# Compute Angular Displacement or Circumplex Angle (ANG)
YourData <- YourData %>%
 mutate(ANG = ifelse(AGENTIC > 0 & COMMUNAL > 0, 000 + atan(AGENTIC/COMMUNAL) * (180 / pi),
  ifelse(AGENTIC > 0 & COMMUNAL < 0, 180 + atan(AGENTIC/COMMUNAL) * (180 / pi),
  ifelse(AGENTIC < 0 & COMMUNAL > 0, 360 + atan(AGENTIC/COMMUNAL) * (180 / pi),
  ifelse(AGENTIC < 0 & COMMUNAL < 0, 180 + atan(AGENTIC/COMMUNAL) * (180 / pi), NA)))))


# Compute ipsative octant scale scores
YourData <- YourData %>%
 mutate(
  iPA = PA - ELE,
  iBC = BC - ELE,
  iDE = DE - ELE,
  iFG = FG - ELE,
  iHI = HI - ELE,
  iJK = JK - ELE,
  iLM = LM - ELE,
  iNO = NO - ELE
 )