(* Místní novinový článek tě kontaktoval s žádostí o napsání krátkého článku pro Aprílové vydání populárně naučného časopisu. Napadlo tě, že by si to říká o záměnu korelace s kauzalitou a když už si z někoho vystřelit, tak ať to stojí za to. Stáhl sis data o popularitě termínů "politika" a "toaletní papír". Teď už jen vytvořit model na základě těchto dat a napsat článek. *)

(* Najděte vhodný model typu Moving Average, který z popularity termínu "toaletní papír" předpoví popularitu termínu "politika" pro následující týden. Model vytvořte dle dat ze souboru {train.csv} a navrhněte ho tak, aby byl co nejúspěšnější i na datech z {test.csv}. Napište krátký aprílový článek (slušný jazyk, nicméně ironie/satyra apod. jsou v pořádku), kde čtenářům představíte svůj model a popíšete jeho důsledky (>300 slov). *)

header=Import["~/LA_podruhe/DU2/train.csv","CSV"][[1]]
train=Import["~/LA_podruhe/DU2/train.csv","CSV"][[2;;]]
test=Import["~/LA_podruhe/DU2/test.csv","CSV"][[2;;]]

y=train[[;;,2]]
x=train[[;;,3]]

evalModel[size_]:=(
A=Table[Table[x[[i+j-1]],{j,1,size}],{i,1,Length@x-size}];
coefs=LeastSquares[A,y[[size+1;;]]];
Norm[A.coefs-y[[size+1;;]]]/Norm[y]//N)

(* Errors on training set *)
g1=ListLinePlot[Table[evalModel[i],{i,1,20}]]

size=6;
A=Table[Table[x[[i+j-1]],{j,1,size}],{i,1,Length@x-size}];
coefs=LeastSquares[A,y[[size+1;;]]];
Echo[Norm[A.coefs-y[[size+1;;]]]/Norm[y]//N,"Error: "];
Show[ListLinePlot[A.coefs,PlotRange->{0,100}],ListLinePlot[y[[size+1;;]],PlotStyle->{Gray,Dashed},PlotRange->All]]

y2=test[[;;,2]]
x2=test[[;;,3]]

evalTest[size_]:=(dataset=Join[x[[Length@x-size;;]],x2][[;;-2]];
A=Table[Table[dataset[[i+j-1]],{j,1,size}],{i,1,Length@dataset-size}];
coefs=LeastSquares[A,y2];
Norm[A.coefs-y2]/Norm[y2]//N)

(* Errors on testing set *)
g2=ListLinePlot[Table[evalTest[i],{i,1,20}],PlotStyle->Red]

Show[g1,g2]