Jak pokazać 27 by wyglądało jak 20

Wczoraj studenci z proseminarium prezentowali różne znalezione grafiki dotyczące wyborów i partii politycznych.
Poniższa przypadła mi najbardziej do gustu, pochodzi ze strony szczecinek24.

Co jest w tej grafice ciekawego? Przyjrzyjmy się wysokościom słupków. Po starannym zmierzeniu w programie graficznym mamy:

słupek PO 99 pixeli

słupek PiS 65 pixeli

słupek SLD 25 pixeli

słupek PSL 11 pixeli

Gdybyśmy przeskalowali te pixele tak by PO miało 31 jednostek, to kolejne słupki miałyby następującą liczbę jednostek

PO 31, PiS 20, SLD 8, PSL 3

Ale nijak to nie pasuje do procentów z tego obrazka! Powinno być 31, 27, 16, 7.5

Zobaczmy jak wyglądałby ten wykres, gdyby wysokość słupków odpowiadała wpisanym procentom

 

Różnica pomiędzy Po i PiS nie wygląda tak samo. Poparcie dla SLD po prawej stronie też wygląda lepiej niż po lewej

Btw: dosyć często zdarza mi się krytykować wykresy kołowe za to, że oszukują percepcje. Na co najczęściej rozmówcy odpowiadają, co z tego że oszukują percepcję, skoro i tak podawane są procenty. Więc procenty można sobie porównać. Powyższy przykład powinien pokazać, że nawet jeżeli podamy  procenty to i tak przy szybkim czytaniu opieramy się na grafice i a nie na liczbach. Patrząc na lewy wykres mamy wrażenie że poparcie dla PSL jest znikome, dla SLD małe a dla PO znacznie większe niż dla pozostałych partii. Gdybyśmy porównywali liczby albo słupki z prawego wykresu to już byśmy takiego wrażenia nie mieli.

 

Mapa wartości samochodów

Wczoraj graficznie przedstawialiśmy jak wygląda rozkład cen w zależności od roku produkcji. Co ciekawe w skali logliniowej zależność pomiędzy ceną a rokiem produkcji jest bardzo bliska liniowej dla wielu marek. Zakładając zależność liniową możemy wyznaczyć dwie liczby dla każdej marki. Średnią procentową zmianę ceny w ciągu roku i orientacyjną średnią cenę auta wyprodukowanego w roku 2006. Rok 2006 został wybrany by móc porównywać ceny różnych marek ze sobą, oczekiwaną cenę w roku 2006 wyznaczmy bez względu na to czy dany samochód był produkowany w tym roku czy nie (wykorzystamy liniową zależność aby oszacować średnią cenę w roku 2006).
Na poniższej mapie zaznaczono każdą markę w układzie dwóch współrzędnych, utraty wartości w ciągu roku oraz orientacyjnej ceny w roku 2006. Należy zaznaczyć, że wartość procentowa na osi OX to różnica pomiędzy średnimi cenami dwóch kolejnych roczników, a nie różnica pomiędzy ceną danego rocznika w dwóch kolejnych latach. Tą drugą wartość będzie można ustalić za rok.

 

Dodatkowo na tej mapie wielkością punktu zaznaczono jak wiele aut było wykorzystanych do oszacowania obu wskaźników (cztery wielkości do 100, od 100 do 200, od 200 do 500, powyżej 500) oraz z jakiego kraju pochodzi dana marka. Jeżeli chodzi o pochodzenie to z uwagi na przejęcia oraz przenoszenie produkcji do innych krajów należy tę informację traktować z dystansem.

To co ciekawego widać na tej mapie to że są auta tanie, które nie tracą wiele z czasem na wartości (np Fiat Uno), drogie, które też dużo na wartości tracą (Porche Cayenne), tanie które dużo tracą (Dacia Logan), drogie które mało tracą (Volkswagen Bora) i całe spektrum innych możliwości.

Aby łatwiej ten wykres się analizowało możemy dokonać zbliżenia

Volkswagen Passat traci średni 16% na rok i kosztuje z roku 2006 około 40tys. W otoczeniu znaleźć można np Toyote Corolle Verso. Na prawo znajdziemy Forda S-Maxa o podobnej cenie ale za to znacznie większej utracie na wartości.

Zobaczmy co się stanie jeżeli zagregujemy modele z tej samej marki.

 

Otrzymujemy mapę marek, im bardziej na lewo tej mapy tym mniejsza utrata na wartości im niżej tym tańsze auta.

 

 

 

 

 

 

 

 

