-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy path8-VarStat-pub.m
91 lines (66 loc) · 1.71 KB
/
8-VarStat-pub.m
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
(*
Project: Haircuts
Step 8
VAR exceedance statistics
*)
(*
Setup
1. Load var data
2. Calculate the parameters
3. Export
Result
1. SAVs - quick import
2. CSV - statistics data (stat)
*)
(*VAR prob - here it is random*)
SeedRandom[3];
prob = RandomReal[];
paperId = ToString@id;
(*Module start time*)
time0 = DateList[]
startTimeString= dateStr@time0;
Print[startTimeString <> " Step 8: VAR exceedance statistics for ID: "<>paperId]
(*
1. Data
*)
fileVar = findFile[pathVar, id, "var"];
d = csvImport[pathVar <> fileVar];
msg = "1. VAR data loaded";
printMsg[time0, msg]
(*
2. Calc
*)
dg = GatherBy[d, Last];
nzVarPos = (Flatten@Position[#, x_ /; x[[3]]<0]) & /@ dg //
Quiet;
dates = dg[[#, nzVarPos[[#]], 1]] & /@ Range@Length@dg;
datesCommon = Intersection @@ dates;
If[Length@datesCommon == 0, errorLabel = "no common"; Abort[]];
datesPos = Table[
Sort@(Flatten[Position[dg[[i, All, 1]], #] & /@ datesCommon]), {i,
Length@dg}];
staData =
Table[
{
id,
method = dg[[i, 1, -1]],
numExc = dg[[i, datesPos[[i]], 4]] // Total,
cntExc = dg[[i, datesPos[[i]], 4]] // Length,
shr = (numExc/cntExc) // N,
stat = uc[numExc, cntExc, prob] // rplc // Quiet,
pass10 = If[stat > qua, 0, 1] // rplc // Quiet,
errBR = Cases[dg[[i, datesPos[[i]], 5]], x_ /; x > 0] // Total,
errKO = -Cases[dg[[i, datesPos[[i]], 5]], x_ /; x < 0] // Total
}, {i, Length@dg}];
msg = "2. VAR exceedance statistics calculated";
printMsg[time0, msg]
(*
3. Export
*)
calcTime = calcTimeCall;
fileNameSta = paperId <> "_sta_" <> calcTime <> ".csv";
csvExport[pathSta, hdSta, staData, fileNameSta]
msg = (
"3. VAR exceedance statistics ready: " <> fileNameSta
);
printMsg[time0, msg]