[p, q] = get_products(); % quantity sum over a day %plot(sum(q')); train_data = q( 1:28, :); real_data = q(29:42, :); mean_data = mean_pred(p, train_data); regress_data = regress_pred(p, train_data); quad_data = quad_regress_pred(p, train_data); log_data = log_regress_pred(p, train_data); lq_data = [log_data(:,1:334) quad_data(:,335) log_data(:,336:570)]; sevenday_data = sevenday_pred(p, train_data); random_data = rand_pred(p, train_data); [q2, removed] = remove_sevenday_frequency(q(1:14, :)); regress2_data = regress_pred(p([1:14 29:42],:), q2); regress2_data = fft(regress2_data); %regress2_data = (regress2_data .* (removed == 0)) + removed; regress2_data = regress2_data + removed; regress2_data = real(ifft(regress2_data)); pred_list = {mean_data regress_data quad_data log_data lq_data sevenday_data random_data regress2_data}; opt_data = opt_pred(real_data, pred_list); % plot prediction quallity [meqerr, meterr] = calc_error('mean', real_data, mean_data); [reqerr, reterr] = calc_error('regress', real_data, regress_data); % quadratic just for reference, it sucks more than mean-predicition [quqerr, quterr] = calc_error('quad reg.',real_data, quad_data); [loqerr, loterr] = calc_error('log reg.', real_data, log_data); [lqqerr, lqterr] = calc_error('l&q reg.', real_data, lq_data); [seqerr, seterr] = calc_error('sevenday', real_data, sevenday_data); [raqerr, raterr] = calc_error('random', real_data, random_data); [opqerr, opterr] = calc_error('optimize', real_data, opt_data); [re2qerr, re2terr] = calc_error('regress2', real_data, regress2_data); qerr = [meqerr reqerr quqerr loqerr seqerr raqerr opqerr re2qerr]; terr = [meterr reterr quterr loterr seterr raterr opterr re2terr]; bar(qerr); bar(terr); mean_err = sum(abs(real_data - mean_data)); regress_err = sum(abs(real_data - regress_data)); quad_err = sum(abs(real_data - quad_data)); log_err = sum(abs(real_data - log_data)); lq_err = sum(abs(real_data - lq_data)); sevenday_err = sum(abs(real_data - sevenday_data)); random_err = sum(abs(real_data - random_data)); opt_err = sum(abs(real_data - opt_data)); regress2_err = sum(abs(real_data - regress2_data)); err = [mean_err;regress_err;quad_err;log_err;sevenday_err;random_err;regress2_err]; [min_err, err_idx] = min(err); printf('global min. error: %d\n', sum(min_err)); printf('local min count:'); local_min_count=[]; for i=1:size(err,1) local_min_count = [ local_min_count sum(sum(err_idx == i)) ]; printf(' %d', local_min_count(i)); end printf('\n');