0 votes
in SoSci Survey (dt.) by s154461 (150 points)
edited by SoSci Survey

Guten Tag!
Mithilfe einer Urne möchte ich Berufsbezeichnungen ziehen lassen, welche ich in einem array anlegen würde (es sind mehr als 300 Berufe).
Anschließend soll die zufällig gezogene Berufsbezeichnung in einer angelegten Frage mit Platzhalter eingebettet werden. Insgesamt sollen 50 Ziehungen (ohne zurücklegen) innerhalb des Fragebogens aus dieser Urne stattfinden.

Momentan sieht mein PHP Code folgendermaßen aus:

$berufe=array(
1    =>    'Film-, Fernsehkamera Studienfach',
2    =>    'Film-und Fernsehproduktion Studienfach',
3    =>    'Gesang Studienfach',
4    =>    'Tanz (Ausbildung oder Studienfach)',
5    =>    'Regie Studienfach',
// ... hier folgen theoretisch zig weitere Berufe
);

// -> weiterer PHP Code:

urnDraw('urne','IV01');
$code = value('IV01_01');

$be = $berufe[$code];

replace('%berufe%', $be);

///  ->  ein weiterer PHP Code:

show('B138');
question('B139');

// In der Question B139 ist ein Platzhalter %berufe% der eigentlich gefüllt werden sollte mit dem gezogenen Beruf aus der Urne - funktioniert aber nicht!!

Fehlermeldungen sind folgende:

Für die Funktion replace() wurden nicht ausreichend Argumente angegeben, 2 Argumente sind zwingend erforderlich.
Fehler im Fragebogen: Die PHP-Variable $berufe wurde verwendet, in diesem PHP-Code aber noch nicht definiert (sie enthält noch keinen Wert).

Debug-Information für $code:
$code = 2 (string)
Debug-Information für $be:
Keine Daten (null)

Für den Platzhalter %berufe% wurde weder ein Eingabefeld mit prepare_input() vorbereitet, noch ein Inhalt mit replace() festgelegt.

by SoSci Survey (306k points)
> Mithilfe einer Urne möchte ich Berufsbezeichnungen ziehen lassen, welche ich in einem array anlegen würde

Dazu erstmal eine Rückfrage: Warum soll es eine Urne sein und kein Zufallsgenerator? Letzterer ist in der Anwendung in aller Regel deutlich einfacher.
by SoSci Survey (306k points)
Sie scheinen im Code noch debug()-Zeilen eingefügt zu haben. Das ist sinnvoll, aber da Sie diese nicht in Ihrem Code-Beispiel oben ausgewiesen haben, kann ich die Ausgabe nicht genau beurteilen.

Meine erste Vermutung wäre, dass die Definition des Arrays $berufe und der anschließende PHP-Code nicht im selben PHP-Code-Block stehen. Allerdings sollte dann noch eine Fehlermeldung angezeigt werden?
by s154461 (150 points)
Ich habe mich auch an einem Zufallsgenerator versucht, aber wesentlich mehr Fehlermeldungen bekommen:

1. Zufallsgenerator mit 100 Berufen angelegt ('R101')
2. PHP Code:

// Code auslesen
$code = value('R101');
$label = value('R101', 'label');

replace('%berufe%', 'R101', 'response');

show('B138');
question('B139'); // in dieser Frage soll der Platzhalter mit dem gezogenen Beruf ausgetauscht werden
debug($code);
debug($label);
------------------
Fehlermeldungen:
(3x) Die Variable R101 gibt es in diesem Projekt nicht (siehe Variablen-Übersicht). Daher kann kein Antwort-Wert dafür ermittelt werden.

Für den Platzhalter %berufe% wurde weder ein Eingabefeld mit prepare_input() vorbereitet, noch ein Inhalt mit replace() festgelegt.

Debug-Information für $code:
$code = (string)
Debug-Information für $label:
$label = (string)
by s154461 (150 points)
Ihre Vermutung war richtig! Ich hatte mehrere PHP-Code Blocks.
Die erste Seite funktioniert jetzt auch.
Wenn ich auf der zweiten Seite wieder einen PHP-Code Block erstelle mit dem gleichen array (weil ich ja mehrere Berufe abfragen möchte):

$berufe=array(
1    =>    'Film-, Fernsehkamera Studienfach'    ,
2    =>    'Film-und Fernsehproduktion Studienfach'    ,
3    =>    'Gesang Studienfach'    ,
4    =>    'Tanz (Ausbildung oder Studienfach)'    ,
5    =>    'Regie Studienfach'    ,
// (...)
);

// Eine dieser Berufe wird per Zufall ausgewählt
shuffle($berufe);
urnDraw('urne','IV01');
$code = value('IV01_01');

$be = $berufe[$code];
// Die Bezeichnung der Marke wird nun im Platzhalter %berufe% abgelegt
replace('%berufe%', $be);
debug($code);
debug($be);

-------------- Fehlermeldungen:
Debug-Information für $code:
$code = 1 (string)
Debug-Information für $be:
$be = Film-, Fernsehkamera Studienfach (string)

