0 votes
in SoSci Survey (dt.) by s151388 (275 points)

Lieber Support,

wir haben in einem Befragungsprojekt mit MSEM umgesetzt. Der randomisierte Versand der SMS wurde im Opt-In Fragebogen programmiert. Im Nachhinein haben wir nun festgestellt, dass einige Teilnehmer den Opt-In Fragebogen zwar bis zur letzten Seite bearbeitet haben (also definitiv auf der Seite mit dem entsprechenden-php-Code waren), aber keine einizge SMS erhalten haben (Status = 0).
Gibt es irgendeine Möglichkeit herauszufinden, woran das gelegen haben könnte? Auch wenn es nur wenige Teilnehmer betrifft, würden wir das in zukünftigen Studien gerne vermeiden.

Herzlichen Dank und viele Grüße!

1 Answer

0 votes
by SoSci Survey (327k points)

aber keine einizge SMS erhalten haben

Wenn Sie den Adresseintrag in der Adressliste anklicken, wird dort (ganz unten) auch kein Versand angezeigt?

Gibt es irgendeine Möglichkeit herauszufinden, woran das gelegen haben könnte?

Wenn das der Fall ist, dann müssten Sie bitte genauer beschreiben, wie Ihr Design aussah. War es ein Single- oder Double-Opt-In? An welcher Stelle war welcher PHP-Code platziert? Wie hoch ist der Anteil der betroffenen Adresseinträge? Liegt dort eine gültige Mobilnummer vor?

by s151388 (275 points)
>> Wenn Sie den Adresseintrag in der Adressliste anklicken, wird dort (ganz unten) auch kein Versand angezeigt?

Nein, bei keinem der Einträge tauchen dort die Einträge für den Versand der entsprechenden SMS auf.

>> Wenn das der Fall ist, dann müssten Sie bitte genauer beschreiben, wie Ihr Design aussah. War es ein Single- oder Double-Opt-In? An welcher Stelle war welcher PHP-Code platziert? Wie hoch ist der Anteil der betroffenen Adresseinträge? Liegt dort eine gültige Mobilnummer vor?

Es handelt sich um eine Studie, die aus 3 Teilen besteht:
- Teil 1: klassischer Längsschnitt, Fragebögen im Abstand von mehreren Monaten
- Teil 2: weekly diary, am Ende jeder Woche ein Fragebogen
- Teil 3: 2 zufällig ausgewählte Wochen (nicht aufeinander folgend) in einem Zeitraum von insgesamt 14 Wochen. An jedem Tag 6 SMS (zeitrandomisiert mit bestimmten constraints) mit dem Link zum Fragebogen.
Teil 3 ist bereits abgeschlossen, Teil 1 und 2 laufen noch weiter.

Die Anmeldung zur Studie erfolgte über Double-Opt-In. Die TN konnten wählen, ob sie nur bei Teil 1 und 2 oder bei allen 3 Teilen mitmachen wollten. Wenn sie sich für alle 3 Teile entschieden haben, haben Sie E-Mail-Adresse und Handynr. angegeben und die Opt-In Bestätigungsmail erhalten.
Wenn die TN auf den Link klickten, wurden sie zu einem neuen Fragebogen geleitet, auf der ersten Seite war ein Zufallsgenerator platziert, der die randomisierte Auswahl der Wochen vorgenommen hat, in denen der ESM-Teil stattfinden sollte. Je nach Ziehung wurden die TN dann auf eine Seite des Fragebogens weitergeleitet, die Ihnen angezeigt hat, welche Wochen für Sie ausgewählt worden sind. Auf dieser Seite waren außerdem 2 php-Codes platziert: einmal der php-Code, der den zeitrandomisierten Versand der SMS in den beiden ausgewählten Wochen festlegt und einmal der php Code, derdafür sorgt, dass die TN 10 Sekunden später den ersten Fragebogen von Teil 1 erhalten.
Insgesamt betrifft das Problem 5 TN, 2 davon haben den Opt-In Fragebogen bis zum Ende bearbeitet, bei den restlichen 3 ist der Status auf "gelb". Das Kuriose ist allerdings, dass alle 5 TN den Link zum ersten Fragebogen in Teil 1 erhalten haben, aber keine SMS. Das heißt ja eigentlich, dass alle TN auf der Seite mit dem php-Code gewesen sein müssen.

