source: liacs/la/opdr6/uitwerking.m@ 3

Last change on this file since 3 was 2, checked in by Rick van der Zwet, 15 years ago

Initial import of data of old repository ('data') worth keeping (e.g. tracking
means of URL access statistics)

File size: 4.0 KB
Line 
1echo on
2% == Least Squares case uitwerken ==
3
4% De huis prijs grafiek
5% prijs woonoppervlakte, perceel
6D = [ 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
14A = D(:,2:3)
15p = D(:,1)
16Ap = [ A p ]
17rref(Ap)
18% Niets bruikbaars
19
20% De kleinste kwadraten aanpak
21AT = A'
22ATA = AT * A
23ATp = AT * p
24ATAp = [ ATA ATp ]
25T = rref(ATAp)
26
27%Bepaal nu de geschatte prijzen
28x = T(:,3)
29pschati = A * x
30
31% In dit model wordt de vraagprijs (x1) zwaarder gewogen en wel
32percent = 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
48Autos = [
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
61A = Autos(:,2:end -1)
62p = Autos(:,1)
63
64% De kleinste kwadraten aanpak
65AT = A';
66ATA = AT * A;
67ATp = AT * p;
68ATAp = [ ATA ATp ];
69T = rref(ATAp);
70
71%Bepaal nu de geschatte prijzen
72x = T(:,end);
73pschati = A * x;
74
75tp = sum(p);
76tsp = sum(pschati);
77prijs = [ p pschati ];
78for i=1:size(prijs,1)
79 prijs(i,3) = prijs(i,2) / prijs(i,1) * 100;
80end
81% prijs, geschatte prijs
82int32(prijs)
83total = int32(sum(prijs(:,:)))
84%De excessen
85min(prijs(:,end)), max(prijs(:,end))
86int32( 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
102lijn400
103
104% Ik neem aan dat de symbolen XT betekenen matrix X getranponeerd.
105XT = X';
106XTX = XT * X;
107XTy = XT * y;
108XTXy = [ XTX XTy ];
109
110% inverse
111beta = inv(XTX) * XTy
112% Reductie
113beta = rref(XTXy)
114% Matlab \ operator
115beta = X\y
116% Alle geven dezefde antwoorden, echter wel anders geformateerd
117
118% voor de functie rt400 zie het bestand rt400.m
119for i=1:size(X,2)
120 rtwaarden_lin(i) = rt400(X(i,2), beta);
121end
122
123% plot van de functie
124figure;
125grid on;
126hold on;
127plot(X(:,2), y, '*');
128plot(X(:,2), rtwaarden_lin, '-r');
129hold off;
130title('Olympische spelen, mannen 400 meter - lineare plot');
131pause
132close 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;
138K = kwa400;
139KT = K';
140KTK = KT * K;
141KTy = KT * y;
142KTKy = [ KTK KTy ];
143
144rref(KTKy)
145beta = K \ y
146% zelfde (maar niet in notatie)
147
148t = 0:38;
149rtwaarden_kwa = beta(1) + beta(2) * t + beta(3) * (t .^ 2);
150
151% plot van de functie
152figure;
153grid on;
154hold on;
155plot(X(:,2), y, '*');
156plot(X(:,2), rtwaarden_lin, '-r');
157plot(t, rtwaarden_kwa, '-g');
158hold off;
159title('Olympische spelen, mannen 400 meter - lineare and kwadratische plot');
160pause
161close all hidden;
162
163%
164% Temperatuurverloop
165%
166
167% data invul
168clear X;
169t_vul;
170
171% rtwaarden bepaling
172beta_l = X \ y_l;
173beta_h = X \ y_h;
174
175t=0:365;
176func_l = beta_l(1) + beta_l(2) * cos(( 2 * pi * t) / 365) + ...
177 + beta_l(3) * sin(( 2 * pi * t) / 365);
178func_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
182figure;
183grid on;
184hold on;
185plot(orig(:,1), y_l, 'r*');
186plot(orig(:,1), y_h, 'g*');
187plot(func_l, '-r');
188plot(func_h, '-g');
189hold off;
190axis ([0, 365, 0, 100]);
191title('Gemiddelde temperature - kwadratische plot');
192pause
193close all hidden;
194
195
196
Note: See TracBrowser for help on using the repository browser.