Introduction

In the following the analysis of the data from the study “Patterns in the appropriaton of a learning management system by instructors based on Q-methodology” is being done.

Dataset

At first the data set has to be read in. The dataset (Ebbert 2017) is added as a submodule in the data/ folder.

Pre-sorting questionnaire data

Import the questionnaire data, convert the scales to factors and add the participant names as the first column.

# import questionnaire
pre.files <- dir("data/questionnaire", pattern = "\\.csv", full.names = TRUE)
pre.tables <- lapply(pre.files, read_csv)
pre.question <- do.call(rbind, pre.tables)
# add levels
cols <- c(9:32)
pre.question %<>% mutate_at(cols, funs(factor(., levels = c(1:5), labels = c("Strongly Disagree", 
    "Disagree", "Undecided", "Agree", "Strongly Agree"))))
pset.question <- str_sub(dir("data/questionnaire", pattern = "\\.csv", full.names = FALSE), 
    1, str_length(dir("data/questionnaire", pattern = "\\.csv", full.names = FALSE)) - 
        4)
pre.question <- cbind(pset.question, pre.question)
# add colummn names
colnames.question <- read_csv("data/colnames/questionnaire.csv")
colnames(pre.question) <- colnames.question
# convert to tibble
pre.question <- as_tibble(pre.question)

Course metadata

Import the course metadata and add the participant names as the first column.

# import course metadata
course.files <- dir("data/course-metadata", pattern = "\\.csv", full.names = TRUE)
course.tables <- lapply(course.files, read_csv)
course.meta <- do.call(rbind, course.tables)
pset.meta <- str_sub(dir("data/course-metadata", pattern = "\\.csv", full.names = FALSE), 
    1, str_length(dir("data/course-metadata", pattern = "\\.csv", full.names = FALSE)) - 
        4)
course.meta <- cbind(pset.meta, course.meta)
# add column names
colnames.meta <- read_csv("data/colnames/course-metadata.csv")
colnames(course.meta) <- colnames.meta
# convert to tibble
course.meta <- as_tibble(course.meta)

Q-Sorts

The data about the Q-Sort consists of multiple parts, these are:

  • The concourse
  • The Q-set
  • The distribution of the cards in the three sorting categories
  • The Q-sorts

Load the concourse:

# import concourse
q.concourse <- import.q.concourse(q.concourse.dir = "data/sample/concourse/", 
    languages = c("english", "german"))
## Gathered 46 full items, each in 2 languages.

Sample and build the Q-set:

# remove items
concourse.remove <- c("external-tools", "programming-assignment", "stats", "scorm-package", 
    "ims-content-package")
q.concourse <- q.concourse[!rownames(q.concourse) %in% concourse.remove, ]
# create the distribution
q.distribution <- make.distribution(nrow(q.concourse))
# define the sample
q.sample <- row.names(q.concourse)
# build the q-set
q.set <- build.q.set(q.concourse, q.sample, q.distribution)
## Build a q.set of 41 items.

The first step in sorting the cards was to sort the cards into three categories. The following data represents how many cards were sorted into each category:

# import card distribution
cards.files <- dir("data/cards-distro", pattern = "\\.csv", full.names = TRUE)
cards.tables <- lapply(cards.files, read_csv)
cards.distro <- do.call(rbind, cards.tables)
pset.distro <- str_sub(dir("data/cards-distro", pattern = "\\.csv", full.names = FALSE), 
    1, str_length(dir("data/cards-distro", pattern = "\\.csv", full.names = FALSE)) - 
        4)
cards.distro <- cbind(pset.distro, cards.distro)
# add column names
colnames.distro <- read_csv("data/colnames/cards-distro.csv")
colnames(cards.distro) <- colnames.distro
# convert to tibble
cards.distro <- as_tibble(cards.distro)

Next the actual Q-sorts are being imported:

# import q-sorts
q.sorts <- import.q.sorts(q.sorts.dir = "data/qsorts/", q.set, q.distribution)

Post-sorting interview data

The post-sorting interview data is split up into two parts.

  1. The Feedback which is directly linked to a specific item in the Q-set
  2. The questions concerning missing or new items

The feedback data is imported using the provided function by the qmethod package (Zabala 2014):

# import feedback
q.feedback <- import.q.feedback(q.feedback.dir = "data/feedback/", q.sorts, 
    q.set)

The interview data is imported from the provided .csv’s:

# import interview
interview.files <- dir("data/interview", pattern = "\\.csv", full.names = TRUE)
interview.tables <- lapply(interview.files, read_csv)
interview <- do.call(rbind, interview.tables)
pset.interview <- str_sub(dir("data/interview", pattern = "\\.csv", full.names = FALSE), 
    1, str_length(dir("data/interview", pattern = "\\.csv", full.names = FALSE)) - 
        4)
interview <- cbind(pset.interview, interview)
# add column names
colnames.interview <- read_csv("data/colnames/interview.csv")
colnames(interview) <- colnames.interview
# convert to tibble
interview <- as_tibble(interview)

Participants

There were 21 participants which were on average 34.3333333 years old. 5 participants were female and 16 were male. On average the participants were teaching 4 hours per week.

Faculty

table(pre.question[4])
## 
##  FB10  FB11  FB12  FB14   FB2   FB4   FB6   FB7 Other 
##     1     2     1     1     1     7     2     3     3

Position

table(pre.question[5])
## < table of extent 0 >

Experience with Moodle

The average experience with Moodle in years was 5.3928571 and was distributed as follows:

table(pre.question[7])
## 
## 0.75    1    2    3  3.5    4    5    6    7    8    9   12 
##    1    2    1    2    1    1    3    3    3    1    1    2

Experience with other platforms

Number of people who have experience with other platforms:

table(pre.question[8])
## 
##   Ja Nein 
##   12    9

Details as to which platforms:

table(pre.question[9])
## 
##           Als Student                  BSCW           BSCW, Asana 
##                     1                     1                     1 
##         BSCW, OpenUss        ein paar Jahre       EWS, Blackboard 
##                     1                     1                     1 
## Kenne 2-3 Plattformen                StudIP StudIP, Adobe Connect 
##                     1                     2                     1 
##         StudIP, Ilias           xLx, learnr 
##                     1                     1

Digital skills

Subsetting the scale from the main data set:

digitalskills <- as.data.frame(pre.question[10:16])

Provide a summary of the scale:

likertdigital <- likert(digitalskills)
sumdigital <- summary(likertdigital)
kable(sumdigital)
Item low neutral high mean sd
4 I am confident in using learning management systems (e.g. Moodle, Ilias or Blackboard). 0.00000 0.000000 100.00000 4.761905 0.4364358
1 I am confident in using the office suite (e.g. word processing, spreadsheet or presentation software). 0.00000 4.761905 95.23810 4.857143 0.4780914
5 I am familiar with content management systems (e.g. WordPress, Drupal or Joomla). 14.28571 4.761905 80.95238 4.095238 1.4108424
7 I have the skills to use web 2.0 technologies (e.g. Wikis, Blogs or Podcasts). 14.28571 9.523810 76.19048 4.238095 1.2611408
3 I am familiar with audio / video editing software (e.g. Audacity or Premiere). 19.04762 9.523810 71.42857 3.952381 1.4992061
6 I am familiar with markup languages (e.g. HTML, XML or Markdown). 19.04762 14.285714 66.66667 3.809524 1.3645163
2 I am familiar with screen recording software (e.g. Camtasia). 19.04762 19.047619 61.90476 3.761905 1.4800257

Plot the scale:

plot(likertdigital)

Personal innovativeness

Subset the data:

inno <- as.data.frame(pre.question[17:20])

Calculate alpha:

numinno <- as.matrix(as.data.frame(lapply(inno, as.numeric)))
inno.alpha <- alpha(numinno, keys = c(1, 1, -1, 1))
inno.alpha$total$raw_alpha
## [1] 0.8067744

The following table shows the alpha if items were dropped:

kable(inno.alpha$alpha.drop)
raw_alpha std.alpha G6(smc) average_r S/N alpha se
If.I.heard.about.a.new.information.technology..I.would.look.for.ways.to.experiment.with.it. 0.7199427 0.7290735 0.6426909 0.4728554 2.691038 0.1016790
Among.my.peers..I.am.usually.the.first.to.try.out.a.new.information.technology.system. 0.7466887 0.7538215 0.6742303 0.5051214 3.062093 0.0934455
In.general..I.am.hesitant.to.try.out.new.information.technologies..reverse.scored..- 0.7733200 0.7817501 0.7161510 0.5442049 3.581904 0.0814130
I.like.to.experiment.with.new.information.technologies. 0.7869674 0.7955530 0.7298798 0.5646650 3.891244 0.0801578

Provide a summary of the scale:

# reverse scale
inno[3] <- reverse.levels(inno[3])

# summarize scale
likertinno <- likert(inno)
suminno <- summary(likertinno)
kable(suminno)
Item low neutral high mean sd
4 I like to experiment with new information technologies. 0.000000 23.80952 76.19048 4.047619 0.7400129
1 If I heard about a new information technology, I would look for ways to experiment with it. 4.761905 28.57143 66.66667 3.809524 0.8135753
2 Among my peers, I am usually the first to try out a new information technology system. 14.285714 23.80952 61.90476 3.761905 1.0442587
3 In general, I am hesitant to try out new information technologies (reverse-scored). 23.809524 19.04762 57.14286 3.428571 0.9783368

Plot the scale:

plot(likertinno)

User interface

Subset the data:

userinterface <- as.data.frame(pre.question[21:24])

Calculate alpha:

numinter <- as.matrix(as.data.frame(lapply(userinterface, as.numeric)))
interface.alpha <- alpha(numinter)
interface.alpha$total$raw_alpha
## [1] 0.5940928

The following table shows the alpha if items were dropped:

kable(interface.alpha$alpha.drop)
raw_alpha std.alpha G6(smc) average_r S/N alpha se
The.layout.of.Moodle.is.user.friendly. 0.4192308 0.4811027 0.4275959 0.2360899 0.9271635 0.2179636
The.computerized.instruction.provided.by.Moodle.is.clear. 0.7150838 0.7406077 0.6581035 0.4876318 2.8551641 0.0962927
The.layout.of.Moodle.is.in.good.structure. 0.5043328 0.5488562 0.4944821 0.2885243 1.2165879 0.1899862
The.overall.user.interface.design.of.Moodle.is.satisfactory. 0.4231518 0.4726807 0.4383429 0.2300554 0.8963841 0.2153336

Drop the second item to increase the reliability of the scale:

userinterface <- userinterface[, c(1, 3, 4)]

Calculate alpha again:

numinter <- as.matrix(as.data.frame(lapply(userinterface, as.numeric)))
interface.alpha <- alpha(numinter)
interface.alpha$total$raw_alpha
## [1] 0.7150838

The following table shows the alpha if items were dropped:

kable(interface.alpha$alpha.drop)
raw_alpha std.alpha G6(smc) average_r S/N alpha se
The.layout.of.Moodle.is.user.friendly. 0.6067416 0.6094562 0.4382863 0.4382863 1.560533 0.1702768
The.layout.of.Moodle.is.in.good.structure. 0.6467066 0.6831910 0.5188232 0.5188232 2.156476 0.1382140
The.overall.user.interface.design.of.Moodle.is.satisfactory. 0.6143791 0.6717899 0.5057859 0.5057859 2.046829 0.1419971

Provide a summary of the scale:

likertinterface <- likert(userinterface)
suminterface <- summary(likertinterface)
kable(suminterface)
Item low neutral high mean sd
3 The overall user interface design of Moodle is satisfactory. 0.00000 9.52381 90.47619 4.142857 0.5732115
2 The layout of Moodle is in good structure. 0.00000 23.80952 76.19048 3.809524 0.5117663
1 The layout of Moodle is user-friendly. 9.52381 33.33333 57.14286 3.619048 0.8646497

Plot the scale:

plot(likertinterface)

Perceived usefulness

Subset the data:

useful <- as.data.frame(pre.question[25:28])

Calculate alpha:

numuseful <- as.matrix(as.data.frame(lapply(useful, as.numeric)))
useful.alpha <- alpha(numuseful)
useful.alpha$total$raw_alpha
## [1] 0.8440257

The following table shows the alpha if items were dropped:

kable(useful.alpha$alpha.drop)
raw_alpha std.alpha G6(smc) average_r S/N alpha se
Using.Moodle.increases.the.quality.of.my.educational.work. 0.8437500 0.8570708 0.8169941 0.6665359 5.996470 0.0506427
Using.Moodle.helps.me.in.being.more.productive.in.my.educational.work. 0.7615385 0.7847543 0.7215222 0.5485907 3.645853 0.0833430
Using.Moodle.makes.me.a.more.productive.teacher. 0.7852853 0.7860121 0.7113940 0.5504379 3.673161 0.0804806
Overall..Moodle.is.useful.in.performing.my.educational.work. 0.8075356 0.8206557 0.7854382 0.6040057 4.575866 0.0688310