Insgesamt haben sich über 400 Leute für alle 3 Teile angemeldet, der betroffene Teil an TN ist also relativ klein. Die angegebenen Mobilnummern scheinen mir auf den ersten Blick valide zu sein, bei einer Nummer ist ein Leerzeichen mit dabei, das sollte aber kein Problem sein, zumindest wurden SMS an andere Nummern mit Leerzeichen versendet. Wenn die angegebenen Nummern nicht existieren, sollten wir dann aber nicht eine Statusmeldung erhalten, dass die SMS nicht übermittelt werden konnte?

Ich hoffe, meine Beschreibung enthält alle Informationen, die Sie benötigen. Herzlichen Dank für Ihre Mühe!
by SoSci Survey (327k points)
Danke für die Erklärung. Nächster Schritt: Herausfinden, welche Systematik hinter den Problem-Fällen steckt. Können Sie nachvollziehen, welche Datensätze zu den Problemfällen gehören? Es wäre sinnvoll, dort dann erstmal zu prüfen, ob alle vielleicht vom Zufallsgenerator denselben Code bekommen haben und/oder auf welchen Seite im Nach-Opt-In-Fragebogen sie waren.

> Das Kuriose ist allerdings, dass alle 5 TN den Link zum ersten Fragebogen in Teil 1 erhalten haben, aber keine SMS.

Posten Sie doch bitte mal den PHP-Code, der die beiden Versand-Optionen auslösen sollte.

> der betroffene Teil an TN ist also relativ klein.

Das spricht dafür, dass eine eher spezielle Konstellation notwendig ist, um das Problem auszulösen.

> Wenn die angegebenen Nummern nicht existieren, sollten wir dann aber nicht eine Statusmeldung erhalten, dass die SMS nicht übermittelt werden konnte?

Ja. Nur wenn die Nummer offensichtlich ungültig ist ... wobei, dann hätte SoSci Survey die Nummer schon beim Opt-In abgelehnt. Das kann es also nicht sein.
by s151388 (275 points)
edited by s151388
Hm, ich glaube nicht, dass ich die Problemfälle den Daten zuordnen kann, da ich die Zuordnung von SERIAL und E-Mail-Adresse nicht habe. Ich sehe zwar über die Adressliste den Tag, an dem der Opt-In-Fragebogen versendet worden ist (für alle Problemfälle am gleichen Tag), allerdings kann ich nicht definitiv sagen, ob diese TN ihre Anmeldung auch an diesem Tag bestätigt und somit den Fragebogen aufgerufen haben. Für den entsprechenden Tag sind jedenfalls 11 aufgerufene Opt-In-Fragebögen vorhanden, von denen max. 2 den gleichen Code vom Zufallsgenerator bekommen haben. Aber wie gesagt, ob die 5 Problemfälle wirklich darunter sind, weiß ich nicht. Oder haben Sie noch eine Idee, wie ich das bei pseudonymisierten Daten herausfinden kann?

Der php-Code für den randomisierten Versand der SMS sah prinzipiell wie folgt aus:

// scheduler für Woche 1: 12.04.2021 - 18.04.2021
// Bestimme Startzeitpunkt für jeden Beep der Woche

// 1. Tag: 12.04.
// beep 1
$d1b1 = strtotime('2021-04-12 9:00:00') + random(0, 7140); // = ziehe Zeitpunkt zwischen 9:00 Uhr + 1 Std. 59 (: 7140 Sek.)

// beep 2
// Schritt 1: bestimme frühstmöglichen Startzeitpunkt für beep 2
// = der spätere Zeitpunkt von
// a) Versandzeitpunkt beep 1 (=$d1b1) + 45 Minuten (2700 Sek.) oder
// b) Startpunkt des Zeitfensters von beep 2 (= 11 Uhr)
// da beeps immer mind. 45 Minuten auseinander liegen sollen
$t1 = max($d1b1 + 2700, strtotime('2021-04-12 11:00:00'));