Zakup kontrolowany, czyli wybieramy auto dla rodziny

Od prawie czterech lat szukam rodzinnego auta. Ostatnio rozmawiałem ze znajomym, który był zdziwiony dlaczego to taki trudny wybór. Jak to stwierdził wystarczy wprowadzić dane do komputera, określić funkcje celu i wybrać najlepszą opcję. Hmmm, może i tak.

Mamy już dane zebrane  z serwisu otomoto.pl, więc spróbujmy zobaczyć jak wyglądają rozkłady cen w czasie różnych marek. Informacje o zmianach cen znaleźć można na wielu serwisach, np. autocentrum.pl, ale tutaj przedstawimy te zmiany lepiej i czytelniej. Tak jest, konkurujemy z eutotax.

Aktualnie wysoko na liście rozważanych marek stoi Passat. Poniższe wykresy będą wykonane dla prawie każdej marki obecnej w zbiorze danych cenyAut2011. Ale dla ustalenia uwagi zobaczmy  wygląda cena Passata i jak ta cena zależy od roku produkcji (oś OX), pojemności i typu silnika (poszczególne panele) oraz wersji marki (rożne kolory kropek).

Na panelu po prawej stronie podana jest nazwa marki, liczba ofert sprzedaży aut tej marki, oraz informacja o rozkładzie cen dla aut produkowanych w danym roczniku. Każda niebieska kropka to jedna oferta sprzedaży. Czerwona kropka oznacza medianę cen, czerwone kreski oznaczają odpowiednio kwantyle 5-25% i 75-95%. Ceny są w skali logarytmicznej. Na wykresie mamy tylko dane o autach używanych, w tej kategorii mediany cen układają się prawie idealnie w linii prostej, co odpowiada stałej procentowej zmianie w cenie. Tę informację jeszcze wykorzystamy.

Z wykresów widzimy, że passaty  w dieslu z silnikiem 1900cm3 są dosyć popularne. 5 lat to jeszcze wersja B6. Zobaczmy teraz jak wyglądają podobne wykresy dla konkurencji.

 

Obrazki dla innych marek można znaleźć w katalogu tutaj.