Provide a summary of the scale:

likertuseful <- likert(useful)
sumuseful <- summary(likertuseful)
kable(sumuseful)
Item low neutral high mean sd
4 Overall, Moodle is useful in performing my educational work. 4.761905 4.761905 90.47619 4.571429 0.8106435
1 Using Moodle increases the quality of my educational work. 4.761905 9.523810 85.71429 4.476191 0.8728716
2 Using Moodle helps me in being more productive in my educational work. 4.761905 14.285714 80.95238 4.380952 0.9206623
3 Using Moodle makes me a more productive teacher. 19.047619 14.285714 66.66667 3.857143 1.2761549

Plot the scale:

plot(likertuseful)

User satisfaction

Subset the data:

satisfaction <- as.data.frame(pre.question[29:33])

Calculate alpha:

satnum <- as.matrix(as.data.frame(lapply(satisfaction, as.numeric)))
sat.alpha <- alpha(satnum)
sat.alpha$total$raw_alpha
## [1] 0.7857811
kable(sat.alpha$alpha.drop)
raw_alpha std.alpha G6(smc) average_r S/N alpha se
I.am.satisfied.with.the.experience.of.using.Moodle. 0.6999022 0.7221170 0.7446454 0.3938142 2.598637 0.1106287
I.think.that.I.did.the.right.thing.when.I.decided.to.use.Moodle. 0.6959064 0.7157577 0.7041055 0.3863266 2.518125 0.1110976
I.am.satisfied.with.my.decision.to.use.Moodle. 0.7119741 0.7278457 0.7049565 0.4006939 2.674386 0.1051142
I.am.very.satisfied.with.the.services.provided.by.Moodle. 0.7810753 0.8070424 0.8148363 0.5111509 4.182485 0.0838548
My.decision.to.use.Moodle.was.a.wise.one. 0.8301887 0.8334287 0.8482796 0.5557251 5.003436 0.0634308

Provide a summary of the scale:

likertsatisfaction <- likert(satisfaction)
sumsatisfaction <- summary(likertsatisfaction)
kable(sumsatisfaction)
Item low neutral high mean sd
2 I think that I did the right thing when I decided to use Moodle. 0 4.761905 95.23810 4.666667 0.5773503
3 I am satisfied with my decision to use Moodle. 0 4.761905 95.23810 4.761905 0.5389584
4 I am very satisfied with the services provided by Moodle. 0 9.523810 90.47619 4.190476 0.6015852
1 I am satisfied with the experience of using Moodle. 0 14.285714 85.71429 4.047619 0.5895923
5 My decision to use Moodle was a wise one. 0 14.285714 85.71429 4.428571 0.7464200

Plot the scale:

plot(likertsatisfaction)

Scales summary

The following table shows a summary of the scales:

Scale Mean Alpha
Personal innovativeness 3.7619048 0.8067744
User interface 3.8571429 0.7150838
Perceived usefulness 4.3214286 0.8440257
User satisfaction 4.4190476 0.7857811

Course metadata

The average course size was 106.3333333 and the median was at 25. The smallest course consisted of 12 students and the biggest of 700 students. The following boxplot shows the course size:

boxplot(course.meta[2])

The performance assessment was distributed as follows:

table(course.meta[3])
## 
##          Assignment Assignment and exam                Exam 
##                  12                   2                   4 
##  Exercises and exam 
##                   3

The type of course was distributed as follows:

table(course.meta[4])
## 
## Blended Learning Workshop                   Lecture 
##                         1                         5 
##       Lecture and seminar                    Online 
##                         3                         1 
##                   Seminar 
##                        11

The sort of course management was distributed as follows:

table(course.meta[5])
## 
## Alone  Team 
##    15     6

Distribution

On average 21.047619 were sorted as unimportant, 6.2380952 were sorted as neurtal and 13.7142857 were sorted as important.
The following plot shows the distrubution of the number of cards per category:

melted.cards <- melt(cards.distro)
## Using Participant as id variables
ggplot(melted.cards, aes(x = variable, y = value)) + geom_boxplot()

Correlation

The first step in analysing the Q-data data is to create a correlation matrix:

cor <- cor(q.sorts)
kable(cor)
Acineth_26bfa05e Alicia_10c3d34f Amber_e0ddb543 An_9538d924 Beatris_92453cbf Calvin_a2d97424 Daniel_126b50df Derrick_72ff92ad Devin_e3d1b473 Donovan_f640ccfa Edna_fb09399c Gwendolyn_a896d60a Kendra_287fb81 Kevin_e2cfea5d Kyle_15f6c5fe Nigel_75f54d25 Paolo_192c118d Saami_8dfa5a4a Shaaheen_2dbbe518 Sharaf_65e09f0d Tyler_eb15d206
Acineth_26bfa05e 1.0000000 -0.1272727 0.1045455 0.0045455 0.3090909 0.0500000 -0.0409091 -0.0454545 0.1590909 0.0636364 0.3454545 -0.1045455 -0.1909091 0.2545455 0.3227273 0.2136364 0.2000000 0.3454545 -0.3590909 0.3181818 0.2363636
Alicia_10c3d34f -0.1272727 1.0000000 -0.0909091 0.3727273 0.2318182 0.2318182 0.3545455 0.3500000 0.4272727 0.3590909 -0.0318182 0.4772727 0.0681818 -0.0181818 -0.0772727 0.2272727 0.2500000 0.0590909 0.2090909 0.0909091 0.2863636
Amber_e0ddb543 0.1045455 -0.0909091 1.0000000 0.3181818 0.2272727 0.3181818 0.0318182 -0.2500000 0.4000000 0.1681818 0.2409091 0.1954545 0.3363636 0.6045455 0.5136364 0.4318182 0.5045455 0.5000000 0.2954545 0.4090909 0.2363636
An_9538d924 0.0045455 0.3727273 0.3181818 1.0000000 0.3772727 0.5545455 0.4227273 0.3136364 0.5863636 0.6727273 0.1363636 0.2636364 0.3000000 0.6636364 0.5545455 0.6772727 0.6954545 0.5000000 0.1954545 0.3045455 0.6454545
Beatris_92453cbf 0.3090909 0.2318182 0.2272727 0.3772727 1.0000000 0.2045455 0.4727273 0.2409091 0.3318182 0.1545455 0.2863636 -0.0363636 -0.0636364 0.2000000 0.3227273 0.6000000 0.4545455 0.1909091 -0.0500000 0.2227273 0.6045455
Calvin_a2d97424 0.0500000 0.2318182 0.3181818 0.5545455 0.2045455 1.0000000 0.1681818 0.0909091 0.5272727 0.5272727 0.3227273 0.5136364 0.2045455 0.5545455 0.4136364 0.2954545 0.5454545 0.4454545 0.2590909 0.4636364 0.3863636
Daniel_126b50df -0.0409091 0.3545455 0.0318182 0.4227273 0.4727273 0.1681818 1.0000000 0.5818182 0.2454545 0.2227273 -0.0727273 0.3181818 0.1636364 0.0909091 0.1863636 0.4227273 0.4136364 0.0318182 0.0818182 0.1227273 0.6272727
Derrick_72ff92ad -0.0454545 0.3500000 -0.2500000 0.3136364 0.2409091 0.0909091 0.5818182 1.0000000 0.0454545 0.1636364 -0.0318182 0.0000000 -0.1545455 -0.0772727 -0.0318182 0.3909091 0.2181818 -0.0545455 -0.0954545 -0.0409091 0.3181818
Devin_e3d1b473 0.1590909 0.4272727 0.4000000 0.5863636 0.3318182 0.5272727 0.2454545 0.0454545 1.0000000 0.6363636 0.4681818 0.3909091 0.3272727 0.6181818 0.4318182 0.4409091 0.5818182 0.5363636 0.2545455 0.3363636 0.4909091
Donovan_f640ccfa 0.0636364 0.3590909 0.1681818 0.6727273 0.1545455 0.5272727 0.2227273 0.1636364 0.6363636 1.0000000 0.2636364 0.4318182 0.1818182 0.4500000 0.5045455 0.4181818 0.4136364 0.4590909 0.0590909 0.1909091 0.4272727
Edna_fb09399c 0.3454545 -0.0318182 0.2409091 0.1363636 0.2863636 0.3227273 -0.0727273 -0.0318182 0.4681818 0.2636364 1.0000000 0.0772727 0.0636364 0.4363636 0.3454545 0.2636364 0.3500000 0.2863636 -0.0318182 0.1863636 0.3000000
Gwendolyn_a896d60a -0.1045455 0.4772727 0.1954545 0.2636364 -0.0363636 0.5136364 0.3181818 0.0000000 0.3909091 0.4318182 0.0772727 1.0000000 0.2454545 0.2500000 0.2318182 0.1818182 0.3000000 0.2000000 0.3181818 0.3681818 0.2500000
Kendra_287fb81 -0.1909091 0.0681818 0.3363636 0.3000000 -0.0636364 0.2045455 0.1636364 -0.1545455 0.3272727 0.1818182 0.0636364 0.2454545 1.0000000 0.4181818 0.2454545 0.0954545 0.4045455 0.1954545 0.6727273 0.1545455 0.0181818
Kevin_e2cfea5d 0.2545455 -0.0181818 0.6045455 0.6636364 0.2000000 0.5545455 0.0909091 -0.0772727 0.6181818 0.4500000 0.4363636 0.2500000 0.4181818 1.0000000 0.6045455 0.5818182 0.6136364 0.6727273 0.2500000 0.5181818 0.4909091
Kyle_15f6c5fe 0.3227273 -0.0772727 0.5136364 0.5545455 0.3227273 0.4136364 0.1863636 -0.0318182 0.4318182 0.5045455 0.3454545 0.2318182 0.2454545 0.6045455 1.0000000 0.5045455 0.5772727 0.6227273 0.1500000 0.4227273 0.5363636
Nigel_75f54d25 0.2136364 0.2272727 0.4318182 0.6772727 0.6000000 0.2954545 0.4227273 0.3909091 0.4409091 0.4181818 0.2636364 0.1818182 0.0954545 0.5818182 0.5045455 1.0000000 0.6272727 0.4318182 0.0090909 0.3227273 0.5772727
Paolo_192c118d 0.2000000 0.2500000 0.5045455 0.6954545 0.4545455 0.5454545 0.4136364 0.2181818 0.5818182 0.4136364 0.3500000 0.3000000 0.4045455 0.6136364 0.5772727 0.6272727 1.0000000 0.5500000 0.3363636 0.2954545 0.5863636
Saami_8dfa5a4a 0.3454545 0.0590909 0.5000000 0.5000000 0.1909091 0.4454545 0.0318182 -0.0545455 0.5363636 0.4590909 0.2863636 0.2000000 0.1954545 0.6727273 0.6227273 0.4318182 0.5500000 1.0000000 0.2090909 0.4772727 0.4545455
Shaaheen_2dbbe518 -0.3590909 0.2090909 0.2954545 0.1954545 -0.0500000 0.2590909 0.0818182 -0.0954545 0.2545455 0.0590909 -0.0318182 0.3181818 0.6727273 0.2500000 0.1500000 0.0090909 0.3363636 0.2090909 1.0000000 0.1545455 0.0227273
Sharaf_65e09f0d 0.3181818 0.0909091 0.4090909 0.3045455 0.2227273 0.4636364 0.1227273 -0.0409091 0.3363636 0.1909091 0.1863636 0.3681818 0.1545455 0.5181818 0.4227273 0.3227273 0.2954545 0.4772727 0.1545455 1.0000000 0.3590909
Tyler_eb15d206 0.2363636 0.2863636 0.2363636 0.6454545 0.6045455 0.3863636 0.6272727 0.3181818 0.4909091 0.4272727 0.3000000 0.2500000 0.0181818 0.4909091 0.5363636 0.5772727 0.5863636 0.4545455 0.0227273 0.3590909 1.0000000

Factors to extract

In the following the number of factors to extraxt is going to be determined. This is going to be done using the Eigenvalues (or the Kaiser-Guttman criterion), parallel analysis and non graphical versions of the scree test.

Eigenvalues (or the Kaiser-Guttman criterion)

Eigenvalues according to the Kaiser-Guttman criterion (Guttman 1954) (Henry F Kaiser 1960) (Henry F. Kaiser 1970)

