[2] | 1 | echo on
|
---|
| 2 | % == Least Squares case uitwerken ==
|
---|
| 3 |
|
---|
| 4 | % De huis prijs grafiek
|
---|
| 5 | % prijs woonoppervlakte, perceel
|
---|
| 6 | D = [ 375, 135, 156;
|
---|
| 7 | 399, 190, 82;
|
---|
| 8 | 349, 145, 85;
|
---|
| 9 | 390, 190, 77;
|
---|
| 10 | 399, 150, 141;
|
---|
| 11 | 349, 160, 132;
|
---|
| 12 | ];
|
---|
| 13 | % De formule p = x1 * wo + x2 * po toepassen
|
---|
| 14 | A = D(:,2:3)
|
---|
| 15 | p = D(:,1)
|
---|
| 16 | Ap = [ A p ]
|
---|
| 17 | rref(Ap)
|
---|
| 18 | % Niets bruikbaars
|
---|
| 19 |
|
---|
| 20 | % De kleinste kwadraten aanpak
|
---|
| 21 | AT = A'
|
---|
| 22 | ATA = AT * A
|
---|
| 23 | ATp = AT * p
|
---|
| 24 | ATAp = [ ATA ATp ]
|
---|
| 25 | T = rref(ATAp)
|
---|
| 26 |
|
---|
| 27 | %Bepaal nu de geschatte prijzen
|
---|
| 28 | x = T(:,3)
|
---|
| 29 | pschati = A * x
|
---|
| 30 |
|
---|
| 31 | % In dit model wordt de vraagprijs (x1) zwaarder gewogen en wel
|
---|
| 32 | percent = x(2) / x(1) * 100
|
---|
| 33 |
|
---|
| 34 | %pschati prijs wo, po
|
---|
| 35 | [ pschati D ]
|
---|
| 36 | % Huizen met een groot po worden fout gemeten
|
---|
| 37 | % Voor mijn eigen modelprijs formule ga ik krijgen naar 2de hands
|
---|
| 38 | % auto advertenties (van vanderplas.nl in autoplaza leiderdorps dagblad
|
---|
| 39 | % woensdag 22 mei 2007)
|
---|
| 40 | % Merksterkte heb ik de volgende waardes gegeven
|
---|
| 41 | % Mini = 11;
|
---|
| 42 | % BMW = 10;
|
---|
| 43 | % Audi = 5;
|
---|
| 44 | % Fiat = 1;
|
---|
| 45 | % prijs, Bouwjaar, Aantal kilometer x1000, aantal deuren, CD, airco
|
---|
| 46 | % merksterkte
|
---|
| 47 | % speler
|
---|
| 48 | Autos = [
|
---|
| 49 | 22950, 2003, 113, 5, 1, 1, 5;
|
---|
| 50 | 23950, 2004, 64, 5, 1, 1, 10;
|
---|
| 51 | 13950, 2001, 116, 3, 0, 1, 10;
|
---|
| 52 | 24950, 2003, 102, 5, 0, 1, 10;
|
---|
| 53 | 24950, 2002, 47, 2, 1, 1, 10;
|
---|
| 54 | 4750, 2001, 54, 3, 1, 0, 1;
|
---|
| 55 | 14950, 2005, 39, 3, 1, 1, 1;
|
---|
| 56 | 13950, 2002, 86, 3, 1, 1, 11;
|
---|
| 57 | 17750, 2003, 55, 3, 1, 1, 11;
|
---|
| 58 | ];
|
---|
| 59 |
|
---|
| 60 | % Ik laat alles even zwaar wegen
|
---|
| 61 | A = Autos(:,2:end -1)
|
---|
| 62 | p = Autos(:,1)
|
---|
| 63 |
|
---|
| 64 | % De kleinste kwadraten aanpak
|
---|
| 65 | AT = A';
|
---|
| 66 | ATA = AT * A;
|
---|
| 67 | ATp = AT * p;
|
---|
| 68 | ATAp = [ ATA ATp ];
|
---|
| 69 | T = rref(ATAp);
|
---|
| 70 |
|
---|
| 71 | %Bepaal nu de geschatte prijzen
|
---|
| 72 | x = T(:,end);
|
---|
| 73 | pschati = A * x;
|
---|
| 74 |
|
---|
| 75 | tp = sum(p);
|
---|
| 76 | tsp = sum(pschati);
|
---|
| 77 | prijs = [ p pschati ];
|
---|
| 78 | for i=1:size(prijs,1)
|
---|
| 79 | prijs(i,3) = prijs(i,2) / prijs(i,1) * 100;
|
---|
| 80 | end
|
---|
| 81 | % prijs, geschatte prijs
|
---|
| 82 | int32(prijs)
|
---|
| 83 | total = int32(sum(prijs(:,:)))
|
---|
| 84 | %De excessen
|
---|
| 85 | min(prijs(:,end)), max(prijs(:,end))
|
---|
| 86 | int32( sum(prijs(:,3) / size(prijs,1) ) )
|
---|
| 87 |
|
---|
| 88 | % Dit presteert redelijk, als ik echter de excessen weghaal dan gaat hij
|
---|
| 89 | % een stuk beter. Ik zal de auto nader moeten onderzoeken waarom deze
|
---|
| 90 | % eruit springt
|
---|
| 91 |
|
---|
| 92 | %
|
---|
| 93 | % Olympische 400 meter recordtijden
|
---|
| 94 | %
|
---|
| 95 |
|
---|
| 96 | % het script lijn400.m maakt lijnbenadering van de recordtijden als
|
---|
| 97 | % functie van olympisch jaar de designmatrix X en waarneemvector y.
|
---|
| 98 | %
|
---|
| 99 | % Ik heb een matrix gemaakt van de orginele data en daar een mapping mee
|
---|
| 100 | % gemaakt
|
---|
| 101 | % zie lijn400.m
|
---|
| 102 | lijn400
|
---|
| 103 |
|
---|
| 104 | % Ik neem aan dat de symbolen XT betekenen matrix X getranponeerd.
|
---|
| 105 | XT = X';
|
---|
| 106 | XTX = XT * X;
|
---|
| 107 | XTy = XT * y;
|
---|
| 108 | XTXy = [ XTX XTy ];
|
---|
| 109 |
|
---|
| 110 | % inverse
|
---|
| 111 | beta = inv(XTX) * XTy
|
---|
| 112 | % Reductie
|
---|
| 113 | beta = rref(XTXy)
|
---|
| 114 | % Matlab \ operator
|
---|
| 115 | beta = X\y
|
---|
| 116 | % Alle geven dezefde antwoorden, echter wel anders geformateerd
|
---|
| 117 |
|
---|
| 118 | % voor de functie rt400 zie het bestand rt400.m
|
---|
| 119 | for i=1:size(X,2)
|
---|
| 120 | rtwaarden_lin(i) = rt400(X(i,2), beta);
|
---|
| 121 | end
|
---|
| 122 |
|
---|
| 123 | % plot van de functie
|
---|
| 124 | figure;
|
---|
| 125 | grid on;
|
---|
| 126 | hold on;
|
---|
| 127 | plot(X(:,2), y, '*');
|
---|
| 128 | plot(X(:,2), rtwaarden_lin, '-r');
|
---|
| 129 | hold off;
|
---|
| 130 | title('Olympische spelen, mannen 400 meter - lineare plot');
|
---|
| 131 | pause
|
---|
| 132 | close all hidden;
|
---|
| 133 |
|
---|
| 134 | % voor het maken van de K designmatrix zie kwa400.m
|
---|
| 135 | % of gebruik iets als
|
---|
| 136 | % K = X;
|
---|
| 137 | % K(:,3) = K(:,2) .^ 2;
|
---|
| 138 | K = kwa400;
|
---|
| 139 | KT = K';
|
---|
| 140 | KTK = KT * K;
|
---|
| 141 | KTy = KT * y;
|
---|
| 142 | KTKy = [ KTK KTy ];
|
---|
| 143 |
|
---|
| 144 | rref(KTKy)
|
---|
| 145 | beta = K \ y
|
---|
| 146 | % zelfde (maar niet in notatie)
|
---|
| 147 |
|
---|
| 148 | t = 0:38;
|
---|
| 149 | rtwaarden_kwa = beta(1) + beta(2) * t + beta(3) * (t .^ 2);
|
---|
| 150 |
|
---|
| 151 | % plot van de functie
|
---|
| 152 | figure;
|
---|
| 153 | grid on;
|
---|
| 154 | hold on;
|
---|
| 155 | plot(X(:,2), y, '*');
|
---|
| 156 | plot(X(:,2), rtwaarden_lin, '-r');
|
---|
| 157 | plot(t, rtwaarden_kwa, '-g');
|
---|
| 158 | hold off;
|
---|
| 159 | title('Olympische spelen, mannen 400 meter - lineare and kwadratische plot');
|
---|
| 160 | pause
|
---|
| 161 | close all hidden;
|
---|
| 162 |
|
---|
| 163 | %
|
---|
| 164 | % Temperatuurverloop
|
---|
| 165 | %
|
---|
| 166 |
|
---|
| 167 | % data invul
|
---|
| 168 | clear X;
|
---|
| 169 | t_vul;
|
---|
| 170 |
|
---|
| 171 | % rtwaarden bepaling
|
---|
| 172 | beta_l = X \ y_l;
|
---|
| 173 | beta_h = X \ y_h;
|
---|
| 174 |
|
---|
| 175 | t=0:365;
|
---|
| 176 | func_l = beta_l(1) + beta_l(2) * cos(( 2 * pi * t) / 365) + ...
|
---|
| 177 | + beta_l(3) * sin(( 2 * pi * t) / 365);
|
---|
| 178 | func_h = beta_h(1) + beta_h(2) * cos(( 2 * pi * t) / 365) + ...
|
---|
| 179 | + beta_h(3) * sin(( 2 * pi * t) / 365);
|
---|
| 180 |
|
---|
| 181 | % plot van de functie
|
---|
| 182 | figure;
|
---|
| 183 | grid on;
|
---|
| 184 | hold on;
|
---|
| 185 | plot(orig(:,1), y_l, 'r*');
|
---|
| 186 | plot(orig(:,1), y_h, 'g*');
|
---|
| 187 | plot(func_l, '-r');
|
---|
| 188 | plot(func_h, '-g');
|
---|
| 189 | hold off;
|
---|
| 190 | axis ([0, 365, 0, 100]);
|
---|
| 191 | title('Gemiddelde temperature - kwadratische plot');
|
---|
| 192 | pause
|
---|
| 193 | close all hidden;
|
---|
| 194 |
|
---|
| 195 |
|
---|
| 196 |
|
---|