WEB Umfragen (Stefan Bosse) [6.2020]

WEB Umfragen (2)

In diesem Tutorial wird die Umfrage aus dem vorherigen Tutorial auf einem WEB Server aus diemsen Notebook herraus veröffentlicht und die Daten der Erhebung wieder eingesammelt.

Der WEB Server

Grundlagen und Beispiele

Fragen

Definition 1. Fragenformate (?:optional)
// Freiformtext
{ question : string, label?:string }
// Metrischer/numerischer Wert
{ question : string, label?:string, range:[number,number], step?:number }
// Mehrfachauswahl
{ question : string, label?:string, choices:[string,string,..], range?:[number,number] }
// Mehrfachauswahl - mutual (nur eine Antwort möglich)
{ question : string, label?:string, choices:[string,string,..], mutual:true }
// Optionaler Hinweistext
{ message : string, question : string ,.. }
// Konditionale Fragen
{ question : string, cond? : function (dialog) -> boolean, .. }
Definition 2. Survey
{
  author : 'Stefan Bosse',
  start : 'now',
  time  : 600,  // seconds
  label : string,
  title : string,
  cinema : true,
  dialog : [
    question1,
    question2,
    ..
  ]
}

Der Cinemamodus ist bei dynamischen und bedingten Umfragen erforderlich!

Eine Umfrage starten

Eine einfache WEB Umfrage gestalten
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
survey0 = {
  author: 'Stefan Bosse',
  url:    'ag-0.de:22222',
  label:  'mysurv0',
  title : 'Meine Beispielsumfrage',
  start : 'now',
  time  : 600,  // seconds
  cinema : true,
  // Ab hier komtm der Dialog:
  dialog : [
    {label:'QN', question: 'Wie heissen Sie?' },
    {label:'QA', question: 'Wie alt sind Sie?', range:[1,99], step:1 },
    {label:'QV', question: 'Welche Speisen essen Sie?',
                 choices: ['vegetarisch','vegan','Fleisch','Fisch']}
  ]
}

 ▸ 
 ✗ 

Umfrage hochladen
1
 
Survey.schedule(survey0, function (job) { survey0Job=job; print(survey0Job) })

 ▸ 
 ✗ 

Abruf von Umfrageergebnissen

Abruf von Umfrageergebnissen (remote, Server)
1
2
3
 
Survey.collect('ag-0.de:22222',survey0Job.handle, function (results) {
  print(results);
});

 ▸ 
 ✗ 

Analyse

Tabellen und Arrays (Beispiele)
1
2
3
4
5
6
 
var table = [
  [1,2,3],
  [4,5,6],
  [7,8,9]
]
print(table.pluck(1))

 ▸ 
 ✗ 


Statistische Analyse (Beispiele)
1
2
3
4
5
6
7
8
9
10
11
12
13
 
var table = [
  [1,2,3],
  [4,5,6],
  [7,8,9]
]
// Mittelwert der ersten Spalte
print(Math.statistics.mean(table.pluck(0)))
// Median der zweiten Spalte
print(Math.statistics.median(table.pluck(1)))
// Summe aller Elemente der dritten Spalte
print(Math.statistics.sum(table.pluck(2)))
// Standardabweichung einer Spalte
print(Math.statistics.standardDeviation(table.pluck(1)))

 ▸ 
 ✗ 

Beispiel


Eine einfache WEB Umfrage mit Kodierung
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
survey1 = {
  author: 'Stefan Bosse',
  url:    'ag-0.de:22222',
  label:  'mysurv1',
  title : 'Meine Beispielsumfrage',
  start : 'now',
  time  : 600,  // seconds
  cinema : true,
  // Ab hier komtm der Dialog:
  dialog : [
    {label:'QN', question: 'Wie heissen Sie?' },
    {label:'QA', question: 'Wie alt sind Sie?', range:[1,99], step:1 },
    {label:'QF', question: 'Welche Speisen essen Sie?',
                 choices: ['vegetarisch',
                           'vegan',
                           'Fleisch',
                           'Fisch']}
  ],
  parameter : {
    QN: 'name',
    QA: 'age',
    QF: 'food'
  },
  code : {
    QF : function (choices) {
      return Math.code(choices,{
        vegetarisch:1,
        vegan:2,
        Fleisch:4,
        Fisch:8,
        undefined:0,
      }) 
    }
  },
  action : function (res) {
    var an = 0;
    res.result.forEach(function (q) { if (!Utils.empty(q.answer)) an++ });
    Print('Vielen Dank! Sie haben '+an+' Frage(n) beantwortet. Die Umfrage ID ist '+res.id);
  }
}
survey1Job=null;
Survey.schedule(survey1, function (job) { survey1Job=job; print(survey1Job) })

 ▸ 
 ✗ 

Abruf von Umfrageergebnissen (remote, Server)
1
2
3
4
5
 
resultTable=null;
Survey.collect('ag-0.de:22222',survey1Job.handle, function (results) {
  resultTable=Survey.present(results,survey1Job.handle);
  print(resultTable);
});

 ▸ 
 ✗ 

Aufgabe B

Umfragedeskriptor

Copy & Paste aus Aufgabe A

Frage. A.1 Welche Hypothese soll mit der Umfrage getestet werden?

Frage. A.2 Welche Variablen sollen gemessen werden (z.B. Alter)?

Frage. A.3 An welche Zielgruppe richtet sich die Umfrage?

Meine Umfrage B
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
mysurveyB = {
  author: 'Name/Pseudonym eintragen!',
  label:  'eigenes Label vergeben',
  title : 'hier Titel eintragen',
 
  url:    'ag-0.de:22222',
  start : 'now',
  time  : 600,  // seconds
  cinema : true,
 
  // Copy & Paste aus Aufgabe A
  // dialog : [],
  // parameter : {},
  // code : {},
 
  action : function (res) {
    var an = 0;
    res.result.forEach(function (q) { if (!Utils.empty(q.answer)) an++ });
    Print('Vielen Dank! Sie haben '+an+' Frage(n) beantwortet. Die Umfrage ID ist '+res.id);
  }
}

 ▸ 
 ✗ 

Start

Umfrage B starten
1
2
 
surveyBJob=null;
Survey.schedule(mysurveyB, function (job) { surveyBJob=job; print(job) })

 ▸ 
 ✗ 

Abruf Ergebnisse

Ergebnisse von Umfrage B einsammeln
1
2
3
4
5
6
7
 
resultsB=null;
resultTableB=null;
Survey.collect('ag-0.de:22222',survey1Job.handle, function (results) {
  resultTableB=Survey.present(results,surveyBJob.handle);
  resultsB=results;
  print(resultTableB);
});

 ▸ 
 ✗ 

Speicherung von Ergebnissen

1
 
Save(resultTableB,'test.json')

 ▸ 
 ✗ 

Laden von Ergebnissen

1
 
Load(function (data) { resultTableB=data; print(data) })

 ▸ 
 ✗ 

Analyse

Hier die Analyse der erhobenen Daten durchführen
1
 
 

 ▸ 
 ✗ 


Created by the NoteBook Compiler Ver. 1.3.8 (c) Dr. Stefan Bosse (Tue Jul 07 2020 09:16:04 GMT+0200 (CET))