Lub korzystając z poniższej listy marek, dla której zebrano takie wykresy.
Alfa Romeo 147, Alfa Romeo 156, Alfa Romeo 159, Alfa Romeo 166, Alfa Romeo GT,
Audi A2, Audi A3, Audi A4, Audi A5, Audi A6, Audi A6 Allroad, Audi A7, Audi A8, Audi Q5, Audi Q7, Audi TT,
BMW 118, BMW 316, BMW 318, BMW 320, BMW 325, BMW 330, BMW 520, BMW 525, BMW 530, BMW 535, BMW 730, BMW 740, BMW X3, BMW X5, BMW X6,
Chevrolet Aveo, Chevrolet Lacetti,
Chrysler 300C, Chrysler Grand Voyager, Chrysler Pacifica, Chrysler PT Cruiser, Chrysler Sebring, Chrysler Town & Country, Chrysler Voyager,
Citroen Berlingo, Citroen C1, Citroen C2, Citroen C3, Citroen C4, Citroen C4 Picasso, Citroen C5, Citroen C8, Citroen Saxo, Citroen Xsara, Citroen Xsara Picasso,
Dacia Logan,
Daewoo Lanos, Daewoo Matiz, Daewoo Nubira,
Dodge Grand Caravan, Dodge RAM,
Fiat 500, Fiat Brava, Fiat Bravo, Fiat Croma, Fiat Doblo, Fiat Ducato, Fiat Grande Punto, Fiat Marea, Fiat Multipla, Fiat Palio, Fiat Panda, Fiat Punto, Fiat Seicento, Fiat Stilo, Fiat Uno,
Ford C-MAX, Ford Fiesta, Ford Focus, Ford Focus C-Max, Ford Fusion, Ford Galaxy, Ford KA, Ford Mondeo, Ford Mustang, Ford S-Max, Ford Transit,
Honda Accord, Honda Civic, Honda CR-V, Honda Jazz,
Hyundai Accent, Hyundai Coupe, Hyundai Getz, Hyundai i30, Hyundai Matrix, Hyundai Santa Fe, Hyundai Tucson,
Jaguar S-Type, Jaguar X-Type,
Jeep Cherokee, Jeep Grand Cherokee,
Kia Carens, Kia Carnival, Kia Cee’d, Kia Picanto, Kia Rio, Kia Sorento, Kia Sportage,
Lancia Lybra,
Land Rover Discovery, Land Rover Freelander, Land Rover Range Rover,
Lincoln Town Car,
Mazda 2, Mazda 3, Mazda 323, Mazda 323F, Mazda 5, Mazda 6, Mazda 626, Mazda CX-7, Mazda MPV, Mazda Premacy, Mazda RX-8,
Mercedes-Benz A 140, Mercedes-Benz A 160, Mercedes-Benz A 170, Mercedes-Benz A 180, Mercedes-Benz B 180, Mercedes-Benz C 180, Mercedes-Benz C 200, Mercedes-Benz C 220, Mercedes-Benz CLK 200, Mercedes-Benz E 200, Mercedes-Benz E 220, Mercedes-Benz E 270, Mercedes-Benz E 280, Mercedes-Benz E 320, Mercedes-Benz E 350, Mercedes-Benz ML 270, Mercedes-Benz ML 320, Mercedes-Benz ML 350, Mercedes-Benz S 320, Mercedes-Benz S 350, Mercedes-Benz S 500, Mercedes-Benz SLK 200, Mercedes-Benz Sprinter, Mercedes-Benz Vito,
Mini Cooper,
Mitsubishi Carisma, Mitsubishi Colt, Mitsubishi Eclipse, Mitsubishi Galant, Mitsubishi L200, Mitsubishi Lancer, Mitsubishi Outlander, Mitsubishi Pajero, Mitsubishi Space Star,
Nissan Almera, Nissan Almera Tino, Nissan Micra, Nissan Navara, Nissan Note, Nissan Patrol, Nissan Primera, Nissan Qashqai, Nissan Terrano, Nissan X-Trail,
Opel Agila, Opel Astra, Opel Combo, Opel Corsa, Opel Frontera, Opel Insignia, Opel Meriva, Opel Omega, Opel Signum, Opel Tigra, Opel Vectra, Opel Vivaro, Opel Zafira,
Peugeot 106, Peugeot 107, Peugeot 206, Peugeot 206 CC, Peugeot 207, Peugeot 306, Peugeot 307, Peugeot 308, Peugeot 406, Peugeot 407, Peugeot 607, Peugeot 807,
Peugeot Partner,
Porsche 911, Porsche Cayenne,
Renault Clio, Renault Espace, Renault Grand Espace, Renault Grand Scenic, Renault Kangoo, Renault Laguna, Renault Megane, Renault Modus, Renault Scenic, Renault Thalia, Renault Trafic, Renault Twingo,
Renault Vel Satis,
Rover 25, Rover 45, Rover 75,
Saab 9-3, Saab 9-5,
Seat Alhambra, Seat Altea, Seat Arosa, Seat Cordoba, Seat Ibiza, Seat Leon, Seat Toledo,
Skoda Fabia, Skoda Felicia, Skoda Octavia, Skoda Roomster, Skoda Superb,
Smart Fortwo,
Subaru Forester, Subaru Impreza, Subaru Legacy,
Suzuki Grand Vitara, Suzuki Jimny, Suzuki Swift, Suzuki SX4,
Toyota Auris, Toyota Avensis, Toyota Aygo, Toyota Camry, Toyota Celica, Toyota Corolla, Toyota Corolla Verso, Toyota Land Cruiser, Toyota RAV-4, Toyota Yaris,
Volkswagen Bora, Volkswagen Caddy, Volkswagen Caravelle, Volkswagen Fox, Volkswagen Golf, Volkswagen Golf Plus, Volkswagen Jetta, Volkswagen Lupo, Volkswagen Multivan, Volkswagen New Beetle, Volkswagen Passat, Volkswagen Passat CC, Volkswagen Polo, Volkswagen Sharan, Volkswagen Tiguan, Volkswagen Touareg, Volkswagen Touran, Volkswagen Transporter,
Volvo C30, Volvo S40, Volvo S60, Volvo S80, Volvo V40, Volvo V50, Volvo V70, Volvo XC 70, Volvo XC 90

Zbiór danych o cenach ofertowych aut z 1 października 2011

Kilka dni temu napisałem mały skrypt w perlu, który zbiera dane o ofertach sprzedaży samochodów z serwisu otomoto.pl.