Eine oder mehrere Variablen (B139_01, B139_02, B139_03, B139_04, B139_05, B139_06) wurden bereits auf Seite 5 abgefragt. Bitte beachten Sie, dass die Antworten von Seite 5 hier angezeigt und anschließend überschrieben werden. Falls Sie eine gleichartige Frage mehrfach benötigen, erstellen Sie eine Kopie der Frage.

-> wie kann ich 50 Berufe (randomisiert) nacheinander am besten abfragen und gleichzeitig die jeweiligen Antworten speichern?

Vielen Dank für Ihre Unterstützung!
by SoSci Survey (306k points)
Zum Zufallsgenerator

> (3x) Die Variable R101 gibt es in diesem Projekt nicht

Wenn Sie nur einen Beruf aus den 100+ pro Interview ziehen möchten, dann geben Sie im Zufallsgenerator an, dass nur ein Zettel gezogen werden soll.

Wenn Sie mehrere ziehen möchten, dann bekommt jeder einen eigenen Variablennamen. Die Namen finden Sie in der Variablen-Übersicht.

> ... weil ich ja mehrere Berufe abfragen möchte ...

Dann kommen Sie mit der Urne ohnehin nicht weiter, denn diese kann (wenn mehrere Interviews parallel laufen) im Prinzip auch mehrfach denselben Beruf ziehen. Dann also besser gleich zum Zufallsgenerator.

> Eine oder mehrere Variablen (B139_01, B139_02, B139_03, B139_04, B139_05, B139_06) wurden bereits auf Seite 5 abgefragt.

Falls Sie aus einer Urne mehrfach ziehen wollten (was Sie nicht wollen!), dann müssten Sie die Ziehung jedesmal in eine andere interne Variable-Frage speichern. Mehrere Variablen innerhalb einer interne Variable-Frage funktionieren da nicht, weil urnDraw() das für Ziehungen von Kombinationen vorsieht. Bei Interesse können Sie das in der Anleitung nachlesen, aber die Kurzfassung ist: Sie brauchen den Zufallsgenerator.
by s154461 (150 points)
Vielen Dank! Ich versuche einen Fragebogen zu erstellen, welcher pro Interviewer 50 Berufe anzeigt, welche bewerten werden können. Ich weiß zwar, dass ich im  Zufallsgenerator auswählen kann, wie viele Ziehungen er machen soll, aber wie kann ich im Fragebogen die 50 Berufe (welche jeweils auf einer Seite abgefragt werden) anzeigen lassen? Muss ich 50 Variablen anlegen? Also interne Variablen?
by SoSci Survey (306k points)
> aber wie kann ich im Fragebogen die 50 Berufe (welche jeweils auf einer Seite abgefragt werden) anzeigen lassen?

Welches Datenformat brauchen Sie denn am Ende für die Auswertung? 300+ Variablen pro Fall (eine pro Beruf, wide format) oder 50 Datenzeilen pro Interview (long format)?
by s154461 (150 points)
Ich denke ein wide format. Ein Teilnehmer soll bis zu 50 Berufe bewerten können. Am Ende der Befragung sollen insgesamt alle 300+ Berufe von so vielen Teilnehmern wie möglich bewertet worden sein.
by SoSci Survey (306k points)
Bitte klären Sie dieses "ich denke" nachhaltig in Hinblick darauf, wie Sie welche Auswertungen rechnen. Diese Entscheidung hat wesentlichen Einfluss auf die technische Umsetzung und kann später nicht einfach geändert werden.

> von so vielen Teilnehmern wie möglich

Das klingt nicht nach einer gründlichen Power-Analyse im Vorfeld... Sie sollten sich unbedingt im Vorfeld klar darüber sein, wie viele Befragte Sie benötigen, um die Ziele des Forschungsprojekts zu erreichen.
by s154461 (150 points)
Es ist ein Befragungsprojekt. Kein experimentelles Design. Wir versuchen eine Einschätzung von 300+ Berufen umzusetzen. Wir werden aber sicherlich bei der ersten Befragungsrunde ein paar Berufe haben, die wahrscheinlich kaum Bewertungen bekommen werden. Aber das ist ok.
Die Befragten sollen zu den Berufen eine Bewertung machen, welche Sie auch bewerten können. Dazu müssen Sie genügend Berufsvorschläge (50) bekommen, welche Sie bewerten oder mit (NEIN) nicht bewerten müssen.
Wir werden versuchen 200 Teilnehmer zu bekommen, die dann jeweils 50 Berufe zum Bewerten vorgeschlagen bekommen. Auf jeden Fall wollen wir am Ende der Befragung zu allen 300+ Berufen die Bewertungen evaluieren. Vielen Dank
by s154461 (150 points)
Die Frage ist jetzt, wie der PHP-Code Baustein aussehen muss, welcher nach dem Zufallsgenerator folgen müsste. Im Zufallsgenerator würde ich dann die 300+ Berufe hinterlegen. Außerdem möchte ich, dass auf der nächsten Fragebogenseite wieder ein erneuter Beruf gezogen und abgespeichert wird usw. für 50 Berufe.
Ich hoffe sehr, dass Sie mir weiterhelfen können!
by SoSci Survey (306k points)
Nun, ich hatte Ihnen oben schon geschrieben: Klären Sie vorab, wie und mit welchen Variablen Sie Ihre Auswertung durchführen möchten. Wenn Sie dann sicher (!) wissen, ob Sie die Daten im wide (s. oben) oder im long format benötigen, dann kann ich Ihnen Empfehlungen zur Umsetzung geben.