ev <- eigen(cor)
ev
## eigen() decomposition
## $values
##  [1] 7.56540814 2.59403267 2.32612437 1.38079178 1.03426030 0.95113608
##  [7] 0.69639947 0.65643710 0.64229904 0.53262802 0.47702001 0.43751446
## [13] 0.39913173 0.32966149 0.25258533 0.19567741 0.17461833 0.14683728
## [19] 0.08627190 0.06597966 0.05518545
## 
## $vectors
##             [,1]         [,2]        [,3]        [,4]        [,5]
##  [1,] 0.09051479  0.062108120  0.47385975  0.13898414 -0.20529468
##  [2,] 0.12153999 -0.313173809 -0.28936086  0.28255000 -0.09210706
##  [3,] 0.20694344  0.294134441  0.03093329 -0.26515979 -0.13747523
##  [4,] 0.29855611 -0.127035331 -0.07682574 -0.04724484  0.25526763
##  [5,] 0.18491896 -0.251195564  0.24433363 -0.23367183 -0.14217355
##  [6,] 0.24848369  0.065795511 -0.11702649  0.28520710 -0.06623035
##  [7,] 0.16050921 -0.413905467 -0.10512876 -0.23700126 -0.22027454
##  [8,] 0.07006503 -0.481753746 -0.01198557 -0.07593735  0.08850643
##  [9,] 0.28190453  0.033614165 -0.07209837  0.20974532  0.18000939
## [10,] 0.24215686 -0.059197384 -0.08560449  0.36935770  0.36162383
## [11,] 0.15815410  0.128091577  0.23539432  0.18871028  0.23638659
## [12,] 0.16761486 -0.009505841 -0.32848803  0.36103146 -0.37672031
## [13,] 0.13489752  0.227295559 -0.36735056 -0.32012911  0.09602476
## [14,] 0.29187105  0.231053069  0.05869030 -0.05030681  0.10139162
## [15,] 0.26559354  0.143959762  0.14996162 -0.07736877  0.03742507
## [16,] 0.26722375 -0.167838651  0.14843468 -0.20296011  0.06232467
## [17,] 0.30179948 -0.017952896 -0.02504780 -0.20173032  0.08398226
## [18,] 0.25740909  0.200601227  0.11249454  0.05869144  0.01447392
## [19,] 0.10765578  0.187129957 -0.45371566 -0.26809717 -0.07543001
## [20,] 0.20059797  0.147897425  0.06971505  0.11080011 -0.61369104
## [21,] 0.26970079 -0.228143668  0.13237951 -0.05972614 -0.09501812
##               [,6]        [,7]         [,8]         [,9]       [,10]
##  [1,]  0.134770279  0.01572267  0.550383066 -0.059459897 -0.17427506
##  [2,]  0.246123429 -0.46752083  0.146142705 -0.190105134 -0.01366246
##  [3,] -0.003079246 -0.29521415 -0.393038591  0.054355774 -0.27425488
##  [4,] -0.281539679 -0.09413507 -0.025016714 -0.082287214  0.13290591
##  [5,]  0.356716160 -0.23446850 -0.159737054  0.121106205  0.32700281
##  [6,] -0.049040985  0.34428174 -0.339361222 -0.175994916  0.37646896
##  [7,] -0.001968104  0.24524041  0.109719893  0.310540011 -0.12654844
##  [8,] -0.124881506  0.34465716  0.050183676 -0.466560668 -0.20825491
##  [9,]  0.287914415 -0.20852968  0.088633418 -0.006673788 -0.03607733
## [10,] -0.209513826 -0.06244619  0.080938555  0.250366270 -0.06902999
## [11,]  0.591982839  0.37225630 -0.180248968 -0.030304644 -0.12759430
## [12,]  0.008092949  0.08817946 -0.118697142  0.305634337 -0.33767792
## [13,]  0.161475833  0.17012100  0.355326753  0.051268197 -0.20707842
## [14,] -0.105351921  0.07367612 -0.050850295 -0.186029200 -0.13149102
## [15,] -0.229903488  0.11601784  0.108488239  0.390051540  0.05422877
## [16,] -0.096146604 -0.20367085 -0.230184595 -0.164484693 -0.39057759
## [17,]  0.113746755  0.07578187  0.041666321 -0.074893288  0.02015264
## [18,] -0.221834429 -0.17489004  0.291816603 -0.178023404  0.19953291
## [19,]  0.197606663  0.03444808  0.147635424 -0.152847597  0.27942852
## [20,] -0.137328934  0.07699148  0.008083827 -0.292156113  0.01714401
## [21,] -0.010286037  0.07898025  0.045156243  0.267087602  0.31286961
##             [,11]        [,12]       [,13]         [,14]         [,15]
##  [1,] -0.11682898  0.363576690 -0.10909410  0.0005625275 -0.0190778175
##  [2,] -0.07533470 -0.004429913  0.06830610  0.1654161066  0.3646927075
##  [3,] -0.21153783 -0.086635728 -0.18498390 -0.3712471495  0.2676840527
##  [4,]  0.23181572  0.177778077 -0.02545786  0.2077473584  0.2324173788
##  [5,]  0.09307088  0.253683542  0.25013724 -0.1411086696 -0.2881326556
##  [6,] -0.08967148  0.403855777 -0.16022247 -0.1688791976 -0.0821643913
##  [7,]  0.08864736 -0.109420560 -0.26411600 -0.2435241596 -0.1045669902
##  [8,] -0.21837111 -0.164330550  0.13687165 -0.2653880357  0.0731160359
##  [9,]  0.20390832 -0.174279195 -0.21353835 -0.3852361065 -0.0219141742
## [10,]  0.07619849  0.087743058  0.25749865 -0.2914694440 -0.1509009055
## [11,] -0.01788908 -0.277608084  0.17829858  0.1283211986  0.0898582485
## [12,] -0.21476894  0.026495030 -0.02197317  0.2707695479 -0.2389951667
## [13,]  0.30265432  0.223493788  0.06129471 -0.0711692640  0.0001702197
## [14,]  0.32400758 -0.071075385 -0.22384118  0.2833624779 -0.1127258892
## [15,] -0.25059851 -0.021803535  0.46497839 -0.0077277270  0.3510065188
## [16,]  0.00609502  0.077105561  0.24606761  0.2650556168 -0.3577342625
## [17,] -0.38019679  0.288662562 -0.27561370  0.1652568978  0.2266690813
## [18,] -0.32088145 -0.361708163 -0.13112149 -0.0667689512 -0.3785784074
## [19,] -0.21387521 -0.145574619  0.28334978  0.0692477567 -0.1907061070
## [20,]  0.38037901 -0.100571230  0.28452959 -0.1266229687  0.1910704477
## [21,]  0.13692440 -0.373526146 -0.20649749  0.2864842526  0.1224858786
##             [,16]       [,17]       [,18]        [,19]       [,20]
##  [1,] -0.33168105 -0.20805372 -0.06498474  0.048064637  0.02970224
##  [2,]  0.09360546 -0.23233909  0.25859762  0.027861592  0.19493647
##  [3,] -0.08973518 -0.36807036 -0.06371543 -0.021727538 -0.06830346
##  [4,] -0.01720870 -0.02670553 -0.04498174  0.447222853 -0.26433420
##  [5,]  0.09777647 -0.04142167  0.09896592  0.011981588 -0.39829742
##  [6,] -0.05198258 -0.12453093  0.26100695 -0.128202305  0.28974223
##  [7,]  0.05214051 -0.03496179  0.06709576  0.470277290  0.32030658
##  [8,] -0.12510138 -0.06028995  0.07537678 -0.197185091 -0.34383662
##  [9,] -0.27884427  0.56512689  0.08218048 -0.111139175 -0.01371900
## [10,]  0.03738403 -0.28202213 -0.45956464 -0.045696858  0.04472535
## [11,]  0.20375397 -0.14280869 -0.03462826  0.241979788  0.05144815
## [12,] -0.01465753  0.08564418  0.03064892 -0.019732051 -0.39858104
## [13,]  0.32774484 -0.16276197  0.20281095 -0.327577091 -0.04379378
## [14,] -0.27020508 -0.12435177  0.20691640  0.102328831 -0.17887263
## [15,] -0.12987168  0.22356402  0.39792403  0.004667759  0.05740116
## [16,] -0.02602844  0.13760932  0.00642559 -0.163647406  0.45636817
## [17,]  0.26930107  0.35369111 -0.41843687 -0.051290065 -0.01924902
## [18,]  0.43273868 -0.06061384  0.18302496  0.094488642 -0.04004369
## [19,] -0.45937429 -0.07892707 -0.25235487  0.165725991  0.09202390
## [20,]  0.20057611  0.16564069 -0.27034491  0.033608467  0.04134734
## [21,] -0.11113322 -0.21099382 -0.16413016 -0.511560140  0.04282342
##              [,21]
##  [1,]  0.166997384
##  [2,] -0.197860844
##  [3,]  0.109568626
##  [4,]  0.502156774
##  [5,] -0.143117940
##  [6,]  0.083029874
##  [7,] -0.102543447
##  [8,] -0.005985963
##  [9,]  0.139176463
## [10,] -0.240369039
## [11,]  0.122248164
## [12,]  0.129572739
## [13,]  0.148561925
## [14,] -0.589293147
## [15,] -0.120171748
## [16,]  0.174720319
## [17,] -0.274860738
## [18,]  0.083630340
## [19,]  0.035192681
## [20,] -0.041684684
## [21,]  0.148873739

Parallel analysis

Parallel analysis according to Horn (1965)

ap <- parallel(subject = nrow(q.sorts), var = ncol(q.sorts), rep = 1000, cent = 0.05, 
    model = "components")
ap
## $eigen
##         mevpea     sevpea      qevpea     sqevpea
## V1  2.58696375 0.19124987  2.29830553 0.012780245
## V2  2.23366809 0.14156096  2.00741688 0.009459791
## V3  1.98312282 0.11806836  1.80394209 0.007889901
## V4  1.77894740 0.10005065  1.62328471 0.006685870
## V5  1.60094214 0.08647911  1.46563261 0.005778954
## V6  1.44383417 0.07533998  1.33050102 0.005034583
## V7  1.30505960 0.06892657  1.19514990 0.004606008
## V8  1.17546176 0.06265028  1.06658393 0.004186596
## V9  1.06054611 0.05899830  0.97104295 0.003942553
## V10 0.95040513 0.05460243  0.86450514 0.003648800
## V11 0.84826924 0.05159584  0.76639455 0.003447885
## V12 0.75629971 0.05225587  0.66530295 0.003491991
## V13 0.66886377 0.05375117  0.58695189 0.003591914
## V14 0.58790237 0.05168466  0.50497310 0.003453820
## V15 0.50786862 0.04915181  0.42942837 0.003284563
## V16 0.43383465 0.04857612  0.35514118 0.003246092
## V17 0.36126863 0.04882987  0.27747668 0.003263049
## V18 0.29196050 0.05092657  0.20553104 0.003403161
## V19 0.22240541 0.05438242  0.12683708 0.003634098
## V20 0.14961165 0.05728398  0.05455441 0.003827994
## V21 0.05276448 0.07177239 -0.07641479 0.004796180
## 
## $subject
## [1] 41
## 
## $variables
## [1] 21
## 
## $centile
## [1] 0.05
## 
## attr(,"class")
## [1] "parallel"

Scree test

The scree test by Cattell (1966) can be difficult to interpret, for this non-graphical versions of the scree test have been developed (Raîche et al. 2013).

nS <- nScree(x = ev$values, aparallel = ap$eigen$qevpea)
nS
##   noc naf nparallel nkaiser
## 1   3   1         3       5

Thus, the number of factors to extrat according to the Kaiser-Gutman criterion is 5 and according to the parallel analysis is 3. For the scree test the non graphical variants of the acceleration factor and optimal cooridnates have been applied and according to the acceleration factor 1 factors should be extracted and according to the optimal coordinates 3 factors should be extracted. See the following graphical representation.

plotnScree(nS, main = "")

So the number of factors to extract is 3.

factors <- 3

Analysis

The main analysis is being doing using the qmethod function (Zabala 2014). Principal components analysis is being used with varimax rotation and Pearson coefficient.