W sumie przez kilka godzin udało się zgromadzić zbiór danych o prawie 200 tys ofertach sprzedaży auta. Katalog z danymi znajduje się tutaj. Link do programu R który wczytuje te dane znajduje się tutaj. Uwaga! plik tekstowy z danymi to 75MB.

Dla każdej oferty zebrane są takie cechy jak: cena, marka, model, wersja, moc, silnik, liczba drzwi,  rodzaj paliwa, deklarowany przebieg, rok produkcji, opis, wyposażenie, kraj pochodzenia, kolor itp.

Myślę, że to bardzo ciekawy zbiór danych. Proste podsumowania przedstawione w pliku wczytującym dane pokazują np. że prawie 1/4 z tych aut pochodzi z Niemiec. Cztery najczęściej oferowane modele to Passat (7tys ofert), Golf (6.3tys ofert), Astra (6tys ofert) i Focus (5.2tys ofert). Ciekawie będzie zobaczyć jak ceny tych aut zmieniają się w zależności od wersji, roku produkcji, przebiegu, wyposażenia. Może nawet uda się zbudować coś konkurencyjnego do eurotaxu.

 

Podkręcone wykresy

Trafiłem dziś na taki wykres:

źródło: Bankier.pl,artykuł http://www.bankier.pl/wiadomosc/Gospodarcze-osiagniecia-partii-politycznych-2417944.html

Czytaj dalej Podkręcone wykresy

Przyjąć czy odrzucić?

Dzieci śpią, czas przyjrzeć się jeszcze raz danym o głosowaniu posłów. Pewnie ostatni raz  przed ciszą wyborczą.

Dwa tematy są na taśmie, pierwszy to frekwencja posłów na głosowaniach a drugi to badanie koalicji i sojuszy w sejmie.

Zacznijmy od frekwencji. Na podstawie zbioru danych poslowieMeta zobaczmy na jakim procencie głosowań dany poseł był nieobecny. Wyniki przedstawimy w rozbiciu na ostatnią deklarowaną przez posła partię. Nazwiska i imiona posłów których nie było na ponad 42% głosowań wpiszemy na rysunku.

Nie jest tak źle, z niewielkimi wyjątkami posłowie uczestniczą w głosowaniach często. Najsumienniejsi są posłowie PO, którzy jak widać nie biorą w tym temacie przykładu z premiera.

Druga wizualizacja wymaga większego opisu, zacznijmy jednak od jej wklejenia.

Na powyższym wykresie są dwie panele, zacznijmy od omówienia górnego. Z 6583 głosowań większość dotyczyła przyjęcia lub odrzucenia jakiejś ustawy, poprawki, wniosku. Dokładnie rzecz biorąc 36.8% głosowań dotyczyło odrzucenia czegoś, 61.7% dotyczyło przyjęcia czegoś. Zobaczmy jak w czasie zmieniała się liczba głosowań za przyjęciem lub za odrzuceniem czegoś. Tak więc na osi OX mamy czas w którym odbyło się głosowanie. Osobno analizujemy głosowania za przyjęciem osobno za odrzuceniem. Znak x oznacza że danego dnia głosowano na dany temat a wielkość tego krzyżyka oznacza ile było głosowań tego dnia. Rekord padł 5 grudnia 2008 roku gdy to głosowano za przyjęciem 379 rzeczy i odrzuceniem 44 rzeczy. Grudzień poprzedniego roku był również pracowity 20 grudnia 2007 głosowano za przyjęciem 206 rzeczy. Legenda opisująca jak wielkość krzyżyka przełożyć na liczbę głosowań jest na górze. Szarymi krzywymi oznaczono estymatory jądrowe gęstości przedstawiające okresy szczególnie aktywne pod względem głosowań. Czerwona przerywana linia pokazuje których głosowań jest więcej, czy za przyjęciem czy za odrzuceniem.

Na dole tego wykresu pokazano koalicje. Koalicje wyznaczono następująco. Dla każdego miesiąca sprawdzono w których głosowaniach nie było zgodności pomiędzy posłami, czyli w których głosowaniach przynajmniej 10% posłów zagłosowało inaczej niż reszta. Bazując tylko na tych głosowaniach sprawdzono dla każdego głosowania i każdej partii czy posłowie tej partii głosowali podobnie. Dalej analizowane są tylko partie, które głosowały spójnie w głosowaniach gdzie pojawiała się różnica głosów. W ramach wybranego miesiąca liczona jest korelacja Pearsonowska pomiędzy głosami partii. Na bazie tej korelacji wyznaczany jest dendrogram który jest wykorzystywany do podziału partii na dwie grupy. I to sa grupy które są przedstawione na dolnym panelu.