// Schritt 2: Berechne die Zeitspanne, in der für beep 2 ein zufälliger Zeitpunkt gezogen werden kann
// = Endzeitpunkt Zeitspanne beep 2 (= 12:59) minus frühster Startzeitpunkt beep 2 (= t1)
$t2 = strtotime('2021-04-12 12:59:00');
$t3 = $t2 - $t1;

// Schritt 3: Definiere Zeitspanne, in der Mail für beep 2 versendet werden kann
$d1b2 = $t1 + random(0, $t3);

// beep 3
$t4 = max($d1b2 + 2700, strtotime('2021-04-12 13:00:00'));
$t5 = strtotime('2021-04-12 14:59:00');
$t6 = $t5 - $t4;
$d1b3 = $t4 + random(0, $t6);

// beep 4
$t7 = max($d1b3 + 2700, strtotime('2021-04-12 15:00:00'));
$t8 = strtotime('2021-04-12 16:59:00');
$t9 = $t8 - $t7;
$d1b4 = $t7 + random(0, $t9);

// beep 5
$t10 = max($d1b4 + 2700, strtotime('2021-04-12 17:00:00'));
$t11 = strtotime('2021-04-12 18:59:00');
$t12 = $t11 - $t10;
$d1b5 = $t10 + random(0, $t12);

// beep 6: eod survey --> fester Zeitpunkt
$d1b6 = strtotime('2021-04-12 21:00:00');

// Versenden der SMS zum randomisierten Zeitpunkt
// Woche 1 Tag 1
mailSchedule(false, 5, $d1b1);
mailSchedule(false, 6, $d1b2);
mailSchedule(false, 7, $d1b3);
mailSchedule(false, 8, $d1b4);
mailSchedule(false, 9, $d1b5);
mailSchedule(false, 10, $d1b6);

(...)

Ich habe hier jetzt mal die ersten Zeilen des php-Codes für den Code 1 vom Zufallsgenerator gewählt. Das Ganze geht munter so weiter bis beep 6 an Tag 14. Da das extrem lang ist, wusste ich nicht, ob das wirklich zielführend ist, das hier zu posten. Falls Sie es doch brauchen, geben Sie gerne noch einmal Bescheid.
Insgesamt gab es 7 Codes beim Zufallsgenerator, da ändern sich aber eigentlich nur die Datumsangaben für die Wochentage.

Der php-Code für den Versand des ersten Fragebogens für Studienteil 1 war auf der gleichen Seite (noch vor dem Code für die SMS):

// E-Mail für Baseline FB in 10 Sekunden verschicken
mailSchedule(false, 3, 10);
// Erinnerung Baseline FB März
mailSchedule(false, 4, strtotime('2021-04-09 10:00:00'), array(
  'status' => 'no-response'));

Sagen Sie gerne Bescheid, wenn Sie noch weitere Infos brauchen! Und nochmals herzlichen Dank!
by SoSci Survey (327k points)
> Oder haben Sie noch eine Idee, wie ich das bei pseudonymisierten Daten herausfinden kann?

Wenn Sie mir an info@soscisurvey.de die Projekt-URL, den Namen des Fragebogens mit mailSchedule() und die 5 betroffenen Mailadressen mitteilen, kann ich Ihnen eine Liste von CASE-Nummern nennen, die dazu gehören (ohne Zuordnung, welche Fallnummer zu welcher Adresse gehört).

5 Adressen dürfte auch eine gerade-noch-so akzeptable Anzahl sein, damit wir nicht im Bereich personenbezogener Daten landen. Wenn Sie da unsicher sind, halten Sie aber gerne nochmal Rücksprache mit Ihrem Datenschutzbeauftragten.
by SoSci Survey (327k points)
> Der php-Code für den Versand des ersten Fragebogens für Studienteil 1 war auf der gleichen Seite

War zwischen dem

