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

0 votes

Hallo Support Team,

gibt es die Möglichkeit eine Initial-Allokation aus einer Excel Datei (aus hunderten Möglichkeiten) zufällig auszuwählen (und eventuell grafisch darzustellen als Balkendiagramm) und dieselbe Allokation für denselben Probanden gemäß der Treatments zu verändern?

Soll ich dazu bereits Bildschirmfotos der Balkendiagramme als Anfangsallokation und nach den Treatments hochladen? Wie sieht es dann mit der Größe des Umfrageprojektes und der Ladezeit aus?

Vielen Dank im Voraus und viele Grüße!

in SoSci Survey (dt.) by s222544 (355 points)

1 Answer

0 votes

Sofern Ihre Initial-Allokation eine Textrepräsentation hat, können Sie diese in einem Zufallsgenerator hinterlegen und daraus zufällig (pro Interview) ziehen.

Wenn Sie etwas anderes meinen, müsste ich Sie bitten, das nochmal ausführlicher zu beschreiben.

Bildschirmfotos der Balkendiagramme

Im Prinzip können Sie mittels ChartJS auch dynamisch Charts im Fragebogen erstellen. Sie müssen nur ein wenig PHP- und JavaScript-Code basteln, um diese an das gezogene Treatment anzupassen.

Wie sieht es dann mit der Größe des Umfrageprojektes und der Ladezeit aus?

Die Ladezeit ist nur davon abhängig, was in einem Interview tatsächlich geladen wird. Als Speicherplatz stelen auf www.soscisurvey.de pro Befragungsprojekt 64 MB zur Verfügung.

by SoSci Survey (250k points)
Vielen Dank!
Ihrer Erklärung folgend habe ich einen Textbaustein im HTML Format mit folgendem Text gefüllt:

<canvas id="myChart" width="400" height="400"></canvas>
<script type="text/javascript">
<!--
 
var chartCanvas = document.getElementById('myChart').getContext('2d');
var chart01 = new Chart(chartCanvas, {
    type: 'pie',
    data: {
        labels: %labels%,
        datasets: [{
            label: 'Anfangsallokation',
            data: %Data%,
            backgroundColor: [
                'rgba(255, 99, 132, 0.2)',
                'rgba(54, 162, 235, 0.2)',
                'rgba(255, 206, 86, 0.2)',
                
            ],
            borderColor: [
                'rgba(255, 99, 132, 1)',
                'rgba(54, 162, 235, 1)',
                'rgba(255, 206, 86, 1)',
             
            ],
            borderWidth: 1
        }]
    },
    options: {
        scales: {
            y: {
                beginAtZero: true
            }
        }
    }
});
</script>

Ich habe mich für die Prozentangaben schließlich für ein Kreisdiagramm entschieden.

Direkt auf der nächsten Seite nach dem Zufallsgenerator habe ich PHP Code mit
putList('EX07', value('EX06', 'csv'));  [EX06 ist der Zufallsgenerator und EX07 sind die internen Variablen.]
$labels = array('Roggen','Weizen','Hafer');

// Bibliothek ChartJS verfügbar machen
library('ChartJS');
 
// Testdaten (hier würde man Daten aus dem Datensatz auslesen)
$labels = ['Motivation', 'Engagement', 'Qualifikation'];
$ownData = [57, 42, 80];

 
// Textbaustein mit dem HTML-Code für das Chart einbinden
show('EX08', [
  '%labels%' => json_encode($labels),
  '%Data%' => json_encode($Data),

]);

Meine Frage lautet, wie und wo kann ich die if statements als Daten fürs Diagramm einspeisen?
So in der Art: if (value('EX06') == 01) {
  show('Diagramm Zeile 1');
} else {
}

Ich habe die Anleitungen https://www.soscisurvey.de/help/doku.php/de:create:feedback-visual?s[]=%2Adiagramm%2A#mehrere_werte_ii  und https://www.chartjs.org/docs/latest/ befolgt.

Vielen Dank im Voraus!
Viele Grüße!
Sie haben die passenden Prozentwerte in internen Variablen abgelegt, oder?

Dann könnte das z.B. wie folgt aussehen:

$ownData = [
  value('IV01_01'),
  value('IV01_02'),
  value('IV01_03')
];

Jetzt könnten Sie fünfmal IF verwenden, aber es geht noch eleganter. Nämlich rechnen.

$treatment = value('EX06');  // 1 bis 4
$basis = 3 * $treatment;  // 3, 6, 9 oder 12
$ownData = [
  value(id('IV01', $treatment + 1)),
  value(id('IV01', $treatment + 2)),
  value(id('IV01', $treatment + 3))
];

So, es könnte ein paar Minuten dauern, bis man diese Zeilen verstanden hat. Aber wenn man es verstanden hat, merkt man, wie cool programmieren ist ;)
Vielen Dank für den Code. Bisher habe ich nur putList('EX07', value('EX06', 'csv'));
Muss ich die Zahlenkombinationen nochmals als interne Variablen abspeichern, sozusagen jeder Kombination bestehend aus drei Zahlen als interne Variable?
Das putList() kümmert sich um das Speichern in die internen Variablen. Und welche drei immer zusammengehören, das sehen Sie anhand der Item-Nummern auch ohne, dass es nochmal extra irgendwo steht. Aber natürlich können Sie die internen Variablen gleich passend benennen.
...