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
# es 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
# erialistic, 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
# ppears stronger than is (15) 6 3 1 2 5 2 4 2 7 6 6 5 6 (15) Natural
# t look after the friend (16) 6 3 3 3 6 2 1 2 4 4 6 4 7 (16) Looks after the friend
# 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 depressed
# Sees only the negative (20) 2 2 4 2 7 3 6 1 2 5 5 3 7 (20) Tries to find the good
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 oth
# 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, superfi
# 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
# ks after the friendship (16) 2 5 5 5 2 6 7 6 4 4 2 4 1 (16) Does not look after th
# 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
# ot get depressed easily (19) 7 6 2 5 2 5 1 2 7 5 5 5 2 (19) Gets depressed easily
# o find the good in thin (20) 6 6 4 6 1 5 2 7 6 3 3 5 1 (20) Sees only the negative
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 (academica
# 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
This is clumsy though and will be subject to change in later versions
of OpenRepGrid
.