mailSchedule(false, 3, 10);

und dem Code, den Sie oben gepostet haben noch irgend eine Möglichkeit im PHP-Code, dass die Seite nicht weiter verarbeitet wird? Also z.B. ein goToPage() oder pageStop() ?

Ansonsten würde ich Ihnen zustimmen, dass auch ich keinen offensichtlichen Grund sehe, warum das

mailSchedule(false, 5, $d1b1);

nicht hätte ausgeführt werden sollen. Außer vielleicht, wenn die Registrierung nach dem 12.11. erfolgt wäre (das hätte dann einen Zeitstempel in der Vergangenheit für $d1b1 verursacht) - aber das müssten Sie ja bei den Adresseinträgen direkt sehe, der Zeitpunkt für den Versand von Serienmail 3 wird dort ja angezeigt.
by s151388 (275 points)
Nein, weiterer php-Code ist auf der Seite nicht. goToPage() erscheint erst auf der Seite danach, um die TN auf die letzte Seite weiterzuleiten.
An alle TN wurde Serienmail 3 am gleichen Tag im April verschickt, ein Zeitstempel in der Vergangenheit sollte also nicht das Problem sein.
by SoSci Survey (327k points)
Oh ... Sie haben in dem Projekt ja mehr als 120 Fragebögen angelegt ... ich könnte mir vorstellen, dass es anders vielleicht ein wenig einfacher gegangen wre. Aber mit dem Mail-Problem hat das wohl nichts zu tun.

So, hier sind jedenfalls die 5 Fall-Nummer zu den 5 Adressen:
2444, 2445, 2449, 2456, 2457

Prüfen Sie bitte einmal, ob Ihnen (z.B. bei der Zufallsvariable) eine Systematik auffällt.
by s151388 (275 points)
Vielen Dank! Leider ist im Datensatz die Variable CASE nicht vorhanden. Oder beziehen sich die Fallnummern auf etwas anderes?

Da ich ja weiß, an welchem Datum der Link für den Opt-In-Fragebogen für die 5 Fälle verschickt wurde und da ich bei diesen Adressen das Datum einsehen kann, an dem der erste Fragebogen für Studienteil 1 aufgerufen wurde (bei allen betroffenen Adressen jeweils für beide Fragebögen der gleiche Tag), kann ich mir ja die Werte der Zufallsvariablen an diesem entsprechenden Tag ansehen. Das sind insgesamt 11 EInträge, der gleiche Wert auf der Zufallsvariable taucht allerdings nur max. 2x auf, die betroffenen Adressen können also zumindest nicht alle den gleichen Wert haben.

Bzgl. der Vereinfachung: Mir war nicht bewusst, dass ich für jeden Fragebogen, der mehrfach ausgefüllt werden soll, nur einen Fragebogen anlegen muss. Wie werden die Einträge denn dann pro Person im Datensatz  unterschieden?
by SoSci Survey (327k points)
> Leider ist im Datensatz die Variable CASE nicht vorhanden

In Excel und SPSS ist sie das, wenn Sie mit R arbeiten, finden Sie die Fallnummer in row.names(ds). Sie können die Fallnummern auch unter "Erhobene Daten" -> "Daten ansehen" sehen.

> die betroffenen Adressen können also zumindest nicht alle den gleichen Wert haben.

Das ist schonmal gut, dann gibt es kein systematisches Problem mit dem PHP-Code, welcher die Zufallsziehung verwendet.

>  Wie werden die Einträge denn dann pro Person im Datensatz  unterschieden?

Das kommt auf Ihr konkretes Design an. In Ihrem Fall hätte es vermutlich ausgereicht, den Zeitpunkt der Teilnahme zur Unterscheidung zu verwenden.
by s151388 (275 points)
edited by s151388
Ich habe mir die entsprechenden Zeilen im Datensatz angesehen, alle haben einen anderen Wert bei der Zufallsvariablen. Ansonsten gibt es kaum Variablen in diesem Fragebogen außer die üblichen internen Variablen wie STARTED. Da fällt auf, dass die Fälle sich alle am gleichen Tag angemeldet haben und innerhalb von ca. 2 Stunden.