Podsumowując. Dla każdego miesiąca wyznaczono partie i głosowania takie, że w ramach partii głosy były podobne, ale pomiędzy partiami się różniły. Następnie wykonano hierarchiczną analizę skupisk by określić które partie podobnie głosowały w danym roku. Uff. Zaskakujące jest, że jeżeli była duża różnica głosów w skali miesiąca to PiS i PO głosowali najczęściej różnie. To jest tym dziwniejsze, że programy tych partii nie różnią się aż tak diametralnie.

 

Team orders, czyli czy my potrzebujemy tylu posłów

Jak wygląda wybór posłów do sejmu wszyscy wiemy, możemy zakreślać dowolne nazwiska na liście ale w przecież nie wybieramy ludzi tylko kluby. Wybrani posłowie nie mają więc powodu do bycia wiernymi wyborcom ale władzom klubu. Co jakiś czas różne partie przebąkują o okręgach jednomandatowych w sejmie ale już chyba nikt nie wierzy w te deklaracje.

Zobaczmy jak samodzielnie głosują posłowie klubów. Dla każdego głosowania i każdego klubu biorącego udział w głosowaniu policzyłem jaki procent posłów zagłosowało tak samo jak większość posłów tego klubu. Oczywiście nawet jeżeli wszyscy posłowie klubu zagłosują tak samo to wcale nie znaczy, że są jakieś ,,rozkazy” klubowe, nie mniej samodzielnie myślące osoby muszą mieć czasami różne opinie. Zobaczmy więc jak to jest z tą samodzielnością.

Pierwsza rzecz, którą sprawdzimy to dla każdego klubu ile było takich głosowań, że wszyscy posłowie danego klubu głosowali tak samo.

(Należy zaznaczyć, że klub DKP nie istniał przez całą VI kadencję sejmu, licząc procent głosowań ograniczamy się tylko do głosowań podczas których posłowie tego klubu głosowali, podobnie dla pozostałych klubów).

I może jeszcze dla porównania zobaczmy ile było takich głosowań, że 90% posłów klubu głosowało tak samo

Jak widzimy, dla większości klubów w ponad 90% głosowań ponad 90% posłów głosowało tak samo. Czy my naprawdę potrzebujemy 460 posłów?

Zaskoczyć może też obserwacja, że PO głosuje bardziej jednorodnie niż PiS. Wydawać mogłoby się, że PiS głosuje tak jak chce prezes a PO to partia w której ceni się dyskusje i różnice głosów. Jak widać jednak gdy przychodzi do głosowań w Sejmie to żadna duża partia nie pozostawia wiele miejsca na demokrację.

Oczywiście 90% dla małego klubu i 90% dla dużego klubu to dwie różne wartości. Zobaczmy więc jak spójność głosowań ma się do wielkości klubu

Utrzymanie 100% zgodności dla dużego klubu jest prawie niemożliwe (przynajmniej w teorii, w praktyce to , więc około 70% głosowań), dlatego ciekawsze wyniki są dla 90% zgodności w klubie.

Można by przypuszczać że tak wysoka zgodność wynika z tego, że temat do głosowania jest oczywisty dla posłów i nie powinno zaskakiwać, że głosują tak samo. Weźmy więc dwa największe kluby i zobaczmy jak ich głosy sa zgodne.

Zaczniemy od obrazka, każdy punkt to głosowanie, na osi OX zaznaczono jaki procent posłów z PiS głosował za na tym głosowaniu, na osi OY jako procent posłów z PO głosował za.

Widać że zazwyczaj kluby głosują za lub przeciw. Opiszmy więc ten obrazek za pomocą 9 liczb. Podzielmy głosowania na 3 kategorie dla każdego z klubów, oznaczające czy nie więcej niż 10% posłów z klubu było za, czy od 10 do 90% było za i czy powyżej 90% było za.

Otrzymamy taką tabelkę

Czytaj dalej Team orders, czyli czy my potrzebujemy tylu posłów

(Klubowe) wędrówki posłów

Wczoraj dodałem zbiór danych o głosowaniach w VI kadencji Sejmu. Przy okazji w tym zbiorze znajdują się również informacje o afiliacji posłów podczas głosowań. Część posłów zmieniała swoje barwy klubowe, niektóry nawet kilka razy. Poniżej tabelka z liczbą posłów która w trakcie VI kadencji należała do x różnych partii.

