Description
The direction of the constructs in a grid is arbitrary and a
reflection of a scale does not affect the information contained in the
grid. Nonetheless, the direction of a scale has an effect on
inter-element correlations (Mackay, 1992)
and on the spatial representation and clustering of the grid (Bell, 2010). Hence, it is desirable to follow a
protocol to align constructs that will render unique results. A common
approach is to align constructs by pole preference, i.e. aligning all
positive and negative poles. This can e. g. be achieved using the
function swapPoles
. If an ideal element is present the
function alignByIdeal
will align the constructs
accordingly. Note that this approach does not always yield definite
results as sometimes ratings do not show a clear preference for one pole
(Winter, Bell, & Watson, 2010). If a
preference cannot be determined definitely, the construct direction
remains unchanged (a warning is issued in that case).
Bell (2010) proposed another solution for the problem of construct alignment. As a unique protocol he suggests to align constructs in a way so they all have positive loadings on the first component of a grid PCA.
R-Code
Align by ideal/preference
To align a construct by preference, an ideal element has to be defined. For the following example it is element 13 (ideal self).
alignByIdeal(feixas2004, 13)
# Warning in alignByIdeal(feixas2004, 13): The following constructs do not show a preference for either poleand have thus
# not been aligned: 2
#
# RATINGS:
# 7 - Friend 2
# Friend 1 - 6 | 8 - Non-grata
# Boyfriend - 5 | | | 9 - Friend 3
# Brother - 4 | | | | | 10 - Cousin
# Father - 3 | | | | | | | 11 - Godmother
# Mother - 2 | | | | | | | | | 12 - Friend 4
# Self now - 1 | | | | | | | | | | | 13 - Ideal Self
# | | | | | | | | | | | | |
# Pessimistic (.1) 1 1 5 2 7 3 6 2 6 4 3 2 7 (1.) Optimistic
# Self-demanding (.2) 1 6 6 2 2 5 6 3 5 6 4 5 4 (2.) Takes it easy
# Fearful (.3) 2 2 6 2 4 5 6 5 2 3 4 5 5 (3.) Enterprising
# Lives to work (.4) 5 1 2 2 6 6 6 1 6 7 6 6 7 (4.) Works to live
# Imposes his/her wishes (.5) 6 2 1 1 4 3 6 1 7 3 4 2 7 (5.) Tolerant with others
# Touchy (.6) 6 1 7 2 4 5 4 2 5 5 3 2 5 (6.) Teasing
# s not appreciate others (.7) 6 2 2 2 7 3 4 1 4 6 6 3 7 (7.) Appreciates others
# Aggressive (.8) 6 4 2 2 7 4 6 2 6 6 6 3 7 (8.) Calm
# Selfish (.9) 6 6 2 1 6 5 3 1 5 5 6 6 6 (9.) Concerned about others
# Avaricious (.10) 6 1 1 1 7 5 5 1 6 3 3 6 7 (10.) Generous
# rialistic, superficial (.11) 7 3 1 1 7 4 3 1 7 4 5 4 7 (11.) Sensitive
# Cheeky (.12) 6 6 5 4 6 6 6 1 6 5 6 5 7 (12.) Respectful
# Hypocritical (.13) 5 4 4 2 6 5 5 1 6 6 5 4 7 (13.) Sincere
# Blackmailer (.14) 3 2 2 1 5 6 6 1 6 6 6 3 7 (14.) Non blackmailer
# pears stronger than is (.15) 6 3 1 2 5 2 4 2 7 6 6 5 6 (15.) Natural
# look after the friend (.16) 6 3 3 3 6 2 1 2 4 4 6 4 7 (16.) Looks after the frien
# Non Accessible (.17) 5 2 2 1 4 2 4 1 6 3 5 2 7 (17.) Accessible
# Introverted (.18) 1 2 6 2 4 5 7 5 2 6 6 5 5 (18.) Extroverted
# Gets depressed easily (.19) 1 2 6 3 6 3 7 6 1 3 3 3 6 (19.) Does not get depresse
# Sees only the negative (.20) 2 2 4 2 7 3 6 1 2 5 5 3 7 (20.) Tries to find the goo
#
# Poles: (+) = preferred , (-) = non-preferred , (/) = none , (.) = not defined
Note that when midpoint ratings are present no preferred pole can be identified, as it is the case for one construct in the example above.
As a default the preferred poles are assigned to the right side. You
can use the argument high=FALSE
to indicate that high
ratings will correspond to the negative pole. Hence, the preferred pole
will be in the left side of the grid.
alignByIdeal(feixas2004, 13, high = F)
# Warning in alignByIdeal(feixas2004, 13, high = F): The following constructs do not show a preference for either poleand
# have thus not been aligned: 2
#
# RATINGS:
# 7 - Friend 2
# Friend 1 - 6 | 8 - Non-grata
# Boyfriend - 5 | | | 9 - Friend 3
# Brother - 4 | | | | | 10 - Cousin
# Father - 3 | | | | | | | 11 - Godmother
# Mother - 2 | | | | | | | | | 12 - Friend 4
# Self now - 1 | | | | | | | | | | | 13 - Ideal Self
# | | | | | | | | | | | | |
# Optimistic (.1) 7 7 3 6 1 5 2 6 2 4 5 6 1 (1.) Pessimistic
# Self-demanding (.2) 1 6 6 2 2 5 6 3 5 6 4 5 4 (2.) Takes it easy
# Enterprising (.3) 6 6 2 6 4 3 2 3 6 5 4 3 3 (3.) Fearful
# Works to live (.4) 3 7 6 6 2 2 2 7 2 1 2 2 1 (4.) Lives to work
# Tolerant with others (.5) 2 6 7 7 4 5 2 7 1 5 4 6 1 (5.) Imposes his/her wishes
# Teasing (.6) 2 7 1 6 4 3 4 6 3 3 5 6 3 (6.) Touchy
# Appreciates others (.7) 2 6 6 6 1 5 4 7 4 2 2 5 1 (7.) Does not appreciate ot
# Calm (.8) 2 4 6 6 1 4 2 6 2 2 2 5 1 (8.) Aggressive
# Concerned about others (.9) 2 2 6 7 2 3 5 7 3 3 2 2 2 (9.) Selfish
# Generous (.10) 2 7 7 7 1 3 3 7 2 5 5 2 1 (10.) Avaricious
# Sensitive (.11) 1 5 7 7 1 4 5 7 1 4 3 4 1 (11.) Materialistic, superf
# Respectful (.12) 2 2 3 4 2 2 2 7 2 3 2 3 1 (12.) Cheeky
# Sincere (.13) 3 4 4 6 2 3 3 7 2 2 3 4 1 (13.) Hypocritical
# Non blackmailer (.14) 5 6 6 7 3 2 2 7 2 2 2 5 1 (14.) Blackmailer
# Natural (.15) 2 5 7 6 3 6 4 6 1 2 2 3 2 (15.) Appears stronger than
# s after the friendship (.16) 2 5 5 5 2 6 7 6 4 4 2 4 1 (16.) Does not look after t
# Accessible (.17) 3 6 6 7 4 6 4 7 2 5 3 6 1 (17.) Non Accessible
# Extroverted (.18) 7 6 2 6 4 3 1 3 6 2 2 3 3 (18.) Introverted
# t get depressed easily (.19) 7 6 2 5 2 5 1 2 7 5 5 5 2 (19.) Gets depressed easily
# find the good in thin (.20) 6 6 4 6 1 5 2 7 6 3 3 5 1 (20.) Sees only the negativ
#
# Poles: (+) = preferred , (-) = non-preferred , (/) = none , (.) = not defined
To save the assigned grid into a new object:
x <- alignByIdeal(feixas2004, 13)
# Warning in alignByIdeal(feixas2004, 13): The following constructs do not show a preference for either poleand have thus
# not been aligned: 2
Align by loadings
The alignment operation using OpenRepGrid
is performed
by the function alignByLoadings
.
alignByLoadings(bell2010)
#
# ###################################
# Alignment of constructs by loadings
# ###################################
#
# Construct correlations - before alignment
#
# 1 2 3 4 5 6 7 8 9
# (1) relaxed - worried & 1 -0.10 0.03 -0.83 0.12 0.23 -0.49 0.66 -0.08
# (2) not so sma - smart (aca 2 -0.47 -0.01 -0.80 -0.35 0.28 -0.19 0.12
# (3) dislikes s - loves spor 3 -0.04 0.36 0.04 -0.01 -0.24 0.08
# (4) not intera - loves peop 4 0.17 0.21 0.34 -0.49 0.25
# (5) not transp - transparen 5 0.38 -0.05 0.01 0.29
# (6) insensitiv - sensitive 6 -0.71 0.55 -0.26
# (7) fearful&ti - fearless 7 -0.78 0.65
# (8) rough - gentle 8 -0.54
# (9) accept as - loves to a 9
#
# Construct factor loadiongs on PC1 - before alignment
#
# PC1
# (1) relaxed - worried & 0.726
# (2) not so sma - smart (aca -0.392
# (3) dislikes s - loves spor 0.029
# (4) not intera - loves peop -0.553
# (5) not transp - transparen 0.183
# (6) insensitiv - sensitive 0.643
# (7) fearful&ti - fearless -0.912
# (8) rough - gentle 0.907
# (9) accept as - loves to a -0.591
#
# The following constructs are reversed:
#
# index
# (2) not so sma - smart (aca 2
# (4) not intera - loves peop 4
# (7) fearful&ti - fearless 7
# (9) accept as - loves to a 9
#
# Construct correlations - after alignment
#
# 1 2 3 4 5 6 7 8 9
# (1) relaxed - worried & 1 0.10 0.03 0.83 0.12 0.23 0.49 0.66 0.08
# (2) smart (aca - not so sma 2 0.47 -0.01 0.80 0.35 0.28 0.19 0.12
# (3) dislikes s - loves spor 3 0.04 0.36 0.04 0.01 -0.24 -0.08
# (4) loves peop - not intera 4 -0.17 -0.21 0.34 0.49 0.25
# (5) not transp - transparen 5 0.38 0.05 0.01 -0.29
# (6) insensitiv - sensitive 6 0.71 0.55 0.26
# (7) fearless - fearful&ti 7 0.78 0.65
# (8) rough - gentle 8 0.54
# (9) loves to a - accept as 9
#
# Construct factor loadings on PC1 - after alignment
#
# PC1
# (1) relaxed - worried & 0.726
# (2) smart (aca - not so sma 0.392
# (3) dislikes s - loves spor 0.029
# (4) loves peop - not intera 0.553
# (5) not transp - transparen 0.183
# (6) insensitiv - sensitive 0.643
# (7) fearless - fearful&ti 0.912
# (8) rough - gentle 0.907
# (9) loves to a - accept as 0.591
To save the alignment information in an object:
x <- alignByLoadings(bell2010)
To get more information about the function type:
?alignByLoadings
to the console to open the help menu for
the function. As a default the function will return a list
containing:
Name of list element | Content |
---|---|
cor.before |
Construct correlation matrix before reversal |
loadings.before |
Loadings on PCs before reversal |
reversed |
Constructs that have been reversed |
cor.after |
Construct correlation matrix after reversal |
loadings.after |
Loadings on PCs after reversal |
names(x)
# [1] "cor.before" "loadings.before" "reversed" "cor.after" "loadings.after"
To extract the indices that need reversal and use them to swap the poles you may do:
swapPoles(bell2010, x$reversed$index)
#
# RATINGS:
# A teacher you respected - 5 6 - Mother (or the person who fill
# A person of the opposite sex t - 4 | | 7 - A person of the opposite sex t
# the unhappiest person you know - 3 | | | | 8 - The most confident person you
# closest friend of the same sex - 2 | | | | | | 9 - A person you work well with (
# self - 1 | | | | | | | | 10 - A teacher you did not resp
# | | | | | | | | | |
# relaxed (.1) 4 4 6 5 3 6 5 2 2 6 (1.) worried & tense
# smart (academically) (.2) 2 1 2 3 1 4 2 1 4 1 (2.) not so smart (academic
# dislikes sports (.3) 6 3 7 6 4 4 2 3 6 3 (3.) loves sports
# loves people (.4) 2 1 3 2 2 3 2 1 1 4 (4.) not interactive
# not transparent (.5) 6 4 5 7 3 7 6 5 6 3 (5.) transparent
# insensitive (.6) 4 6 5 4 4 6 5 3 4 2 (6.) sensitive
# fearless (.7) 3 4 4 2 3 5 3 2 3 3 (7.) fearful&timid
# rough (.8) 5 6 6 4 5 7 7 3 5 6 (8.) gentle
# loves to argue (.9) 3 3 2 1 4 4 2 1 3 3 (9.) accept as it is
#
# Poles: (+) = preferred , (-) = non-preferred , (/) = none , (.) = not defined
This is clumsy though and will be subject to change in later versions
of OpenRepGrid
.