Ich bin mir allerdings nicht sicher, ob ich tatsächlich die richtigen Zeilen ausgewählt habe (über ds[c("2444", "2445", "2449", "2456", "2457"), c("Variablennamen, die für den Opt-In-Fragebogen relevant sind")]), da ein TN sowohl bei der Variable LASTPAGE als auch MAXPAGE den Wert 1 hat, alle Problemfälle allerdings den ersten Fragebogen in Studienteil 1 zugeschickt bekommen haben und deshalb ja eigentlich mindestens 1x auf "weiter" geklickt haben müssten, damit der entsprechende php-Code den Versand auslöst. Bei zwei weiteren Fällen ist LASTPAGE ebenfalls 1, aber MAXPAGE deutlich höher (Seiten, auf denen der php-Code steht). Es gibt allerdings keinen Zurück-Button in dem Fragebogen. Haben diese TN den Link zum Opt-In-Fragebogen dann einfach erneut aufgerufen?

Zum Design mit mehrfacher Verwendung des gleichen Fragebogens: Wenn ich dann jede Woche eine neue Mail mit dem Link zum gleichen Fragebogen verschicke und in der Mail unter Mehrfachteilnahme "Einmaliges Ausfüllen ink. Fortsetzung unterbrochener Interviews" auswähle, dann kann jeder TN den Fragebogen pro Woche 1x komplett ausfüllen und ich habe immer eine neue Zeile im Datensatz, die Daten der vorherigen Woche werden also nicht überschrieben?
Für randomisierte Zeitpunkte ist das dann aber wohl nicht so günstig, weil ich den Versandzeitpunkt ja nicht genau kenne?
by SoSci Survey (327k points)
> Da fällt auf, dass die Fälle sich alle am gleichen Tag angemeldet haben und innerhalb von ca. 2 Stunden.

Das spricht dem Anschein nach für ein technisches Problem. Nachdem es nur in einem sehr eng umgrenzten Zeitraum auftrat, wird das nur schwer aufzuklären zu sein.

> Fällen ist LASTPAGE ebenfalls 1, aber MAXPAGE deutlich höher (Seiten, auf denen der php-Code steht). Es gibt allerdings keinen Zurück-Button in dem Fragebogen. Haben diese TN den Link zum Opt-In-Fragebogen dann einfach erneut aufgerufen?

Ja, je nach Einstellung in Serienmail und Fragebogen kann ein erneuter Aufruf zum Neustart auf der ersten Seite führen (LASTPAGE=1).

> Zum Design mit mehrfacher Verwendung des gleichen Fragebogens: Wenn ich dann jede Woche eine neue Mail mit dem Link zum gleichen Fragebogen verschicke und in der Mail unter Mehrfachteilnahme "Einmaliges Ausfüllen ink. Fortsetzung unterbrochener Interviews" auswähle, dann kann jeder TN den Fragebogen pro Woche 1x komplett ausfüllen und ich habe immer eine neue Zeile im Datensatz, die Daten der vorherigen Woche werden also nicht überschrieben?

Ja, wenn Sie in *unterschiedlichen* Serienmails auf denselben Fragebogen verlinken, kann man mit jedem Serienmail-Link den Fragebogen aufs Neue ausfüllen. Der bestehende Fragebogen wird nur dann fortgesetzt, wenn eine Serienmail explizit als Fortsetzungsmail eingestellt wurde.

> Für randomisierte Zeitpunkte ist das dann aber wohl nicht so günstig, weil ich den Versandzeitpunkt ja nicht genau kenne?

Ich habe mir bereits als Feature auf der SoSci-Wunschliste notiert, dass panelData() auch die ID der Seriennummer liefern soll, damit man diese direkt (und unabhängig von der Zeit) in eine interne Variable speichern kann.
by s151388 (275 points)
Herzlichen Dank für Ihre Mühe, da so genau nachzuforschen! Und auch für die weiteren Erläuterungen!

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

...