0 votes
in Datenauswertung by s149335 (355 points)

Hallo liebe SoSci-Survey Community,

in meinem Ergebnisbericht kann ich die Funktion "statistic" nicht verwenden, die hier dokumentiert ist:
https://www.soscisurvey.de/help/doku.php/de:create:functions:statistic#teildatensaetze_auswerten

Folgender Fehlercode kommt:
Im PHP-Code wurde in Zeile 8 eine Funktion statistic() verwendet. Es gibt diese Funktion nicht.

Kann diese Funktion freigeschaltet werden?

Vielleicht gibt es aber auch eine Alternative für meine Problemstellung.

Ich möchte
Datensatz A aus Fragebogen 1 laden, bei dem eine Variable == "ALPHA" ist.
alle Datensätze B,C,D,E (eins bis vier) aus Fragebogen 2 laden, bei denen eine bestimmte Variable == "ALPHA" ist.

Es befindet sich alles in einem Projekt.

Also quasi soetwas wie ein "JOIN" im relationalen Datenbank-Kontext und dann eine bestimmte PDF-Generierung mit SVG-Grafiken anhand der Daten erstellen.

Welche PHP-Funktionen kann ich verwenden, um das @SoSci-Survey umzusetzen? Ist "statistic()" der richtige Ansatz?

Viele Grüße

by SoSci Survey (302k points)
Wir haben Ihre Frage nicht vergessen - aber wir müssen erstmal den technischen Hintergrund prüfen.

Was ist denn das Ziel dieses JOINs? Brauchen Sie das nur für einen einzelnen Fall oder möchten Sie in einer Auswertung einen JOIN aller möglichen Ausprägungen in Variable X abrufen? Ich frage deshalb, weil das mit statistic() zum einen recht langsam werden könnte und zum anderen, weil die Filterung nach String-Variablen dort nur sehr (!) eingeschränkt möglich ist.

Ginge es nur um eine begrenzte Anzahl von Gruppen, hätte ich über die Teilgruppen-Funktion (Teilgruppen für die Auswertung definieren) nachgedacht.
by s149335 (355 points)
Hallo, vielen Dank für die Antwort.

(1)
Ich versuche es mal zu erklären:
Es gibt einen Fragebogen "A". Dort sollen Personen beispielsweise die Eissorte "Vanille" bewerten (bspw. von 1-5)
Dann gibt es noch den Fragebogen "B", der jeweils von 4 Leuten ausgefüllt wird. Sie sollen auch "Vanille" bewerten (auch 1-5)

Aus dem Ergebnis von Fragebogen "A" soll dann grafisch (im Ergebnisbericht) 1-5 dargestellt werden, was der User ausgewählt hat und gleichzeitig soll angegeben werden, was die 4 Personen aus Fragebogen "B" im Durchschnitt angegeben haben. Denkbar ist auch eine Darstellung der einzelnen Werte jeweils aus Fragebogen "B". Das soll alles in einen Ergebnisbericht. Ziel ist es, im Ergebnisbericht nach "Vanille" zu filtern und die entsprechende Konstellation abzubilden.

Ganz am Anfang wird gefragt, um welche Eissorte es sich handelt. Bei der Planung soll immer die "1 zu 4" Konstellation eingehalten werden, also 1 Person Fragebogen "A" und 4 Personen Fragebogen "B". Das steuern wir über die vergabe der Seriennummern.

Die Variable, bei der man "Vanille" bewerten soll, unterscheidet sich bei Fragebogen "A" und "B". Der "Join" ist also dahingehend interessant, dass "Vanille" am Anfang in beiden Fragebögen ausgewählt wurde und man darüber dann die 5 Datensätze (1 "A" und 4 "B") im Ergebnisbericht verarbeiten kann. Idealerweise gibt man dann im Ergebnisbericht an, nach welcher Eissorte man den Ergebnisbericht erzeugen möchte.

(2)
Die Funktion ist weiterhin nicht verfügbar, gibt es denn eine Möglichkeit, dass ich "statistic()" für diese Zwecke ausprobieren könnte? Es wäre kein Problem, wenn es "länger" dauert, diese Ergebnisberichte sollen nur einmalig für eine 1-4 Konstellation erstellt werden.
by SoSci Survey (302k points)
Danke für die Erläuterung. Eine weitere Rückfrage: Geben Sie das "Vanille" in Fragebogen A vor (und sorgen dafür, dass dies nur durch eine einzelne oder bestimmte Personen bewertet wird) oder können die Befragten das selbst eintragen. Ich würde jetzt mal tippen, dass wir hier z.B. von dem Namen eines Vorgesetzten für ein 360°-Feedback sprechen - da würde man die Namen der Vorgesetzten ja i.d.R. schon per Adresseintrag vorgeben. Technisch wichtig ist aus meiner Sicht, ob es eine geschlossene Liste oder oder nicht.

