I have carried out my pilot study on language learning motivation using a 6 point Likert scale but from 0 (strongly disagree) to 5 (very much agree). I noticed a colleague in his survey used 1 to 6. Will my computed variables (sum and mean) be the same as if I had used 1 to 6? Is it normally recommended to not use a 0 for some reason? I am new to SPSS but have managed to do most of what I need to do but I'm now worrying my values are 'distorted'. I don't understand how SPSS adds a 0 into an equation.
Solved – Is 0 a valid value in a Likert scale
likertpsychometricsscalesspss
Related Solutions
If you really want to use stacked barcharts with such a large number of items, here are two possible solutions.
Using irutils
I came across this package some months ago.
As of commit 0573195c07 on Github, the code won't work with a grouping=
argument. Let's go for Friday's debugging session.
Start by downloading a zipped version from Github.
You'll need to hack the R/likert.R
file, specifically the likert
and plot.likert
functions. First, in likert
, cast()
is used but the reshape
package is never loaded (although there's an import(reshape)
instruction in the NAMESPACE
file). You can load this yourself beforehand. Second, there's an incorrect instruction to fetch items labels, where a i
is dangling around line 175. This has to be fixed as well, e.g. by replacing all occurrences of likert$items[,i]
with likert$items[,1]
. Then you can install the package the way you are used to do on your machine. On my Mac, I did
% tar -czf irutils.tar.gz jbryer-irutils-0573195
% R CMD INSTALL irutils.tar.gz
Then, with R, try the following:
library(irutils)
library(reshape)
# Simulate some data (82 respondents x 66 items)
resp <- data.frame(replicate(66, sample(1:5, 82, replace=TRUE)))
resp <- data.frame(lapply(resp, factor, ordered=TRUE,
levels=1:5,
labels=c("Strongly disagree","Disagree",
"Neutral","Agree","Strongly Agree")))
grp <- gl(2, 82/2, labels=LETTERS[1:2]) # say equal group size for simplicity
# Summarize responses by group
resp.likert <- likert(resp, grouping=grp)
That should just work, but the visual rendering will be awful because of the high number of items. It works without grouping (e.g., plot(likert(resp))
), though.
I would thus suggest to reduce your dataset to smaller subsets of items. E.g., using 12 items,
plot(likert(resp[,1:12], grouping=grp))
I get a 'readable' stacked barchart. You can probably process them afterwards. (Those are ggplot2
objects, but you won't be able to arrange them on a single page with gridExtra::grid.arrange()
because of readability issue!)
Alternative solution
I would like to draw your attention on another package, HH, that allows to plot Likert scales as diverging stacked barcharts. We could reuse the above code as shown below:
resp.likert <- likert(resp)
detach(package:irutils)
library(HH)
plot.likert(resp.likert$results[,-6]*82/100, main="")
but that will complicate things a bit because we need to convert frequencies to counts, subset the likert
object produced by irutils
, detach package, etc. So let's start again with fresh (counts) statistics:
plot.likert(t(apply(resp, 2, table)), main="", as.percent=TRUE,
rightAxisLabels=NULL, rightAxis=NULL, ylab.right="",
positive.order=TRUE)
To use a grouping variable, you'll need to work with an array
of numerical values.
# compute responses frequencies separately by grp
resp.array <- array(NA, dim=c(66, 5, 2))
resp.array[,,1] <- t(apply(subset(resp, grp=="A"), 2, table))
resp.array[,,2] <- t(apply(subset(resp, grp=="B"), 2, table))
dimnames(resp.array) <- list(NULL, NULL, group=levels(grp))
plot.likert(resp.array, layout=c(2,1), main="")
This will produce two separate panels, but it fits on a single page.
Edit 2016-6-3
- As of now likert is available as separate package.
- You do not need reshape library or detach both irutils and reshape
I think you are looking for a test of equality of two proportions in paired data. A proper test may be the McNemar test.
http://de.wikipedia.org/wiki/McNemar-Test
In SPSS, you can check McNemar test under 'statistics' in the crosstabs dialogue. It will provide the proper test for a table using the pre/post measurement.
If you only want to test one proportion, you first need to recode the variable to an indicator variable, e.g. 1 vs. 4 to 5 (i.e., strongly agree vs. all other).
Best Answer
Let me make a couple of points. First, if you just have 1 question, you don't technically have a likert scale, but just an ordinal rating. At any rate, I can't see as how there will be any meaningful difference. This is just a linear shift. This will neither make a difference whether you use an ordinal analysis like ordinal logistic regression or a Mann-Whitney U test, or a more standard option like OLS regression or a t-test.