-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path03_generate_resonses.php
More file actions
55 lines (37 loc) · 1.34 KB
/
Copy path03_generate_resonses.php
File metadata and controls
55 lines (37 loc) · 1.34 KB
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
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
$vers = 2;
ini_set("display_errors", "1");
error_reporting(E_ALL);
set_time_limit(0);
require_once ("00_functions.php");
require_once ("Daten/items V".$vers.".php");
require_once ("Daten/persons V".$vers.".php");
$irt_model = '2PL';
$irt_formula = ['1PL' => (fn($ip, $pp) => 1 / (1 + exp($ip['a'] - $pp))),
'2PL' => (fn($ip, $pp) => 1 / (1 + exp($ip['b'] * ($ip['a'] - $pp)))),
'3PL' => (fn($ip, $pp) => $ip['c'] + (1 - $ip['c'] ) / (1 + exp($ip['b'] * ($ip['a'] - $pp))))];
$rp = [];
foreach ($persons as $id => $pp) {
foreach ($items as $scale_id => $scale) {
foreach ($scale as $item_id => $item) {
$rp [$id][$item_id] = (lrand(0,1) < $irt_formula[$irt_model]($item, $pp[$scale_id])) ? 1 : 0;
}
}
}
$file_name = "Daten/responses " . $irt_model . " " . date("Y-m-d H-i-s");
$responses_php = "<?php\n\n\$responses = [\n".print_array($rp,1)."\n];\n?>";
file_put_contents($file_name.".php", $responses_php);
$responses_csv = "ID";
$response = $rp['P000000'];
foreach ($response as $item_id => $item_response) {
$responses_csv .= ";$item_id";
}
foreach ($rp as $person_id => $response) {
$responses_csv .= "\n$person_id";
foreach ($response as $item_id => $item_response) {
$responses_csv .= ";$item_response";
}
}
file_put_contents($file_name.".csv", $responses_csv);
echo "finished";
?>