Meine vorläufige Denkrichtung: Anstatt 100-mal die Funktion statistic() aufzurufen (einmal für jede Ausprägung) würde ich mit der Datenbank für Inhalte arbeiten. Dort würde ich z.B. die Ausprägung als Präfix verwenden und dann die Bewertungen direkt aus dem Interview heraus ablegen, also z.B.

Vanille-A / 1 / 6 / 3   <- Das wäre der Fragebogen A
Vanille-B264 / 2 / 5 / 2  <- Das wären die Daten aus Fragebogen B, CASE 264
Vanille-B269 / 1 / 5 / 1
Vanille-B273 / 3 / 4 / 4

Diese Daten ließe sich dann mittels dbList() in einem Rutsch abrufen, per PHP-Code in ein Array sortieren und in diesem Zuge gleich auswerten. Das wäre um ca. 2 Größenordnungen schneller als eine große Anzahl Aufrufe von statistic(), bei welchen je nach Konstellation jedes mal alle Datensätze geladen werden müssen.
by s149335 (355 points)
Danke für die Antwort,

in der Übersicht (https://www.soscisurvey.de/help/doku.php/de:create:functions) habe ich die Funktion `dbList()` leider nicht gefunden. Gibt es eine Dokumentation dafür? Wenn ich diese Funktion (mit oder ohne Parameter) verwenden will, wird diese auch nicht gefunden:

Im PHP-Code wurde in Zeile 1 eine Funktion dbList() verwendet. Es gibt diese Funktion nicht.

Genauso wie mit statistic:

Im PHP-Code wurde in Zeile 1 eine Funktion statistic() verwendet. Es gibt diese Funktion nicht.

Liegt das an meinem Account oder am Projekt?

Viele Grüße
by s149335 (355 points)
noch ergänzend:
Nein, es ist eine "offene Liste", allerdings wird sehr stark darauf geachtet, dass die Probanden exakt diese Werte eintragen. Diese werden dann nicht "Vanille", sondern zbsp "X32" o.Ä. heißen und sind je nach 1-4 Konstellation eindeutig.
by SoSci Survey (302k points)
Pardon, ich meinte die Funktion dbLoad()
https://www.soscisurvey.de/help/doku.php/de:create:functions:dbload

> Nein, es ist eine "offene Liste", allerdings wird sehr stark darauf geachtet, dass die Probanden exakt diese Werte eintragen.

Wenn gewährleistet ist, dass keine wilden Formate eingetragen werden, sollte das mit der Datenbank für Inhalte gut zusammenspielen.

Setzen Sie aber noch ein Präfix for alle Einträge, damit Sie ein Präfix in dbLoad() angeben können - zum Beispiel "rsp-". Und warscheinlich wäre es sinnvoll, auch den Wert nochmal in die Daten zu schreiben:

rsp-Vanille-A / Vanille / 1 / 6 / 3   <- Das wäre der Fragebogen A
rsp-Vanille-B264 / Vanille / 2 / 5 / 2  <- Das wären die Daten aus Fragebogen B, CASE 264
rsp-Vanille-B269 / Vanille / 1 / 5 / 1
rsp-Vanille-B273 / Vanille / 3 / 4 / 4

1 Answer

0 votes
by SoSci Survey (302k points)

Mittlerweile bin ich der Frage, weshalb man die Funktion statistic() in Ergebnisberichten nicht verwenden kann, nochmal auf den Grund gegangen. Es liegt daran, dass diese Funktion je nach Parametern unterschiedliche Datentypen zurück gibt. Dies ist für einer stabilen Programmierung nicht zuträglich.

Für Ergebnisberichte wurden deshalb die neuen Funktionen

  • sampleSize,
  • sampleFrequencies,
  • sampleBase,
  • sampleMean,
  • sampleSD und
  • sampleResponses

bereitgestellt, vgl. Automatisierte Ergebnisberichte -> Ergebnisberichte zur Befragung

Für Ihre Problemstellung empfehle ich, wie schon in den Kommentaren geschrieben, eher eine Lösung über die Datenbank für Inhalte.

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

...