> Es ist ein Befragungsprojekt. Kein experimentelles Design.

Das ändert nichts daran, dass man eine Basis für die Einschätzung haben sollte, wann man genug Personen befragt hat. Es gibt ja durchaus Formeln für Stichprobenfehler und Konfidenzintervalle.
by s154461 (150 points)
Ich benötige ein wide format (300+ Variablen pro Fall).

1 Answer

0 votes
by SoSci Survey (306k points)
edited by SoSci Survey

Ich benötige ein wide format (300+ Variablen pro Fall).

In Ordnung, dann ist meine Empfehlung wie folgt:

Legen Sie 4 Fragen zur Bewertung der Berufe an, ich nenne diese mal BB01 bis BB04. Frage 1 beinhaltet die Berufe 1-90, Frage 2 die Berufe 91-180 u.s.w. Je nachdem, welche Bewertung Sie benötigen könnte sich der Fragetyp "Skala (mit Zwischwerten)" anbieten, in welchem Sie die Darstellung so konfigurieren, dass die Skala mittig unter dem Itemtext angezeigt wird.

Für die Anzeige der 50 Berufe müssen Sie aus dem Berufs-Code (z.B. 1 bis 320) nur noch Frage und Item-Nummer ableiten. Das funktioniert z.B. wie folgt:

if ($beruf > 270) {
  $frage = 'BB04';
  $item = $beruf - 270;
} elseif ($beruf > 180) {
  $frage = 'BB03';
  $item = $beruf - 180;
} elseif ($beruf > 90) {
  $frage = 'BB02';
  $item = $beruf - 90;
} else {
  $frage = 'BB01';
  $item = $beruf;
}

Das ließe sich auch eleganter bauen, aber ich denke, so ist es halbwegs verständlich. Warum nur 90 Items pro Frage und nicht 99? Weil es einen Tick übersichtlicher ist.

So, jetzt müssen wir nur noch die im Zufallsgenerator RG50 gezogenen 50 berufe auf jeweils einer einzelnen Seite abrufen. Also kommt unter den Zufallsgenerator folgender PHP-Code.

$ziehungen = valueList('RG01');
$beruf = loopPage($ziehungen);

// Jetzt der Code von oben
if ($beruf > 270) {
  $frage = 'BB04';
  $item = $beruf - 270;
} elseif ($beruf > 180) {
  $frage = 'BB03';
  $item = $beruf - 180;
} elseif ($beruf > 90) {
  $frage = 'BB02';
  $item = $beruf - 90;
} else {
  $frage = 'BB01';
  $item = $beruf;
}

// Und jetzt noch den Beruf abfragen
question($frage, [$item]);

Das ist alles. Nur eine Seite im Fragebogen.

by s154461 (150 points)
Guten Morgen! Danke für Ihre Empfehlung!
Leider hat der Fragebogen ein Problem mit der loop Funktion:
Fehlermeldung: Fehler im Fragebogen: Im PHP-Code wurde in Zeile 4 eine Funktion loop() verwendet. Es gibt diese Funktion nicht.
by SoSci Survey (306k points)
Pardon, es müsste natürlich loopPage() heißen, ich habe das oben korrigiert.
by s154461 (150 points)
Kein Problem. Leider ist der Fragebogen trotzdem noch nicht zufrieden. Ich muss noch den Platzhalter der in der Abfrage (jetzt 4 Fragen, wegen der Aufteilung) enthalten ist, einbauen und funktionstüchtig machen.
Zudem wird die Frage nicht komplett angezeigt, sondern nur der erste Regler von 5. (Die Abfrage eines Berufes erfolgt mit einem Schieberegler Fragentyp welcher 5 Regler enthält)
by SoSci Survey (306k points)
Diese Lösung ist darauf ausgelegt, dass Sie ein Item pro Beruf haben (verteilt auf 4 Fragen à 90 Items=Berufe) - wenn Sie mehr Items haben, müssen Sie entweder 5 Fragen machen (eine pro Bewertungsdimension) oder (aber davon würde ich dringend abraten) 300 Kopien der Fragen anlegen.

Wie schon gesagt ... die Frage der Variablenstruktur ist für eine Erhebung, wie von Ihnen geplant, entscheidend.
by s154461 (150 points)
Was würden Sie mir denn raten? Ich würde gerne den Schieberegler mit den 5 Items/ Reglern in einer Frage belassen.  Es gibt dementsprechend 5 zu speichernde Werte pro Beruf.

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...