Kapitel 60 Fragen mit Mehrfachantworten
Bei Multiple Choice Fragen haben wir zwei Möglichkeiten:
- Nur eine Antwort kann gewählt werden
- Mehr als eine Antwort kann gewählt werden
Für die Datenzubereitung ist dies nicht immer ganz trivial.
Eine sehr gute Übersicht - zwar für Stata - finden Sie hier.
Wir werden versuchen, die Datenzubereitung und Datenanalyse hier auzuzeigen.
60.0.1 Folgende Pakete benötigen wir:
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tidyr)
60.1 Beispiel 1
Wir haben folgende Frage: Welche Statistikprogramme benutzen Sie?Wir simulieren ein paar Daten
set.seed(666)
=120
samplesize=sample(c(0,1), size=samplesize, rep=TRUE, prob=c(0.8,0.2))
Stata=sample(c(0,1), size=samplesize, rep=TRUE, prob=c(0.6,0.2))
R=sample(c(0,1), size=samplesize, rep=TRUE, prob=c(0.9,0.1))
SPSS
=sample(c(0,1), size=samplesize, rep=TRUE, prob=c(0.99,0.01))
SAS=sample(c(0,1), size=samplesize, rep=TRUE, prob=c(0.95,0.05))
Jamovi=sample(c(0,1), size=samplesize, rep=TRUE, prob=c(0.99,0.01))
JASP<-1:samplesize
id
<-data.frame(id, Stata, R, SPSS, SAS, Jamovi, JASP) data
Jetzt gibt es verschiedene Möglichkeiten diese Daten zu analysieren. siehe auch hier.
- dplyr::summarise Ansatz
- Paket ufs mit dem Befehl multiResponse
Für den dplyr::sumarise Ansatz müssen wir die Daten zuerst zum langen Format transformieren.
<-data %>%
data_longpivot_longer(cols=-c(id),
names_to="Software",
values_to="Using")
Nun können wir die Daten relativ einfach zusammenfassen.
<-data_long %>%
table_multiresponsegroup_by(Software, Using) %>%
summarise(n=n()) %>%
mutate(Prozente=round(n / sum(n)*100,1)) %>%
filter(Using==1)
## `summarise()` has grouped output by 'Software'. You can override using the
## `.groups` argument.
Etwas schwieriger wird es, wenn ein Teil der Studienteilnehmer diese Frage gar nicht beantwortet. Um das zu illustrieren, entfernen wir ein paar Antworten.
<-data %>%
datamutate(across(c( "Jamovi", "JASP", "R",'Stata', 'SAS', 'SPSS'), ~replace(., id>80 , NA)))
::multiResponse(data, c( "Jamovi", "JASP", "R",'Stata', 'SPSS')) ufs
## Option Frequency Percentage of responses Percentage of (80) cases
## 1 Jamovi 2 4 2.50
## 2 JASP 1 2 1.25
## 3 R 16 32 20.00
## 4 Stata 20 40 25.00
## 5 SPSS 11 22 13.75
## 6 Total 50 100 62.50
Manchmal werden die Daten als Komposit-String exportiert.
<-data %>%
datamutate(Kompositstring_numeric=paste(Stata, R, SPSS, SAS, Jamovi,JASP, sep=";" ))
head(data)
## id Stata R SPSS SAS Jamovi JASP Kompositstring_numeric
## 1 1 0 0 0 0 0 0 0;0;0;0;0;0
## 2 2 0 0 0 0 0 0 0;0;0;0;0;0
## 3 3 1 0 0 0 0 0 1;0;0;0;0;0
## 4 4 0 1 0 0 0 0 0;1;0;0;0;0
## 5 5 0 0 0 0 0 0 0;0;0;0;0;0
## 6 6 0 0 0 0 0 0 0;0;0;0;0;0
So, das war’s für dieses Kapitel.