Zbiór danych opisujący głosowania posłów VI kadencji

Dziś bardzo smakowity zbiór danych. Wybory za kilka dni więc mam nadzieje, że uda się przed wyborami przygotować jeszcze jakąś wizualizacje.

Ale od początku. Kilka dni temu znalazłem blog  Januarego Weinera na którym autor umieścił interesująca analizę danych o głosowaniach posłów VI kadencji. Link do tego wpisu jest tutaj: http://biokompost.wordpress.com/2011/10/01/statystyczna-mapa-sejmu/. Znajdziecie na tym blogu kilka interesujących wizualizacji, głównie badających na ile podobnie głosowali rożni posłowie. Jest też filmik pokazujący zmiany w czasie, wszystko z użyciem podstawowych technik redukcji wymiaru więc warto przeczytać.

Zapytałem Januarego o te dane i wczoraj je dostałem. Mamy więc pierwszy zbiór danych, którego sam nie zebrałem, mam nadzieje że to pierwszy z wielu. Dane są jak już wspomniałem super ciekawe, zostały wyciągnięte ze strony orka.sejm.gov.pl a następnie wyczyszczone. Skrypt R wczytujący te dane znajdziecie tutaj. Katalog z danymi w postaci tekstowej znajdziecie tutaj. Wizualizacje dotyczące tego zbioru pojawią się wkrótce.

Btw: w rozwiniętych demokracjach rząd udostępnia dane dotyczące głosowań w postaci łatwo dostępnej (czyli nie kolekcja pdf’ów), dotyczące prac nad ustawami it. Dane udostępnia i wykonuje jakieś wstępne analizy, np: http://www.govtrack.us/congress/repstats.xpd.

Regresja liniowa w R vs SAS

Wielką zaletą prowadzenia laboratoriów jest to, że gdy nie ma się czasu na realizację jakiegoś niewielkiego projektu, zawsze można zadać go studentom jako pracę na ocenę. W poprzednim roku prowadziłem przedmiot R i SAS dla około 30 studentów (nigdy nie wiadomo jak liczyć studentów, czy tych zapisanych w USOSie, czy tych co rzeczywiście przychodzą na zajęcia, czy tych co przystępują do zaliczenia). Ostatni projekt dotyczył między innymi porównania czasów wykonywania regresji liniowej na modelach o tym samym rozmiarze w R i w SAS. Kilkanaście rozwiązań i kilkanaście różnych odpowiedzi. Poniżej przedstawię wyniki studenta, Michała Marciniaka. Porównania dotyczą seryjnych wersji R (2.13.0 32bit) i SAS (9.2 32 bit). Wykonano je na Windowsie 7 procesor intel i5 i 4GB RAM.

Poniżej na trzech wykresach przedstawiono czasy wykonania regresji liniowej dla modelu z 10, 100, 1000 predyktorami oraz od 1tys do 100 mln wierszy. Dla R porównano czasy działania funkcji lm, lm.fit (odpada tworzenie model.frame), glm i glm.fit. Dla SASa procedury GENMOD, MIXED, GLM i REG.

 

Porównywane funkcje z pakietu R wykorzystują dekompozycje QR, procedury programu SAS pracują na macierzy wariancji-kowariancji zmiennych objaśnianych i objaśniających. Dla małych zbiorów danych funkcje R są szybsze, dla dużych przewagę ma SAS. W R najszybsza jest oczywiście funkcja lm.fit, wymaga ona jednak zakodowania zmiennych jakościowych wcześniej. R operuje na danych w przechowywanych pamięci więc wielkość danych na których możemy wykonać regresje jest ograniczona ilością posiadanego RAM. A w wersji 32bitowej również maksymalną ilością pamięci, którą można zaadresować dla jednego programu czyli 2GB dla Winows i 4GB dla Linuxa. W przypadku SASa nie mamy takiego ograniczenia, niezbędne dane doczytywane są na bieżąco z dysku.

Dwa komentarze dotyczące tych porównań. Gdyby użyta była wersja 64bit R to możnaby przetwarzać większe zbiory danych niż ww. 3mln wierszy. Wykonywanie regresji można znacznie przyśpieszyć instalując optymalizowaną dla procesora (lub wielowątkową) bibliotekę BLAS.

Kody użyte do generowania danych i przygotowania wykresów znajdują się w katalogu tutaj.