results <- qmethod(q.sorts, nfactors = factors)
## Q-method analysis.
## Finished on:             Wed Aug  9 10:02:11 2017
## Original data:           41 statements, 21 Q-sorts
## Forced distribution:     TRUE
## Number of factors:       3
## Rotation:                varimax
## Flagging:                automatic
## Correlation coefficient: pearson
summary(results)
## Q-method analysis.
## Finished on:             Wed Aug  9 10:02:11 2017
## Original data:           41 statements, 21 Q-sorts
## Forced distribution:     TRUE
## Number of factors:       3
## Rotation:                varimax
## Flagging:                automatic
## Correlation coefficient: pearson
## 
## Factor scores
##                             fsc_f1 fsc_f2 fsc_f3
## announcements                    4      2      3
## appointment-choice              -3     -3      1
## assignment-in-database           2     -4      2
## assignment                       4      2     -1
## badges                          -4      4     -1
## book                            -3      0     -2
## calendar                        -1     -2     -2
## chat                            -5      0     -5
## choice                           1     -1      0
## completion-tracking             -4      2      0
## conditional-availability         0      2      0
## database                         2     -2      4
## embed-page                      -2      0     -3
## fair-allocation                  0     -2     -4
## feedback                         1      0      1
## file                             5      3      1
## folder                           1      1      2
## forum                            3      3      3
## glossary                        -2      1      1
## grades-in-database              -3     -4     -2
## grades                          -1      1     -1
## group-choice                     2     -1     -1
## groups                           3      0      0
## label                            1      1      3
## learning-diary                  -2     -5      1
## lecture-recordings               1      0     -2
## lesson                          -2      4     -1
## library-resources               -1     -2     -3
## link-sciebo                     -1      0     -3
## literature-database             -1     -1      2
## page                             0      1      0
## portfolio                       -1     -1      4
## questionnaire                    0     -1      2
## quiz                             0      5      0
## rights-management-in-course      1      1     -4
## signup-database                  2     -2     -1
## topic-choice                     0     -3     -2
## url                              2      2      1
## visibility                       3      3      0
## wiki                             0     -1      2
## workshop                        -2     -3      5
##                                     f1    f2    f3
## Average reliability coefficient   0.80  0.80  0.80
## Number of loading Q-sorts         9.00  5.00  4.00
## Eigenvalues                       6.04  3.77  2.67
## Percentage of explained variance 28.77 17.96 12.73
## Composite reliability             0.97  0.95  0.94
## Standard error of factor scores   0.16  0.22  0.24

The three factors together take into account 18 of the 21 Q-sorts. Together the three factors accounted for 59.4550723 of the explained variance.

In the following plot the statements with the highest consensus are at the bottom and the ones with the highest disagreement on top.

par(lwd = 1.5, mar = c(4, 12, 0, 0) + 0.1)
plot(results, ylab = "")
abline(h = seq(from = 2, to = 41, by = 3), col = grey(0.2), lty = 2)

Statements by factor

The show the ordered statements by factor these first have to be ordered:

scores <- cbind(round(results$zsc, digits = 2), results$zsc_n)
nfactors <- ncol(results$zsc)
col.order <- as.vector(rbind(1:nfactors, (1:nfactors) + nfactors))
scores <- scores[col.order]
scores
##                             zsc_f1 fsc_f1 zsc_f2 fsc_f2 zsc_f3 fsc_f3
## announcements                 1.57      4   1.34      2   1.17      3
## appointment-choice           -1.13     -3  -1.27     -3   0.61      1
## assignment-in-database        0.66      2  -1.41     -4   0.88      2
## assignment                    1.72      4   1.06      2  -0.27     -1
## badges                       -1.73     -4   1.71      4  -0.18     -1
## book                         -1.34     -3  -0.01      0  -0.83     -2
## calendar                     -0.66     -1  -0.78     -2  -0.92     -2
## chat                         -1.84     -5  -0.02      0  -1.84     -5
## choice                        0.29      1  -0.54     -1  -0.10      0
## completion-tracking          -1.48     -4   1.04      2   0.06      0
## conditional-availability     -0.22      0   1.03      2  -0.16      0
## database                      0.69      2  -1.19     -2   1.55      4
## embed-page                   -0.79     -2  -0.16      0  -1.27     -3
## fair-allocation              -0.02      0  -1.06     -2  -1.61     -4
## feedback                      0.23      1  -0.13      0   0.39      1
## file                          2.53      5   1.40      3   0.46      1
## folder                        0.50      1   0.35      1   1.12      2
## forum                         1.53      3   1.34      3   1.22      3
## glossary                     -0.76     -2   0.32      1   0.46      1
## grades-in-database           -1.06     -3  -1.52     -4  -1.22     -2
## grades                       -0.34     -1   0.79      1  -0.58     -1
## group-choice                  0.70      2  -0.42     -1  -0.62     -1
## groups                        1.46      3  -0.20      0  -0.13      0
## label                         0.60      1   0.55      1   1.18      3
## learning-diary               -0.86     -2  -1.66     -5   0.28      1
## lecture-recordings            0.27      1  -0.05      0  -1.08     -2
## lesson                       -0.94     -2   1.40      4  -0.24     -1
## library-resources            -0.47     -1  -0.94     -2  -1.50     -3
## link-sciebo                  -0.69     -1  -0.29      0  -1.28     -3
## literature-database          -0.48     -1  -0.64     -1   1.15      2
## page                          0.14      0   0.64      1  -0.08      0
## portfolio                    -0.65     -1  -0.66     -1   1.58      4
## questionnaire                 0.15      0  -0.48     -1   0.66      2
## quiz                         -0.33      0   1.83      5   0.26      0
## rights-management-in-course   0.51      1   0.11      1  -1.71     -4
## signup-database               0.72      2  -0.71     -2  -0.22     -1
## topic-choice                  0.10      0  -1.39     -3  -0.94     -2
## url                           1.05      2   1.00      2   0.47      1
## visibility                    1.17      3   1.34      3   0.28      0
## wiki                         -0.06      0  -0.48     -1   0.92      2
## workshop                     -0.75     -2  -1.24     -3   2.09      5

Distinguishing and consensus statements

The distinguishing and consensus statements are:

results$qdc
##                                     dist.and.cons        f1_f2 sig_f1_f2
## announcements                           Consensus  0.232336429          
## appointment-choice          Distinguishes f3 only  0.142127116          
## assignment-in-database      Distinguishes f2 only  2.069403664      ****
## assignment                      Distinguishes all  0.663988144         *
## badges                          Distinguishes all -3.436863801      ****
## book                        Distinguishes f2 only -1.326225814      ****
## calendar                                Consensus  0.116136542          
## chat                        Distinguishes f2 only -1.826738416      ****
## choice                                             0.831438416        **
## completion-tracking             Distinguishes all -2.528010532      ****
## conditional-availability    Distinguishes f2 only -1.245082515       ***
## database                        Distinguishes all  1.876890058      ****
## embed-page                  Distinguishes f2 only -0.631861702         *
## fair-allocation             Distinguishes f1 only  1.034357036       ***
## feedback                                Consensus  0.365842267          
## file                            Distinguishes all  1.131841212       ***
## folder                      Distinguishes f3 only  0.153365153          
## forum                                   Consensus  0.185396059          
## glossary                    Distinguishes f1 only -1.071404502       ***
## grades-in-database                      Consensus  0.467185555          
## grades                      Distinguishes f2 only -1.127569014       ***
## group-choice                Distinguishes f1 only  1.121193320       ***
## groups                      Distinguishes f1 only  1.657340395      ****
## label                                              0.048371890          
## learning-diary                  Distinguishes all  0.805194914        **
## lecture-recordings          Distinguishes f3 only  0.322694049          
## lesson                          Distinguishes all -2.346180849      ****
## library-resources                                  0.472131240          
## link-sciebo                 Distinguishes f3 only -0.400046707          
## literature-database         Distinguishes f3 only  0.165518152          
## page                                              -0.501512005          
## portfolio                   Distinguishes f3 only  0.007855565          
## questionnaire               Distinguishes f2 only  0.628071275         *
## quiz                            Distinguishes all -2.157465868      ****
## rights-management-in-course Distinguishes f3 only  0.393711309          
## signup-database             Distinguishes f1 only  1.423991170      ****
## topic-choice                Distinguishes f1 only  1.486965219      ****
## url                                                0.050347985          
## visibility                  Distinguishes f3 only -0.175559327          
## wiki                        Distinguishes f3 only  0.428793596          
## workshop                    Distinguishes f3 only  0.492033322          
##                                    f1_f3 sig_f1_f3       f2_f3 sig_f2_f3
## announcements                0.400599958            0.16826353          
## appointment-choice          -1.735018575      **** -1.87714569      ****
## assignment-in-database      -0.217809335           -2.28721300      ****
## assignment                   1.991807377      ****  1.32781923       ***
## badges                      -1.545639817      ****  1.89122398      ****
## book                        -0.506332495            0.81989332         *
## calendar                     0.257592578            0.14145604          
## chat                        -0.009045982            1.81769243      ****
## choice                       0.394276239           -0.43716218          
## completion-tracking         -1.545305573      ****  0.98270496        **
## conditional-availability    -0.059984786            1.18509773       ***
## database                    -0.863148757        ** -2.74003882      ****
## embed-page                   0.480163949            1.11202565       ***
## fair-allocation              1.584295023      ****  0.54993799          
## feedback                    -0.160344031           -0.52618630          
## file                         2.071029090      ****  0.93918788        **
## folder                      -0.616187757         * -0.76955291         *
## forum                        0.301575066            0.11617901          
## glossary                    -1.215479897       *** -0.14407539          
## grades-in-database           0.165505528           -0.30168003          
## grades                       0.244150765            1.37171978       ***
## group-choice                 1.318742925       ***  0.19754961          
## groups                       1.585031274      **** -0.07230912          
## label                       -0.577087666         * -0.62545956          
## learning-diary              -1.134671273       *** -1.93986619      ****
## lecture-recordings           1.358307619       ***  1.03561357        **
## lesson                      -0.702851231         *  1.64332962      ****
## library-resources            1.029554286       ***  0.55742305          
## link-sciebo                  0.596539411         *  0.99658612        **
## literature-database         -1.625301011      **** -1.79081916      ****
## page                         0.219777930            0.72128994         *
## portfolio                   -2.227915430      **** -2.23577100      ****
## questionnaire               -0.515590995           -1.14366227       ***
## quiz                        -0.589120284         *  1.56834558      ****
## rights-management-in-course  2.215535403      ****  1.82182409      ****
## signup-database              0.932658428        ** -0.49133274          
## topic-choice                 1.036669983       *** -0.45029524          
## url                          0.582163437         *  0.53181545          
## visibility                   0.891201304        **  1.06676063        **
## wiki                        -0.975476241       *** -1.40426984       ***
## workshop                    -2.834866439      **** -3.32689976      ****

Consensus statements are:

results$qdc[which(results$qdc$dist.and.cons == "Consensus"), ]
##                    dist.and.cons     f1_f2 sig_f1_f2      f1_f3 sig_f1_f3
## announcements          Consensus 0.2323364            0.4006000          
## calendar               Consensus 0.1161365            0.2575926          
## feedback               Consensus 0.3658423           -0.1603440          
## forum                  Consensus 0.1853961            0.3015751          
## grades-in-database     Consensus 0.4671856            0.1655055          
##                         f2_f3 sig_f2_f3
## announcements       0.1682635          
## calendar            0.1414560          
## feedback           -0.5261863          
## forum               0.1161790          
## grades-in-database -0.3016800

Statements distinguishing all factors are:

results$qdc[which(results$qdc$dist.and.cons == "Distinguishes all"), ]
##                         dist.and.cons      f1_f2 sig_f1_f2      f1_f3
## assignment          Distinguishes all  0.6639881         *  1.9918074
## badges              Distinguishes all -3.4368638      **** -1.5456398
## completion-tracking Distinguishes all -2.5280105      **** -1.5453056
## database            Distinguishes all  1.8768901      **** -0.8631488
## file                Distinguishes all  1.1318412       ***  2.0710291
## learning-diary      Distinguishes all  0.8051949        ** -1.1346713
## lesson              Distinguishes all -2.3461808      **** -0.7028512
## quiz                Distinguishes all -2.1574659      **** -0.5891203
##                     sig_f1_f3      f2_f3 sig_f2_f3
## assignment               ****  1.3278192       ***
## badges                   ****  1.8912240      ****
## completion-tracking      ****  0.9827050        **
## database                   ** -2.7400388      ****
## file                     ****  0.9391879        **
## learning-diary            *** -1.9398662      ****
## lesson                      *  1.6433296      ****
## quiz                        *  1.5683456      ****

Flagged Q-sorts

The following Q-sorts were flagged for each factor:

results$flagged
##                    flag_f1 flag_f2 flag_f3
## Acineth_26bfa05e     FALSE   FALSE    TRUE
## Alicia_10c3d34f      FALSE    TRUE   FALSE
## Amber_e0ddb543        TRUE   FALSE   FALSE
## An_9538d924          FALSE   FALSE   FALSE
## Beatris_92453cbf     FALSE    TRUE   FALSE
## Calvin_a2d97424       TRUE   FALSE   FALSE
## Daniel_126b50df      FALSE    TRUE   FALSE
## Derrick_72ff92ad     FALSE    TRUE   FALSE
## Devin_e3d1b473        TRUE   FALSE   FALSE
## Donovan_f640ccfa     FALSE   FALSE   FALSE
## Edna_fb09399c         TRUE   FALSE   FALSE
## Gwendolyn_a896d60a   FALSE   FALSE    TRUE
## Kendra_287fb81       FALSE   FALSE    TRUE
## Kevin_e2cfea5d        TRUE   FALSE   FALSE
## Kyle_15f6c5fe         TRUE   FALSE   FALSE
## Nigel_75f54d25       FALSE   FALSE   FALSE
## Paolo_192c118d        TRUE   FALSE   FALSE
## Saami_8dfa5a4a        TRUE   FALSE   FALSE
## Shaaheen_2dbbe518    FALSE   FALSE    TRUE
## Sharaf_65e09f0d       TRUE   FALSE   FALSE
## Tyler_eb15d206       FALSE    TRUE   FALSE

Data by factors

Factor 1

Factor 1 contains 9 Q-sorts.

Subset pre-sorting questionnaire for factor 1:

pre_f1 <- pre.question[results$flagged[, 1], ]

The participants that loaded on factor 1 were on average 31.8888889 years old and 3 of them were female and 6 male. They were teaching on average 3 hours a week.

Faculty:

table(pre_f1[4])
## 
##  FB11  FB14   FB4   FB6   FB7 Other 
##     1     1     3     1     2     1

Position:

table(pre_f1[5])
## < table of extent 0 >

On average they had 5.8888889 years of experience with Moodle which was distributed as follows:

table(pre_f1[7])
## 
##  1  3  5  6  7  9 12 
##  1  1  3  1  1  1  1

Number of them who had experience with other platfoms:

table(pre_f1[8])
## 
##   Ja Nein 
##    7    2

And in detail:

table(pre_f1[9])
## 
##           Als Student                  BSCW           BSCW, Asana 
##                     1                     1                     1 
##        ein paar Jahre Kenne 2-3 Plattformen                StudIP 
##                     1                     1                     2

Subset digital skills

digitalskills_f1 <- digitalskills[results$flagged[, 1], ]
likertdigital_f1 <- likert(digitalskills_f1)
sumdigital_f1 <- summary(likertdigital_f1)
kable(sumdigital_f1)
Item low neutral high mean sd
1 I am confident in using the office suite (e.g. word processing, spreadsheet or presentation software). 0.00000 0.00000 100.00000 4.888889 0.3333333
4 I am confident in using learning management systems (e.g. Moodle, Ilias or Blackboard). 0.00000 0.00000 100.00000 4.666667 0.5000000
7 I have the skills to use web 2.0 technologies (e.g. Wikis, Blogs or Podcasts). 11.11111 0.00000 88.88889 4.555556 1.0137938
2 I am familiar with screen recording software (e.g. Camtasia). 11.11111 11.11111 77.77778 4.111111 1.3642255
5 I am familiar with content management systems (e.g. WordPress, Drupal or Joomla). 11.11111 11.11111 77.77778 4.000000 1.3228757
6 I am familiar with markup languages (e.g. HTML, XML or Markdown). 22.22222 0.00000 77.77778 3.777778 1.3944334
3 I am familiar with audio / video editing software (e.g. Audacity or Premiere). 22.22222 11.11111 66.66667 3.888889 1.5365907

Plot digital skills

plot(likertdigital_f1)

Subset personal innovativeness

inno_f1 <- inno[results$flagged[, 1], ]
likertinno_f1 <- likert(inno_f1)
suminno_f1 <- summary(likertinno_f1)
kable(suminno_f1)
Item low neutral high mean sd
4 I like to experiment with new information technologies. 0.00000 11.11111 88.88889 4.111111 0.6009252
3 In general, I am hesitant to try out new information technologies (reverse-scored). 33.33333 0.00000 66.66667 3.444444 1.1303883
1 If I heard about a new information technology, I would look for ways to experiment with it. 0.00000 44.44444 55.55556 4.000000 1.0000000
2 Among my peers, I am usually the first to try out a new information technology system. 11.11111 33.33333 55.55556 3.666667 1.0000000

Plot personal innovativeness

plot(likertinno_f1)

Subset user interface

userinterface_f1 <- userinterface[results$flagged[, 1], ]
likertinterface_f1 <- likert(userinterface_f1)
suminterface_f1 <- summary(likertinterface_f1)
kable(suminterface_f1)
Item low neutral high mean sd
3 The overall user interface design of Moodle is satisfactory. 0.00000 0.00000 100.00000 4.333333 0.5000000
2 The layout of Moodle is in good structure. 0.00000 11.11111 88.88889 3.888889 0.3333333
1 The layout of Moodle is user-friendly. 11.11111 11.11111 77.77778 3.888889 0.9279607

Plot user interface

plot(likertinterface_f1)

Subset perceived usefulness

useful_f1 <- useful[results$flagged[, 1], ]
likertuseful_f1 <- likert(useful_f1)
sumuseful_f1 <- summary(likertuseful_f1)
kable(sumuseful_f1)
Item low neutral high mean sd
1 Using Moodle increases the quality of my educational work. 0.00000 11.11111 88.88889 4.555556 0.7264832
4 Overall, Moodle is useful in performing my educational work. 11.11111 11.11111 77.77778 4.444444 1.1303883
2 Using Moodle helps me in being more productive in my educational work. 0.00000 22.22222 77.77778 4.444444 0.8819171
3 Using Moodle makes me a more productive teacher. 22.22222 0.00000 77.77778 3.888889 1.4529663

Plot perceived usefulness

plot(likertuseful_f1)

Subset user satisfaction

satisfaction_f1 <- satisfaction[results$flagged[, 1], ]
likertsatisfaction_f1 <- likert(satisfaction_f1)
sumsatisfaction_f1 <- summary(likertsatisfaction_f1)
kable(sumsatisfaction_f1)
Item low neutral high mean sd
4 I am very satisfied with the services provided by Moodle. 0 0.00000 100.00000 4.222222 0.4409586
5 My decision to use Moodle was a wise one. 0 0.00000 100.00000 4.555556 0.5270463
1 I am satisfied with the experience of using Moodle. 0 11.11111 88.88889 4.000000 0.5000000
2 I think that I did the right thing when I decided to use Moodle. 0 11.11111 88.88889 4.666667 0.7071068
3 I am satisfied with my decision to use Moodle. 0 11.11111 88.88889 4.666667 0.7071068

Plot user satisfaction

plot(likertsatisfaction_f1)

The following table shows a summary of the scales for factor 1:

Scale Mean
Personal innovativeness 3.8055556
User interface 4.037037
Perceived usefulness 4.3333333
User satisfaction 4.4222222

Subset course metadata:

course_meta_f1 <- course.meta[results$flagged[, 1], ]

The average course size was 39.7777778 and the median was at 22. The smallest course consisted of 12 students and the biggest of 150 students. The following boxplot shows the course size:

boxplot(course_meta_f1[2])

The performance assessment was distributed as follows:

table(course_meta_f1[3])
## 
##          Assignment Assignment and exam                Exam 
##                   5                   2                   1 
##  Exercises and exam 
##                   1

The type of course was distributed as follows:

table(course_meta_f1[4])
## 
##             Lecture Lecture and seminar             Seminar 
##                   2                   1                   6

The sort of course management was distributed as follows:

table(course_meta_f1[5])
## 
## Alone  Team 
##     6     3

Cards distrbution:

cards.distro_f1 <- cards.distro[results$flagged[, 1], ]
melted.cards_f1 <- melt(cards.distro_f1)
## Using Participant as id variables
ggplot(melted.cards_f1, aes(x = variable, y = value)) + geom_boxplot()

On average 22 were sorted as unimportant, 6.1111111 were sorted as neurtal and 12.8888889 were sorted as important.

Scores sorted for factor 1:

scores[order(scores$zsc_f1, decreasing = T), ]
##                             zsc_f1 fsc_f1 zsc_f2 fsc_f2 zsc_f3 fsc_f3
## file                          2.53      5   1.40      3   0.46      1
## assignment                    1.72      4   1.06      2  -0.27     -1
## announcements                 1.57      4   1.34      2   1.17      3
## forum                         1.53      3   1.34      3   1.22      3
## groups                        1.46      3  -0.20      0  -0.13      0
## visibility                    1.17      3   1.34      3   0.28      0
## url                           1.05      2   1.00      2   0.47      1
## signup-database               0.72      2  -0.71     -2  -0.22     -1
## group-choice                  0.70      2  -0.42     -1  -0.62     -1
## database                      0.69      2  -1.19     -2   1.55      4
## assignment-in-database        0.66      2  -1.41     -4   0.88      2
## label                         0.60      1   0.55      1   1.18      3
## rights-management-in-course   0.51      1   0.11      1  -1.71     -4
## folder                        0.50      1   0.35      1   1.12      2
## choice                        0.29      1  -0.54     -1  -0.10      0
## lecture-recordings            0.27      1  -0.05      0  -1.08     -2
## feedback                      0.23      1  -0.13      0   0.39      1
## questionnaire                 0.15      0  -0.48     -1   0.66      2
## page                          0.14      0   0.64      1  -0.08      0
## topic-choice                  0.10      0  -1.39     -3  -0.94     -2
## fair-allocation              -0.02      0  -1.06     -2  -1.61     -4
## wiki                         -0.06      0  -0.48     -1   0.92      2
## conditional-availability     -0.22      0   1.03      2  -0.16      0
## quiz                         -0.33      0   1.83      5   0.26      0
## grades                       -0.34     -1   0.79      1  -0.58     -1
## library-resources            -0.47     -1  -0.94     -2  -1.50     -3
## literature-database          -0.48     -1  -0.64     -1   1.15      2
## portfolio                    -0.65     -1  -0.66     -1   1.58      4
## calendar                     -0.66     -1  -0.78     -2  -0.92     -2
## link-sciebo                  -0.69     -1  -0.29      0  -1.28     -3
## workshop                     -0.75     -2  -1.24     -3   2.09      5
## glossary                     -0.76     -2   0.32      1   0.46      1
## embed-page                   -0.79     -2  -0.16      0  -1.27     -3
## learning-diary               -0.86     -2  -1.66     -5   0.28      1
## lesson                       -0.94     -2   1.40      4  -0.24     -1
## grades-in-database           -1.06     -3  -1.52     -4  -1.22     -2
## appointment-choice           -1.13     -3  -1.27     -3   0.61      1
## book                         -1.34     -3  -0.01      0  -0.83     -2
## completion-tracking          -1.48     -4   1.04      2   0.06      0
## badges                       -1.73     -4   1.71      4  -0.18     -1
## chat                         -1.84     -5  -0.02      0  -1.84     -5

Statements distinguishing factor 1 are:

results$qdc[which(results$qdc$dist.and.cons == "Distinguishes f1 only"), ]
##                         dist.and.cons     f1_f2 sig_f1_f2      f1_f3
## fair-allocation Distinguishes f1 only  1.034357       ***  1.5842950
## glossary        Distinguishes f1 only -1.071405       *** -1.2154799
## group-choice    Distinguishes f1 only  1.121193       ***  1.3187429
## groups          Distinguishes f1 only  1.657340      ****  1.5850313
## signup-database Distinguishes f1 only  1.423991      ****  0.9326584
## topic-choice    Distinguishes f1 only  1.486965      ****  1.0366700
##                 sig_f1_f3       f2_f3 sig_f2_f3
## fair-allocation      ****  0.54993799          
## glossary              *** -0.14407539          
## group-choice          ***  0.19754961          
## groups               **** -0.07230912          
## signup-database        ** -0.49133274          
## topic-choice          *** -0.45029524

Subset feedback:

f1.feedback <- q.feedback[, results$flagged[, 1]]
f1.feedback <- f1.feedback[rowSums(is.na(f1.feedback)) != ncol(f1.feedback), 
    ]
