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 |
|
---|