wtorek, 28 lipca 2009

Najbardziej oblegane zdjecie na flickr.com

Moje najbardziej oblegane zdjęcie na flickr.com. niedługo będzie miało jubileusz 2000 oglądnięć (przeciętna dla całego mojego zbioru to ok. 10 odsłon). Ponad 50 użytkowników zaznaczyło je jako ulubione. Tylko hmm... upodobania tych użytkowników takie trochę...

sobota, 18 lipca 2009

Rysowanie diagramów ścieżkowych za pomocą MetaPosta

Diagram ścieżkowy (path diagram)-- popularna notacja służąca do graficznego definiowania równań strukturalnych -- to rodzaj grafu, w którym kółka i prostokąty oznaczają węzły a strzałki krawędzie. Do tego zarówno kółka/prostokąty jaki i strzałki mogą być oznaczone symbolami. No i tu pech, bo tradycyjnie używa się greckich liter, do tego z subskryptami.

Dia to fajny program, ale przy bardziej zaawansowanych diagramach wychodzą jego ograniczenia, jak przykładowo niemożność umieszczania formuł matematycznych. Wstawianie symboli greckich próbowałem obejść modyfikując LOCALE i klawiaturę (da się) ale subskrypty/superskrypty to już się okazały nie do przejścia. Kombinowałem zatem jakby tu łatwo i przyjemnie zrobić diagramy ścieżkowe w czymś innym. W szczególności książka Skrondala i Rabe-Hesketh (Generalized latent variable modeling: multilevel, longitudinal, and structural equation models, ISBN: 9781584880004) -- ewidentnie składania LaTeXem -- zawiera bardzo schludne diagramy ścieżkowe. Podobno też w R coś tam się samo składa... Nic wszakże konkretnego nie ustaliłem i stanęło jak zwykle na MetaPoście.

Tutaj umieszczone bardzo proste makra pozwalają na rysowania diagramów ścieżkowych. Przykładowo narysowanie jednoczynnikowego modelu pomiaru, zawierającego trzy miary refleksyjne będzie wyglądało jakoś tak:


z1 = (40mm,20mm); %% srodek koła
%% Rysowanie czynnika eta_1 z błędem delta_1
ErCircle(z1, "$\eta_1$", "$\delta_1$", "r");

%% miary (refleksyjne):
z15 = (10mm,0mm);
%% miara x_1 z błędem \epsilon_1
ErRectangle(z15, "$x_1$", "$\epsilon_1$", "l");
CircleToRectangle(z15,z1, "$\lambda_1$");

z10 = (10mm,10mm);
%% miara x_2 z błędem \epsilon_2
ErRectangle(z10, "$x_2$", "$\epsilon_2$", "l");
CircleToRectangle(z10,z1, "$\lambda_2$");

z11 = (10mm,20mm);
%% miara x_3 z błędem \epsilon_3
ErRectangle(z11, "$x_3$", "$\epsilon_3$", "l");
CircleToRectangle(z11,z1, "$\lambda_3$");

Bardziej zaawansowany model jest obok na rysunku. Może komuś się też się przyda...