f1.feedback <- f1.feedback[, colSums(is.na(f1.feedback)) != nrow(f1.feedback)]
kable(f1.feedback)
Amber_e0ddb543 Calvin_a2d97424 Edna_fb09399c Paolo_192c118d Saami_8dfa5a4a Sharaf_65e09f0d
assignment NA Assignments are extremely important in courses because it makes recording the performance easier. NA The assignments are important because the participants have to do written assignment and I think it’s very handy if they submit these in the course. NA NA
badges NA NA NA NA NA Never used it and it is not what I would use in Moodle.
chat I once tried it and it did not convince me. NA It is in my opinion a little too complicated. The technical implementation in Moodle is not good. NA NA
file NA File upload is the base of all our courses. That is just really important for me, that is what Moodle is for me. I use the course to provide additional material. NA Because I use this the most and it is the most important to me. It is the easiest way to distribute material among the students. It is easier than email.
folder NA NA NA Folders are for me also materials or file. NA This could be useful to struture material but I don’t use it because it is not handy.
forum NA NA NA NA NA The forum is also important because I don’t have to send an email to inform the students.
glossary I do not need something like a glossary because it is just for defining. NA Something like that I would create in a seminar. I can’t imagine using that. NA NA
grades-in-database NA NA NA I do not need that seperatly in a database. NA NA
groups NA NA NA NA The group allocation influences everything. NA
label NA NA NA NA NA I use this to add headings to the files I upload to create structure.
lecture-recordings Due to legal concerns it was not possible, but we would have loved doing it. NA NA NA NA NA
library-resources NA NA NA I don’t use it because I don’t work much with literature. NA NA
portfolio NA NA NA The portfolio I think is a good method, but not well implemented in Moodle. NA This is important for my seminars because the students have to write a report in form of a portfolio. But the functions in Moodle are horrible for this. In place of this the students make their portfolio using WordPress.
rights-management-in-course NA NA It is just important for the Moodle courses that I can assign different roles to different users because we sometimes have users who need more rights than the students. NA NA NA
url NA NA NA Links are also material for me. NA This is the same for me as uploading files.
visibility NA I prepare the course in the beginning of the semester and choose the structure without confusing the participant with all the things that are already standing there. NA I work a lot with hiding activities which is why I sorted the visibility high. I reveal the weeks in the course after the seminar. NA NA

Subset interview data:

interview_f1 <- interview[results$flagged[, 1], ]

Missing functionalities:

missing_f1 <- interview_f1[1:3]
kable(missing_f1)
Participant Are you missing any functionalities or appropriations? If any are missing, which ones?
Amber_e0ddb543 yes Blogger or Wordpress +5, Dropbox +5, Socrative Quiz +5, Padlet +3, Tricider +3
Calvin_a2d97424 no NA
Devin_e3d1b473 yes Marking new content
Edna_fb09399c yes Video Upload +5
Kevin_e2cfea5d no NA
Kyle_15f6c5fe yes Live surveys with Moodle +2
Paolo_192c118d no NA
Saami_8dfa5a4a yes Group based folders +3
Sharaf_65e09f0d no NA

New functionalities:

new_f1 <- interview_f1[c(1, 4:5)]
kable(new_f1)
Participant Were there any for you new functionalities among the items you sorted that you might be interested in using now? If any are new and interesing, which ones?
Amber_e0ddb543 yes Lecture recordings
Calvin_a2d97424 yes Wiki, Glossary, Literaturedatabase
Devin_e3d1b473 yes Feedback, Quiz, Questionnaire
Edna_fb09399c yes Signing up for consultation hour, Assigning groups, Fair allocation
Kevin_e2cfea5d yes Portfolio
Kyle_15f6c5fe yes Grades, Portfolio, Feedback
Paolo_192c118d no NA
Saami_8dfa5a4a no NA
Sharaf_65e09f0d no NA

Factor 2

Factor 2 contains 5 Q-sorts.

Subset pre-sorting questionnaire for factor 2:

pre_f2 <- pre.question[results$flagged[, 2], ]

The participants that loaded on factor 2 were on average 36.6 years old and 5 of them were male. They were teaching on average 2.6 hours a week.

Faculty:

table(pre_f2[4])
## 
##  FB10   FB4 Other 
##     1     3     1

Position:

table(pre_f2[5])
## < table of extent 0 >

On average they had 4.35 years of experience with Moodle which was distributed as follows:

table(pre_f2[7])
## 
## 0.75    2    6    7 
##    1    1    2    1

Number of them who had experience with other platfoms:

table(pre_f2[8])
## 
##   Ja Nein 
##    2    3

And in detail:

table(pre_f2[9])
## 
## StudIP, Adobe Connect           xLx, learnr 
##                     1                     1

Subset digital skills

digitalskills_f2 <- digitalskills[results$flagged[, 2], ]
likertdigital_f2 <- likert(digitalskills_f2)
sumdigital_f2 <- summary(likertdigital_f2)
kable(sumdigital_f2)
Item low neutral high mean sd
1 I am confident in using the office suite (e.g. word processing, spreadsheet or presentation software). 0 0 100 5.0 0.0000000
4 I am confident in using learning management systems (e.g. Moodle, Ilias or Blackboard). 0 0 100 4.8 0.4472136
5 I am familiar with content management systems (e.g. WordPress, Drupal or Joomla). 0 0 100 4.6 0.5477226
3 I am familiar with audio / video editing software (e.g. Audacity or Premiere). 20 0 80 4.0 1.7320508
6 I am familiar with markup languages (e.g. HTML, XML or Markdown). 0 20 80 4.6 0.8944272
7 I have the skills to use web 2.0 technologies (e.g. Wikis, Blogs or Podcasts). 0 20 80 4.6 0.8944272
2 I am familiar with screen recording software (e.g. Camtasia). 20 20 60 3.8 1.7888544

Plot digital skills

plot(likertdigital_f2)

Subset personal innovativeness

inno_f2 <- inno[results$flagged[, 2], ]
likertinno_f2 <- likert(inno_f2)
suminno_f2 <- summary(likertinno_f2)
kable(suminno_f2)
Item low neutral high mean sd
4 I like to experiment with new information technologies. 0 20 80 4.2 0.8366600
1 If I heard about a new information technology, I would look for ways to experiment with it. 0 40 60 3.6 0.5477226
2 Among my peers, I am usually the first to try out a new information technology system. 20 40 40 3.4 1.1401754
3 In general, I am hesitant to try out new information technologies (reverse-scored). 20 60 20 3.0 0.7071068

Plot personal innovativeness

plot(likertinno_f2)

Subset user interface

userinterface_f2 <- userinterface[results$flagged[, 2], ]
likertinterface_f2 <- likert(userinterface_f2)
suminterface_f2 <- summary(likertinterface_f2)
kable(suminterface_f2)
Item low neutral high mean sd
2 The layout of Moodle is in good structure. 0 40 60 3.6 0.5477226
3 The overall user interface design of Moodle is satisfactory. 0 40 60 3.8 0.8366600
1 The layout of Moodle is user-friendly. 20 40 40 3.2 0.8366600

Plot user interface

plot(likertinterface_f2)

Subset perceived usefulness

useful_f2 <- useful[results$flagged[, 2], ]
likertuseful_f2 <- likert(useful_f2)
sumuseful_f2 <- summary(likertuseful_f2)
kable(sumuseful_f2)
Item low neutral high mean sd
4 Overall, Moodle is useful in performing my educational work. 0 0 100 4.6 0.5477226
2 Using Moodle helps me in being more productive in my educational work. 20 0 80 4.0 1.2247449
1 Using Moodle increases the quality of my educational work. 20 20 60 4.0 1.4142136
3 Using Moodle makes me a more productive teacher. 40 40 20 3.0 1.2247449

Plot perceived usefulness

plot(likertuseful_f2)

Subset user satisfaction

satisfaction_f2 <- satisfaction[results$flagged[, 2], ]
likertsatisfaction_f2 <- likert(satisfaction_f2)
sumsatisfaction_f2 <- summary(likertsatisfaction_f2)
kable(sumsatisfaction_f2)
Item low neutral high mean sd
2 I think that I did the right thing when I decided to use Moodle. 0 0 100 4.6 0.5477226
3 I am satisfied with my decision to use Moodle. 0 0 100 4.6 0.5477226
4 I am very satisfied with the services provided by Moodle. 0 20 80 4.4 0.8944272
1 I am satisfied with the experience of using Moodle. 0 40 60 3.8 0.8366600
5 My decision to use Moodle was a wise one. 0 60 40 3.8 1.0954451

Plot user satisfaction

plot(likertsatisfaction_f2)

The following table shows a summary of the scales for factor 2:

Scale Mean
Personal innovativeness 3.55
User interface 3.5333333
Perceived usefulness 3.9
User satisfaction 4.24

Subset course metadata:

course_meta_f2 <- course.meta[results$flagged[, 2], ]

The average course size was 190.4 and the median was at 127. The smallest course consisted of 25 students and the biggest of 600 students. The following boxplot shows the course size:

boxplot(course_meta_f2[2])

The performance assessment was distributed as follows:

table(course_meta_f2[3])
## 
##         Assignment               Exam Exercises and exam 
##                  2                  1                  2

The type of course was distributed as follows:

table(course_meta_f2[4])
## 
## Blended Learning Workshop                   Lecture 
##                         1                         2 
##       Lecture and seminar                    Online 
##                         1                         1

The sort of course management was distributed as follows:

table(course_meta_f2[5])
## 
## Alone  Team 
##     3     2

Cards distrbution:

cards.distro_f2 <- cards.distro[results$flagged[, 2], ]
melted.cards_f2 <- melt(cards.distro_f2)
## Using Participant as id variables
ggplot(melted.cards_f2, aes(x = variable, y = value)) + geom_boxplot()

On average 23.8 were sorted as unimportant, 4.2 were sorted as neurtal and 13 were sorted as important.

Scores sorted for factor 2:

scores[order(scores$zsc_f2, decreasing = T), ]
##                             zsc_f1 fsc_f1 zsc_f2 fsc_f2 zsc_f3 fsc_f3
## quiz                         -0.33      0   1.83      5   0.26      0
## badges                       -1.73     -4   1.71      4  -0.18     -1
## file                          2.53      5   1.40      3   0.46      1
## lesson                       -0.94     -2   1.40      4  -0.24     -1
## announcements                 1.57      4   1.34      2   1.17      3
## forum                         1.53      3   1.34      3   1.22      3
## visibility                    1.17      3   1.34      3   0.28      0
## assignment                    1.72      4   1.06      2  -0.27     -1
## completion-tracking          -1.48     -4   1.04      2   0.06      0
## conditional-availability     -0.22      0   1.03      2  -0.16      0
## url                           1.05      2   1.00      2   0.47      1
## grades                       -0.34     -1   0.79      1  -0.58     -1
## page                          0.14      0   0.64      1  -0.08      0
## label                         0.60      1   0.55      1   1.18      3
## folder                        0.50      1   0.35      1   1.12      2
## glossary                     -0.76     -2   0.32      1   0.46      1
## rights-management-in-course   0.51      1   0.11      1  -1.71     -4
## book                         -1.34     -3  -0.01      0  -0.83     -2
## chat                         -1.84     -5  -0.02      0  -1.84     -5
## lecture-recordings            0.27      1  -0.05      0  -1.08     -2
## feedback                      0.23      1  -0.13      0   0.39      1
## embed-page                   -0.79     -2  -0.16      0  -1.27     -3
## groups                        1.46      3  -0.20      0  -0.13      0
## link-sciebo                  -0.69     -1  -0.29      0  -1.28     -3
## group-choice                  0.70      2  -0.42     -1  -0.62     -1
## questionnaire                 0.15      0  -0.48     -1   0.66      2
## wiki                         -0.06      0  -0.48     -1   0.92      2
## choice                        0.29      1  -0.54     -1  -0.10      0
## literature-database          -0.48     -1  -0.64     -1   1.15      2
## portfolio                    -0.65     -1  -0.66     -1   1.58      4
## signup-database               0.72      2  -0.71     -2  -0.22     -1
## calendar                     -0.66     -1  -0.78     -2  -0.92     -2
## library-resources            -0.47     -1  -0.94     -2  -1.50     -3
## fair-allocation              -0.02      0  -1.06     -2  -1.61     -4
## database                      0.69      2  -1.19     -2   1.55      4
## workshop                     -0.75     -2  -1.24     -3   2.09      5
## appointment-choice           -1.13     -3  -1.27     -3   0.61      1
## topic-choice                  0.10      0  -1.39     -3  -0.94     -2
## assignment-in-database        0.66      2  -1.41     -4   0.88      2
## grades-in-database           -1.06     -3  -1.52     -4  -1.22     -2
## learning-diary               -0.86     -2  -1.66     -5   0.28      1

Statements distinguishing factor 2 are:

results$qdc[which(results$qdc$dist.and.cons == "Distinguishes f2 only"), ]
##                                  dist.and.cons      f1_f2 sig_f1_f2
## assignment-in-database   Distinguishes f2 only  2.0694037      ****
## book                     Distinguishes f2 only -1.3262258      ****
## chat                     Distinguishes f2 only -1.8267384      ****
## conditional-availability Distinguishes f2 only -1.2450825       ***
## embed-page               Distinguishes f2 only -0.6318617         *
## grades                   Distinguishes f2 only -1.1275690       ***
## questionnaire            Distinguishes f2 only  0.6280713         *
##                                 f1_f3 sig_f1_f3      f2_f3 sig_f2_f3
## assignment-in-database   -0.217809335           -2.2872130      ****
## book                     -0.506332495            0.8198933         *
## chat                     -0.009045982            1.8176924      ****
## conditional-availability -0.059984786            1.1850977       ***
## embed-page                0.480163949            1.1120257       ***
## grades                    0.244150765            1.3717198       ***
## questionnaire            -0.515590995           -1.1436623       ***

Subset feedback for factor 2:

f2.feedback <- q.feedback[, results$flagged[, 2]]
f2.feedback <- f2.feedback[rowSums(is.na(f2.feedback)) != ncol(f2.feedback), 
    ]
f2.feedback <- f2.feedback[, colSums(is.na(f2.feedback)) != nrow(f2.feedback)]
kable(f2.feedback)
Alicia_10c3d34f Beatris_92453cbf Daniel_126b50df Tyler_eb15d206
announcements I think announcements are handy to point out things like news, appointments, new material or similar things. NA NA Because we could distribute changes with short notice easily among the students.
appointment-choice NA The sign up for a consolation-hour is basical something you could introduce but not doable with 600 students. NA NA
assignment NA The main thing I’m doing with this course is letting the students work on assignments during exercises and rate them. The function is the most important for me because the content is very structured and the students benefit from it. The course would not be usable without this. We have 2 exercises a week and the handing in via the Moodle course was handy for collecting the assignments. The deadline can be kept and the grades distributed.
badges NA NA I perceive these as important and motivating but I also got the feedback from the students that they perceive the badges as positive and motivating. Once I introduced the badges there was an increase in quality. NA
fair-allocation NA We had to distribute 600 students in 15 groups and did not want to use first-come-first serve. NA NA
file NA NA NA Because this is the central feature for distribution lecture content.
grades-in-database NA NA I do not need to record student performance in this course. I don’t see the use, we recorded the grades using the grades function in Moodle based on the activities.
group-choice NA NA NA It would have been handy to automate this in Moodle.
learning-diary NA NA NA I don’t see the use for our course. Because we document the learning process with the 2 weekly exercises.
lesson NA NA This is very important for the students to be admitted to the workshop und to prepare a project planning in advance by way of doing assignments. This has proven to be a robust way to get all students to the same level. NA
portfolio NA NA NA I don’t see the use for our course. Because we document the learning process with the 2 weekly exercises.
quiz I wanted the students to practise with the quizzes. Depending on how good or bad the students did in the quiz I adjust my lecture. NA NA This would have been nice for the students to check their learning progress.
rights-management-in-course NA Because I had many tutors. NA NA
topic-choice NA Theme choosing is not possible in this course context. NA NA
url I am making the material avalible on a separate platform using links. Therefore that is the primary way of distributing content. NA NA NA
visibility NA Based on time, because I prepared many assignments weeks before. They are automatically unlocked every monday at the same time. Otherwise I had to be at my computer every monday at this time. NA NA

Subset interview data:

interview_f2 <- interview[results$flagged[, 2], ]

Missing functionalities:

missing_f2 <- interview_f2[1:3]
kable(missing_f2)
Participant Are you missing any functionalities or appropriations? If any are missing, which ones?
Alicia_10c3d34f yes Quiz in the lecture hall +5
Beatris_92453cbf yes XP-Block +2, Code evaluation +4
Daniel_126b50df yes Linda.com Videos +2, H5P Module +4
Derrick_72ff92ad no NA
Tyler_eb15d206 no NA

New functionalities:

new_f2 <- interview_f2[c(1, 4:5)]
kable(new_f2)
Participant Were there any for you new functionalities among the items you sorted that you might be interested in using now? If any are new and interesing, which ones?
Alicia_10c3d34f no NA
Beatris_92453cbf yes Library resources
Daniel_126b50df no NA
Derrick_72ff92ad no NA
Tyler_eb15d206 no NA

Factor 3

Factor 3 contains 4 Q-sorts.

Subset pre-sorting questionnaire for factor 3:

pre_f3 <- pre.question[results$flagged[, 3], ]

The participants that loaded on factor 3 were on average 34.25 years old and 2 of them were female and 2 male. They were teaching on average 5 hours a week.

Faculty:

table(pre_f3[4])
## 
##   FB4   FB6   FB7 Other 
##     1     1     1     1

Position:

table(pre_f3[5])
## < table of extent 0 >

On average they had 6.375 years of experience with Moodle which was distributed as follows:

table(pre_f3[7])
## 
##   3 3.5   7  12 
##   1   1   1   1

Number of them who had experience with other platfoms:

table(pre_f3[8])
## 
##   Ja Nein 
##    2    2

And in detail:

table(pre_f3[9])
## 
## BSCW, OpenUss StudIP, Ilias 
##             1             1

Subset digital skills

digitalskills_f3 <- digitalskills[results$flagged[, 3], ]
likertdigital_f3 <- likert(digitalskills_f3)
sumdigital_f3 <- summary(likertdigital_f3)
kable(sumdigital_f3)
Item low neutral high mean sd
4 I am confident in using learning management systems (e.g. Moodle, Ilias or Blackboard). 0 0 100 5.00 0.000000
1 I am confident in using the office suite (e.g. word processing, spreadsheet or presentation software). 0 25 75 4.50 1.000000
3 I am familiar with audio / video editing software (e.g. Audacity or Premiere). 25 0 75 3.75 1.892969
5 I am familiar with content management systems (e.g. WordPress, Drupal or Joomla). 25 0 75 4.00 2.000000
7 I have the skills to use web 2.0 technologies (e.g. Wikis, Blogs or Podcasts). 25 0 75 3.75 1.892969
2 I am familiar with screen recording software (e.g. Camtasia). 50 0 50 3.25 2.061553
6 I am familiar with markup languages (e.g. HTML, XML or Markdown). 25 50 25 3.25 1.258306

Plot digital skills

plot(likertdigital_f3)

Subset personal innovativeness

inno_f3 <- inno[results$flagged[, 3], ]
likertinno_f3 <- likert(inno_f3)
suminno_f3 <- summary(likertinno_f3)
kable(suminno_f3)
Item low neutral high mean sd
If I heard about a new information technology, I would look for ways to experiment with it. 25 0 75 3.50 1.0000000
Among my peers, I am usually the first to try out a new information technology system. 25 0 75 4.00 1.4142136
In general, I am hesitant to try out new information technologies (reverse-scored). 25 25 50 3.25 0.9574271
I like to experiment with new information technologies. 0 50 50 3.75 0.9574271

Plot personal innovativeness

plot(likertinno_f3)

Subset user interface

userinterface_f3 <- userinterface[results$flagged[, 3], ]
likertinterface_f3 <- likert(userinterface_f3)
suminterface_f3 <- summary(likertinterface_f3)
kable(suminterface_f3)
Item low neutral high mean sd
3 The overall user interface design of Moodle is satisfactory. 0 0 100 4.00 0.0
2 The layout of Moodle is in good structure. 0 25 75 3.75 0.5
1 The layout of Moodle is user-friendly. 0 75 25 3.25 0.5

Plot user interface

plot(likertinterface_f3)

Subset perceived usefulness

useful_f3 <- useful[results$flagged[, 3], ]
likertuseful_f3 <- likert(useful_f3)
sumuseful_f3 <- summary(likertuseful_f3)
kable(sumuseful_f3)
Item low neutral high mean sd
Using Moodle increases the quality of my educational work. 0 0 100 4.75 0.5000000
Using Moodle helps me in being more productive in my educational work. 0 0 100 4.75 0.5000000
Using Moodle makes me a more productive teacher. 0 0 100 4.50 0.5773503
Overall, Moodle is useful in performing my educational work. 0 0 100 4.50 0.5773503

Plot perceived usefulness

plot(likertuseful_f3)

Subset user satisfaction

satisfaction_f3 <- satisfaction[results$flagged[, 3], ]
likertsatisfaction_f3 <- likert(satisfaction_f3)
sumsatisfaction_f3 <- summary(likertsatisfaction_f3)
kable(sumsatisfaction_f3)
Item low neutral high mean sd
I am satisfied with the experience of using Moodle. 0 0 100 4.0 0.0000000
I think that I did the right thing when I decided to use Moodle. 0 0 100 4.5 0.5773503
I am satisfied with my decision to use Moodle. 0 0 100 5.0 0.0000000
I am very satisfied with the services provided by Moodle. 0 0 100 4.0 0.0000000
My decision to use Moodle was a wise one. 0 0 100 4.5 0.5773503

Plot user satisfaction

plot(likertsatisfaction_f3)

The following table shows a summary of the scales for factor 3:

Scale Mean
Personal innovativeness 3.625
User interface 3.6666667
Perceived usefulness 4.625
User satisfaction 4.4

Subset course metadata:

course_meta_f3 <- course.meta[results$flagged[, 3], ]

The average course size was 186.75 and the median was at 16.5. The smallest course consisted of 14 students and the biggest of 700 students. The following boxplot shows the course size:

boxplot(course_meta_f3[2])

The performance assessment was distributed as follows:

table(course_meta_f3[3])
## 
## Assignment       Exam 
##          3          1

The type of course was distributed as follows:

table(course_meta_f3[4])
## 
## Lecture Seminar 
##       1       3

The sort of course management was distributed as follows:

table(course_meta_f3[5])
## 
## Alone 
##     4

Cards distrbution:

cards.distro_f3 <- cards.distro[results$flagged[, 3], ]
melted.cards_f3 <- melt(cards.distro_f3)
## Using Participant as id variables
ggplot(melted.cards_f3, aes(x = variable, y = value)) + geom_boxplot()

On average 21.5 were sorted as unimportant, 4.5 were sorted as neurtal and 15 were sorted as important.

Scores sorted for factor 3:

scores[order(scores$zsc_f3, decreasing = T), ]
##                             zsc_f1 fsc_f1 zsc_f2 fsc_f2 zsc_f3 fsc_f3
## workshop                     -0.75     -2  -1.24     -3   2.09      5
## portfolio                    -0.65     -1  -0.66     -1   1.58      4
## database                      0.69      2  -1.19     -2   1.55      4
## forum                         1.53      3   1.34      3   1.22      3
## label                         0.60      1   0.55      1   1.18      3
## announcements                 1.57      4   1.34      2   1.17      3
## literature-database          -0.48     -1  -0.64     -1   1.15      2
## folder                        0.50      1   0.35      1   1.12      2
## wiki                         -0.06      0  -0.48     -1   0.92      2
## assignment-in-database        0.66      2  -1.41     -4   0.88      2
## questionnaire                 0.15      0  -0.48     -1   0.66      2
## appointment-choice           -1.13     -3  -1.27     -3   0.61      1
## url                           1.05      2   1.00      2   0.47      1
## file                          2.53      5   1.40      3   0.46      1
## glossary                     -0.76     -2   0.32      1   0.46      1
## feedback                      0.23      1  -0.13      0   0.39      1
## learning-diary               -0.86     -2  -1.66     -5   0.28      1
## visibility                    1.17      3   1.34      3   0.28      0
## quiz                         -0.33      0   1.83      5   0.26      0
## completion-tracking          -1.48     -4   1.04      2   0.06      0
## page                          0.14      0   0.64      1  -0.08      0
## choice                        0.29      1  -0.54     -1  -0.10      0
## groups                        1.46      3  -0.20      0  -0.13      0
## conditional-availability     -0.22      0   1.03      2  -0.16      0
## badges                       -1.73     -4   1.71      4  -0.18     -1
## signup-database               0.72      2  -0.71     -2  -0.22     -1
## lesson                       -0.94     -2   1.40      4  -0.24     -1
## assignment                    1.72      4   1.06      2  -0.27     -1
## grades                       -0.34     -1   0.79      1  -0.58     -1
## group-choice                  0.70      2  -0.42     -1  -0.62     -1
## book                         -1.34     -3  -0.01      0  -0.83     -2
## calendar                     -0.66     -1  -0.78     -2  -0.92     -2
## topic-choice                  0.10      0  -1.39     -3  -0.94     -2
## lecture-recordings            0.27      1  -0.05      0  -1.08     -2
## grades-in-database           -1.06     -3  -1.52     -4  -1.22     -2
## embed-page                   -0.79     -2  -0.16      0  -1.27     -3
## link-sciebo                  -0.69     -1  -0.29      0  -1.28     -3
## library-resources            -0.47     -1  -0.94     -2  -1.50     -3
## fair-allocation              -0.02      0  -1.06     -2  -1.61     -4
## rights-management-in-course   0.51      1   0.11      1  -1.71     -4
## chat                         -1.84     -5  -0.02      0  -1.84     -5

Statements distinguishing factor 3 are:

results$qdc[which(results$qdc$dist.and.cons == "Distinguishes f3 only"), ]
##                                     dist.and.cons        f1_f2 sig_f1_f2
## appointment-choice          Distinguishes f3 only  0.142127116          
## folder                      Distinguishes f3 only  0.153365153          
## lecture-recordings          Distinguishes f3 only  0.322694049          
## link-sciebo                 Distinguishes f3 only -0.400046707          
## literature-database         Distinguishes f3 only  0.165518152          
## portfolio                   Distinguishes f3 only  0.007855565          
## rights-management-in-course Distinguishes f3 only  0.393711309          
## visibility                  Distinguishes f3 only -0.175559327          
## wiki                        Distinguishes f3 only  0.428793596          
## workshop                    Distinguishes f3 only  0.492033322          
##                                  f1_f3 sig_f1_f3      f2_f3 sig_f2_f3
## appointment-choice          -1.7350186      **** -1.8771457      ****
## folder                      -0.6161878         * -0.7695529         *
## lecture-recordings           1.3583076       ***  1.0356136        **
## link-sciebo                  0.5965394         *  0.9965861        **
## literature-database         -1.6253010      **** -1.7908192      ****
## portfolio                   -2.2279154      **** -2.2357710      ****
## rights-management-in-course  2.2155354      ****  1.8218241      ****
## visibility                   0.8912013        **  1.0667606        **
## wiki                        -0.9754762       *** -1.4042698       ***
## workshop                    -2.8348664      **** -3.3268998      ****

Subset feedback for factor 3:

f3.feedback <- q.feedback[, results$flagged[, 3]]
f3.feedback <- f3.feedback[rowSums(is.na(f3.feedback)) != ncol(f3.feedback), 
    ]
f3.feedback <- f3.feedback[, colSums(is.na(f3.feedback)) != nrow(f3.feedback)]
kable(f3.feedback)
Acineth_26bfa05e Gwendolyn_a896d60a Kendra_287fb81 Shaaheen_2dbbe518
calendar NA NA I didn’t need this before. NA
chat NA NA Chat is a bit out. I think communication is easier in direct contact.
database NA NA I prefer using the database over the assignment, because they are not only doing the assignment for me but for the whole course and with database the students can access the other students assignments. It is a learning reflexion that is predefined in a database.
embed-page NA NA NA This is not so important for me because if I have files I just manually upload those if I think they are important.
fair-allocation I used it sometimes to distribute a course of 700 students into smaller courses. That does not make sense for the seminar size. NA NA
feedback NA NA For me as a instructor it is easier when I have it written. Because I often have the feeling that the students express more online then they would in a face to face talk. NA
forum NA The forum is used as study diary where the students can give feedback to enteries. I gave every student a seperate forum to communicate with me. NA
groups NA NA I gave every student a seperate forum to communicate with me. NA
label If I upload a text file it already has a name. NA NA NA
learning-diary NA The forum is used as study diary where the students can give feedback to enteries. NA NA
lecture-recordings The lecture recordings are what the students want to have the most, so it is the most important. There are just a few students and no exam so it does not make sense. NA NA
library-resources NA NA NA I didn’t use that.
literature-database NA NA We use this so that the students can see what the other students are doing. NA
portfolio I do not know what they are doing with a portfolio. NA NA It is a learning reflexion that is predefined in a database.
rights-management-in-course NA NA Role assignment I don’t need in this course because it is a small course that I manage myself. NA
topic-choice NA The students can choose their themes themselves. NA NA
workshop The workshop is not relevant for my course because the course is too big. NA The students provided feedback to each other based on a provided template in preparation for a meeting. It is important to me that the students get a template which they use to write their concept. While they are writing a first concept they can also see what other students are writing.

Subset interview data:

interview_f3 <- interview[results$flagged[, 3], ]

Missing functionalities:

missing_f3 <- interview_f3[1:3]
kable(missing_f3)
Participant Are you missing any functionalities or appropriations? If any are missing, which ones?
Acineth_26bfa05e yes Anonymous survey +3
Gwendolyn_a896d60a yes Moderne Portfolio +4, Individual projectmanagement +4
Kendra_287fb81 no NA
Shaaheen_2dbbe518 yes Annotating video +1, Etherpad +3, Blog (Wordpress) +4, Adobe Connect +4, Automated Emails +5

New functionalities:

new_f3 <- interview_f3[c(1, 4:5)]
kable(new_f3)
Participant Were there any for you new functionalities among the items you sorted that you might be interested in using now? If any are new and interesing, which ones?
Acineth_26bfa05e no NA
Gwendolyn_a896d60a yes Workshop
Kendra_287fb81 yes Time based visibility
Shaaheen_2dbbe518 yes Calendar

Comparison of the factors

Scale Overall Mean Mean F1 Mean F2 Mean F3
Personal innovativeness 3.7619048 3.8055556 3.55 3.625
User interface 3.8571429 4.037037 3.5333333 3.6666667
Perceived usefulness 4.3214286 4.3333333 3.9 4.625
User satisfaction 4.4190476 4.4222222 4.24 4.4

Comparing the scales to see if there is a difference between the factors using the Kruskal-Wallis test (Kruskal and Wallis 1952):

Compare personal innovativeness:

numinnof1 <- as.matrix(as.data.frame(lapply(inno_f1, as.numeric)))
numinnof2 <- as.matrix(as.data.frame(lapply(inno_f2, as.numeric)))
numinnof3 <- as.matrix(as.data.frame(lapply(inno_f3, as.numeric)))
kruskal.test(list(numinnof1, numinnof2, numinnof3))
## 
##  Kruskal-Wallis rank sum test
## 
## data:  list(numinnof1, numinnof2, numinnof3)
## Kruskal-Wallis chi-squared = 1.2363, df = 2, p-value = 0.5389

Compare user interface:

numinterf1 <- as.matrix(as.data.frame(lapply(userinterface_f1, as.numeric)))
numinterf2 <- as.matrix(as.data.frame(lapply(userinterface_f2, as.numeric)))
numinterf3 <- as.matrix(as.data.frame(lapply(userinterface_f3, as.numeric)))
kruskal.test(list(numinterf1, numinterf2, numinterf3))
## 
##  Kruskal-Wallis rank sum test
## 
## data:  list(numinterf1, numinterf2, numinterf3)
## Kruskal-Wallis chi-squared = 7.2403, df = 2, p-value = 0.02678

Compare perceived usefulness:

numusef1 <- as.matrix(as.data.frame(lapply(useful_f1, as.numeric)))
numusef2 <- as.matrix(as.data.frame(lapply(useful_f2, as.numeric)))
numusef3 <- as.matrix(as.data.frame(lapply(useful_f3, as.numeric)))
kruskal.test(list(numusef1, numusef2, numusef3))
## 
##  Kruskal-Wallis rank sum test
## 
## data:  list(numusef1, numusef2, numusef3)
## Kruskal-Wallis chi-squared = 3.3504, df = 2, p-value = 0.1873

Compare user satisfaction:

numsatf1 <- as.matrix(as.data.frame(lapply(satisfaction_f1, as.numeric)))
numsatf2 <- as.matrix(as.data.frame(lapply(satisfaction_f2, as.numeric)))
numsatf3 <- as.matrix(as.data.frame(lapply(satisfaction_f3, as.numeric)))
kruskal.test(list(numsatf1, numsatf2, numsatf3))
## 
##  Kruskal-Wallis rank sum test
## 
## data:  list(numsatf1, numsatf2, numsatf3)
## Kruskal-Wallis chi-squared = 0.59366, df = 2, p-value = 0.7432

Only the difference in the user interface scale is significant at an alpha of .05.

Check which factor differs significantly on the user interface scale using the Dunn test (Dunn 1964):

posthoc.kruskal.dunn.test(list(numinterf1, numinterf2, numinterf3), p.adjust.method = "bonferroni")
## Warning in posthoc.kruskal.dunn.test.default(list(numinterf1, numinterf2, :
## Ties are present. z-quantiles were corrected for ties.
## 
##  Pairwise comparisons using Dunn's-test for multiple 
##                          comparisons of independent samples 
## 
## data:  list(numinterf1, numinterf2, numinterf3) 
## 
##   1    2   
## 2 0.04 -   
## 3 0.20 1.00
## 
## P value adjustment method: bonferroni

Factor 1 differs significantly.

Session Info

sessionInfo()
## R version 3.4.1 (2017-06-30)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Arch Linux
## 
## Matrix products: default
## BLAS: /usr/lib/libblas.so.3.7.1
## LAPACK: /usr/lib/liblapack.so.3.7.1
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=de_DE.UTF-8        LC_COLLATE=en_US.UTF-8    
##  [5] LC_MONETARY=de_DE.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=de_DE.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=de_DE.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] bindrcpp_0.2    PMCMR_4.1       likert_1.3.5    xtable_1.8-2   
##  [5] reshape2_1.4.2  nFactors_2.3.3  lattice_0.20-35 boot_1.3-19    
##  [9] psych_1.7.5     MASS_7.3-47     qmethod_1.5.2   magrittr_1.5   
## [13] stringr_1.2.0   dplyr_0.7.2     purrr_0.2.2.2   readr_1.1.1    
## [17] tidyr_0.6.3     tibble_1.3.3    ggplot2_2.2.1   tidyverse_1.1.1
## [21] knitr_1.16     
## 
## loaded via a namespace (and not attached):
##  [1] haven_1.1.0           colorspace_1.3-2      htmltools_0.3.6      
##  [4] yaml_2.1.14           rlang_0.1.1           foreign_0.8-69       
##  [7] glue_1.1.1            modelr_0.1.1          readxl_1.0.0         
## [10] bindr_0.1             plyr_1.8.4            GPArotation_2014.11-1
## [13] munsell_0.4.3         gtable_0.2.0          cellranger_1.1.0     
## [16] rvest_0.3.2           evaluate_0.10.1       labeling_0.3         
## [19] forcats_0.2.0         parallel_3.4.1        highr_0.6            
## [22] broom_0.4.2           Rcpp_0.12.12          formatR_1.5          
## [25] scales_0.4.1          backports_1.1.0       jsonlite_1.5         
## [28] gridExtra_2.2.1       mnormt_1.5-5          hms_0.3              
## [31] digest_0.6.12         stringi_1.1.5         grid_3.4.1           
## [34] rprojroot_1.2         tools_3.4.1           lazyeval_0.2.0       
## [37] pkgconfig_2.0.1       xml2_1.1.1            lubridate_1.6.0      
## [40] assertthat_0.2.0      rmarkdown_1.6         httr_1.2.1           
## [43] R6_2.2.2              nlme_3.1-131          compiler_3.4.1

References

Cattell, Raymond B. 1966. “The Scree Test for the Number of Factors.” Multivariate Behavioral Research 1 (2): 245–76. doi:10.1207/s15327906mbr0102_10.

Dunn, Olive Jean. 1964. “Multiple Comparisons Using Rank Sums.” Technometrics 6 (3): 241–52. doi:10.1080/00401706.1964.10490181.

Ebbert, Daniel. 2017. “Patterns in the appropriation of a learning management system by instructors based on Q-methodology: Dataset.” doi:10.5281/zenodo.835415.

Guttman, Louis. 1954. “Some necessary conditions for common-factor analysis.” Psychometrika 19 (2): 149–61. doi:10.1007/BF02289162.

Horn, John L. 1965. “A rationale and test for the number of factors in factor analysis.” Psychometrika 30 (2): 179–85. doi:10.1007/BF02289447.

Kaiser, Henry F. 1960. “The Application of Electronic Computers to Factor Analysis.” Educational and Psychological Measurement 20 (1): 141–51. doi:10.1177/001316446002000116.

Kaiser, Henry F. 1970. “A second generation little jiffy.” Psychometrika 35 (4): 401–15. doi:10.1007/BF02291817.

Kruskal, William H., and W. Allen Wallis. 1952. “Use of Ranks in One-Criterion Variance Analysis.” Journal of the American Statistical Association 47 (260): 583–621. doi:10.1080/01621459.1952.10483441.

Raîche, Gilles, Theodore A. Walls, David Magis, Martin Riopel, and Jean-Guy Blais. 2013. “Non-Graphical Solutions for Cattell’s Scree Test.” Methodology 9 (1): 23–29. doi:10.1027/1614-2241/a000051.

Zabala, Aiora. 2014. “qmethod: A Package to Explore Human Perspectives Using Q Methodology.” The R Journal 6 (2): 163–73.