n - Adam Przybyłek
Transkrypt
n - Adam Przybyłek
Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 Rozdział 3 w Zastosowanie języka SQL w statystyce opisowej w da .b w Streszczenie. Relacyjne bazy danych stanowią odpowiednie narzędzie do przechowywania dużej ilości danych pochodzących z badania statystycznego. Jednak bezpośrednie mechanizmy wspierające przetwarzanie materiału statystycznego w typowych bazach sprowadzają się jedynie do wyliczenia średniej arytmetycznej, wariancji i odchylenia standardowego. Bardziej wyrafinowane obliczenia statystyczne można zaimplementować posługując się ogólnymi instrukcjami oraz funkcjami dostępnymi w ramach standardu SQL:2003. Przedstawienie sposobu deklaratywnej implementacji typowych miar statystycznych stanowi cel niniejszego opracowania. 1 Wprowadzenie pl s. Statystyka jest nauką traktującą o ilościowych metodach badania zjawisk masowych. O zjawiskach masowych mówimy wówczas, gdy badaniu podlega wystarczająco duża liczba jednostek. Tylko wtedy można bowiem zaobserwować określone prawidłowości [4]. Jednym ze sposobów przechowywania wyników obserwacji statystycznej jest zapisanie ich w relacyjnej bazie danych. Podejście takie umożliwia późniejsze przetwarzanie danych bezpośrednio w miejscu przechowywania, a do aplikacji zewnętrznych zwrócenie wyłącznie rezultatów obliczeń. Bazy danych nie dostarczają jednak bezpośrednich mechanizmów odkrywania prawidłowości statystycznych. Wprawdzie intensywny rozwój języka SQL doprowadził do powstania licznych udogodnień w przetwarzaniu danych, jednak oferują one jedynie częściowe wsparcie analizy statystycznej i nie są kompatybilne między poszczególnymi systemami baz danych. Ponadto istnieje wiele mniejszych, darmowych baz danych, których wbudowane funkcje statystyczne ograniczają się jedynie do średniej arytmetycznej, wariancji i odchylenia standardowego. Niniejsze opracowanie przedstawia sposób deklaratywnej implementacji obliczeń statystycznych za pomocą języka SQL. W celu przedstawienia generycznych rozwiązań, gwarantujących elastyczność w trakcie przenoszenia między różnymi systemami zarządzania bazą danych, postanowiono korzystać z gramatyki standardu SQL:2003 [1]. Prezentowany w pracy kod SQL napisano i testowano pod bazą Firebird 1.5. Firebird jest niewielką, darmową bazą danych typu open-source, która wywodzi się z kodu źródłowego Borland InterBase 6.0. W dalszej części rozdziału określono przedmiot badania, a następnie pokazano kwerendy SQL wspomagające kolejne etapy analizy statystycznej. Ze względu na Adam Przybyłek Uniwersytet Gdański, Katedra Informatyki Ekonomicznej, ul. Piaskowa 9, 81-824 Sopot, Polska email: [email protected] (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 A. Przybyłek ograniczoną ilość miejsca rezultaty wykonania części kwerend przedstawiono tylko fragmentarycznie. 2 Przedmiot badania w w Wykorzystany w niniejszej pracy materiał statystyczny pochodzi z badania pełnego i składa się z 391 obserwacji1. Zbiorowość statystyczną (populację) stanowią modele samochodów produkowanych w latach 1970 – 1982 w USA, Japonii i Europie. Do cech zmiennych badanej zbiorowości należą: rocznik, pochodzenie, masa, pojemność, cylindry, moc, przyspieszenie oraz spalanie. Poszczególne obserwacje badania przechowywane są jako rekordy tabeli model. Definicję tabeli model przedstawiono na listingu 1. Listing 1. Definicja tabeli model da .b w CREATE TABLE model ( id_modelu INTEGER PRIMARY KEY, rocznik SMALLINT, pochodzenie CHAR(3), -- [USA|JAP|EUR] masa INTEGER, -- [kg] pojemnosc INTEGER, -- [cm3] cylindry SMALLINT, moc INTEGER, --[KM] przyspieszenie DECIMAL(3,1), -- od 0 do 100km/h [s] spalanie DECIMAL(3,1) –- [l] ); 3 Grupowanie i zliczanie pl s. W dalszej części pracy będą używane następujące symbole: − X - badana cecha zmienna, − n - liczebność zbiorowości (391), − k - liczba przedziałów w szeregu rozdzielczym, − h - rozpiętość przedziału, − xi - w zależności od kontekstu: − wartość cechy X występująca u i-tej jednostki statystycznej w szeregu szczegółowym, gdzie i ∈ {1, 2, ..., n}, − wartość i-tego wariantu cechy w szeregu rozdzielczym punktowym, gdzie i ∈ {1, 2, ..., k}; wówczas liczba jednostek statystycznych posiadających taką wartość cechy oznaczana jest przez ni, − wartość środkowa i-tego przedziału w szeregu rozdzielczym przedziałowym, gdzie i ∈ {1, 2, ..., k}; wówczas ni oznacza liczebność i-tego przedziału, − xmin - wartość minimalna cechy X w badanej zbiorowości, − xmax - wartość maksymalna cechy X w badanej zbiorowości. Każda kolumna tabeli model zawiera nieuporządkowany szereg statystyczny – zbiór obserwacji zapisanych według kolejności wprowadzenia. Podczas prezentacji obserwacje można uporządkować za pomocą klauzuli ORDER BY, tworząc w ten sposób szereg 1 Dane zostały zaimportowane z przykładu dostępnego w ramach pakietu SPSS (www.spss.pl). 36 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 Zastosowanie języka SQL w statystyce opisowej szczegółowy (rys. 1a). Szereg szczegółowy w przypadku dużej liczby obserwacji jest mało czytelny. W związku z tym dane z szeregu szczegółowego grupuje się tworząc szereg rozdzielczy. Grupowanie polega na wyodrębnieniu jednorodnych lub względnie jednorodnych jednostek w ramach zbiorowości statystycznej [4]. Grupowanie według wariantów cechy ilościowej skokowej prowadzi do szeregu rozdzielczego punktowego. Szereg taki (rys. 1b) można utworzyć w sposób przedstawiony na listingu 2. w Listing 2. Utworzenie szeregu rozdzielczego punktowego w SELECT moc, COUNT(*) AS n FROM model GROUP BY moc ORDER BY 1; a) b) moc ... 61 62 63 64 65 66 ... da .b w moc ... 61 62 62 63 63 63 ... ni ... 1 2 3 1 10 1 ... Rys. 1. Szereg szczegółowy: a) oraz szereg rozdzielczy punktowy b) dla cechy moc Listing 3. Wyliczenie rozpiętości przedziału pl s. Analizując rezultat wykonania kwerendy można stwierdzić, że rozkład cechy moc jest wielomodalny. Oznacza to, że do dalszego wnioskowania o rozkładzie nie powinno wykorzystywać się dominanty oraz miar na niej opartych [4]. W przypadku dużej liczby wariantów cechy skokowej lub w przypadku cechy ciągłej, obszar zmienności cechy należy podzielić na przedziały. Podając dla każdego przedziału liczbę zaklasyfikowanych do niego jednostek statystycznych powstaje szereg rozdzielczy przedziałowy. Budując tego typu szeregi należy zdecydować o liczbie przedziałów oraz ich rozpiętości. Liczba przedziałów powinna być uzależniona od obszaru zmienności badanej cechy, liczebności zbiorowości oraz celu badania. W podręcznikach statystyki [2], [5] zaleca się, aby liczba przedziałów była niewiększa niż 5log(n). Na potrzeby rozpatrywanych w niniejszej pracy przykładów przyjęto, że k= 5 log n . Znając liczbę przedziałów oraz obszar zmienności badanej cechy można wyznaczyć rozpiętość przedziału w następujący sposób: h = (xmax – xmin)/k. Na listingu 3 przedstawiono sposób wyliczenia rozpiętości przedziału dla cechy masa. SELECT ( max(masa)-min(masa) ) / floor( 5*log10(Count(*)) ) AS h FROM model; Kolejnym etapem analizy statystycznej jest utworzenie przedziałów i przyporządkowanie każdemu z nich odpowiednich obserwacji. Przyporządkowanie to nazywane rozkładem można przedstawić w różnej formie [4], podając: − liczebności ni, − częstości fi = ni/n, − wskaźniki struktury Wi = (ni/n)·100%, 37 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 A. Przybyłek − dowolną z powyższych miar w formie skumulowanej, np. liczebności skumulowane i sk(ni)= ∑n j . j =1 w W celu przyporządkowania jednostek statystycznych do odpowiednich przedziałów, najprościej napisać formułę, która przekształci wartość cechy na początek przedziału, do którego dana jednostka ma należeć, np. x i / h h . Koniec przedziału można wyliczyć poprzez dodanie do początku przedziału jego rozpiętość. Następnie grupując po początkach i końcach przedziałów oraz zliczając liczbę obserwacji powstaje szereg rozdzielczy przedziałowy. Przełożenie powyższych rozważań na kod SQL zawiera listing 4. w Listing 4. Widok reprezentujący szereg rozdzielczy przedziałowy dla cechy masa da .b w CREATE VIEW masa_szereg_rozdzielczy(poczatek, koniec, n) AS SELECT floor(m.masa/przedzial.h)*przedzial.h AS poczatek, ( floor(m.masa/przedzial.h)+1 )*przedzial.h AS koniec, COUNT(*) AS n FROM model m, ( SELECT (max(masa)-min(masa)) / floor(5*log10(COUNT(*))) AS h FROM model ) przedzial GROUP BY 1, 2 ORDER BY 1; Jak już wspomniano rozkład cechy można również prezentować za pomocą liczebności skumulowanych. Szereg tego typu (rys. 2) można uzyskać wykonując odpowiednie podzapytanie skorelowane (listing 5). Kumulując w analogiczny sposób częstości zamiast liczebności można wyznaczyć dystrybuantę empiryczną. Listing 5. Wyliczenie liczebności skumulowanych szeregu rozdzielczego SELECT poczatek, koniec, n, ( SELECT sum(sz_r_in.n) FROM masa_szereg_rozdzielczy sz_r_in WHERE sz_r_in.poczatek<=sz_r.poczatek ) AS Skn FROM masa_szereg_rozdzielczy sz_r ORDER BY poczatek; koniec 799.5 932.75 1066 1199.25 1332.5 1465.75 1599 1732.25 1865.5 1998.75 2132 2265.25 2398.5 pl s. początek 666.25 799.5 932.75 1066 1199.25 1332.5 1465.75 1599 1732.25 1865.5 1998.75 2132 2265.25 ni sk(ni) 4 4 48 52 70 122 49 171 43 214 36 250 36 286 28 314 24 338 28 366 17 383 6 389 2 391 Rys. 2. Rezultat wykonania kwerendy z listingu 5 38 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 Zastosowanie języka SQL w statystyce opisowej 4 Parametry rozkładu cechy w populacji w Podstawowym zadaniem opisu statystycznego jest wyznaczenie liczbowych charakterystyk opisujących w sposób syntetyczny rozkład danej cechy. Rozkład cechy mierzalnej można rozpatrywać w czterech aspektach: tendencji centralnej, dyspersji, asymetrii, koncentracji. Do oceny każdego z tych aspektów służą charakterystyki liczbowe. Charakterystyki te nazywane są statystykami w przypadku analizy próby losowej, a parametrami w przypadku analizy pełnej populacji. Tablica 1 zawiera klasyczne miary położenia, sposób ich liczenia oraz przykładowe implementacje. Należy zauważyć, że sposób implementacji średniej geometrycznej jest konsekwencją następujących przekształceń: w x g = n x1 ⋅ x 2 ⋅ ... ⋅ x n log x g = log( x1 ⋅ x 2 ⋅ ... ⋅ x n ) 1/ n (1) 1 log x g = (log x1 + log x 2 + ... + log x n ) (3) n w x g = 10 1 n log xi n i =1 (2) ∑ (4) da .b Średnia geometryczna znajduje zastosowanie głównie w analizie szeregów czasowych do określenia przeciętnego tempa zmian w czasie. W celu przedstawienia liczenia średniej geometrycznej wygenerowano (listing 6) szereg czasowy prezentujący przeciętne spalanie modeli produkowanych w latach 1976-1980 (rys. 3). Listing 6. Utworzenie szeregu czasowego CREATE VIEW spalanie_szereg_czasowy(rok, avg_spalanie, indeks) AS SELECT m1.rocznik, AVG(m1.spalanie), AVG(m1.spalanie)/AVG(m2.spalanie) FROM model m1, model m2 WHERE m1.rocznik BETWEEN 75 AND 80 AND m2.rocznik BETWEEN 75 AND 80 AND m1.rocznik=m2.rocznik+1 GROUP BY m1.rocznik; avg_spalanie 14 13 12.4 12 8.6 indeks 0.95 0.92 0.95 0.96 0.71 pl s. rok 76 77 78 79 80 Rys. 3. Przeciętne spalanie modeli produkowanych w latach 1976–1980 Wyliczona na podstawie indeksów łańcuchowych średnia geometryczna (tabela 1) wynosi 0,9. Oznacza to, że przeciętne spalanie modeli produkowanych w latach 1976-1980 zmniejszało się z roku na rok średnio o 10%. Wyjaśnienia wymaga także implementacja średniej harmonicznej. Załóżmy, że do każdego samochodu zatankowano tyle samo litrów paliwa, a następnie jeżdżono, aż do wyczerpania paliwa i zmierzono przejechany dystans. Dzieląc łączną ilość zużytego paliwa przez łącznie przejechany dystans oraz mnożąc wynik przez 100 (bo spalanie podajemy w litrach na 100 km) otrzymujemy średnią harmoniczną dla cechy spalanie. 39 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 A. Przybyłek Tabela 1. Miary położenia - parametry klasyczne miara wzór przykładowa kwerenda wynik n 1 ∑ xi n i =1 w średnia arytmetyczna x= średnia geometryczna xg = n SELECT AVG(moc) FROM model; n w średnia harmoniczna ∏x i i =1 n xh = n / ∑ i =1 1 xi SELECT power( 10, SUM(log10(indeks))/COUNT(*) ) FROM spalanie_szereg_czasowy; SELECT COUNT(*)/SUM(1.0/spalanie) FROM model; 104 0,9 12,5 da .b w Kolejną grupę parametrów stanowią pozycyjne miary położenia: dominanta, mediana, kwantyle i percentyle. Należy zwrócić uwagę, że dominantę (D), czyli wartość cechy występującą najczęściej w badanej zbiorowości, powinno się liczyć tylko w przypadku rozkładów jednomodalnych. Ponieważ rozkład empiryczny żadnej z cech objętych badaniem nie spełnia tego wymogu, zostanie wprowadzona cecha sztuczna, poprzez zaokrąglenie poszczególnych wartości cechy przyspieszenie do wartości całkowitych. Podobny efekt można uzyskać tworząc szereg rozdzielczy przedziałowy o rozpiętości przedziałów 1. Implementację dominanty dla nowo utworzonej cechy przedstawiono w dwóch wersjach (listing 7). Wersja po lewej stronie jest prostsza, ale wymaga wsparcia ze strony DBMS możliwości zagnieżdżania funkcji agregujących. Utworzona kwerenda zwraca dwa rekordy <64, 15> oraz <64, 16>. Oznacza to, że w badanej zbiorowości najczęściej występują modele, których przyspieszenie po zaokrągleniu wynosi: 15 lub 16 sekund. Listing 7. Implementacja dominanty SELECT COUNT(*), round(przyspieszenie) AS D FROM model GROUP BY round(przyspieszenie) HAVING COUNT(*) = ( SELECT MAX(ile) FROM ( SELECT COUNT(*) AS ile FROM model GROUP BY round(przyspieszenie) ) s ); pl s. SELECT COUNT(*), round(przyspieszenie) AS D FROM model GROUP BY round(przyspieszenie) HAVING COUNT(*) = ( SELECT MAX(COUNT(*)) FROM model GROUP BY round(przyspieszenie) ); Mediana to taka wartość Me, że połowa zbiorowości ma wartości cechy niewiększe niż Me oraz połowa zbiorowości ma wartości cechy niemniejsze niż Me. Jeżeli liczba jednostek w badanej zbiorowości jest parzysta medianę przyjęło się obliczać2 jako średnią z xn/2 i x(n+2)/2 [4], [5]. Mediana dla cechy moc, wyliczona w sposób przedstawiony na listingu 8, wynosi 93. Analogicznie można zaimplementować kwantyle oraz percentyle. 2 Zgodnie z definicją dowolna wartość pomiędzy xn/2 i x(n+2)/2 jest medianą. 40 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 Zastosowanie języka SQL w statystyce opisowej Listing 8. Implementacja mediany w SELECT AVG(DISTINCT moc) FROM model m1, (SELECT COUNT(*) n FROM model) ilosc WHERE ilosc.n/2.0 <= ( --odrzucenie jednostek o wartościach cechy > Me SELECT COUNT(*) FROM model m2 WHERE m2.moc>=m1.moc ) AND ilosc.n/2.0 <= ( --odrzucenie jednostek o wartościach cechy < Me SELECT COUNT(*) FROM model m2 WHERE m2.moc<=m1.moc ); w Rozpatrując dyspersję rozkładu należy rozważyć miary przedstawione w tabeli 2. Implementację poszczególnych miar dla cechy moc zawiera listing 9, a ich wartości rys. 4. Tabela 2. Miary dyspersji miara wzór współczynnik zmienności V ( s) = da .b wzór n w miara rozstęp r = xmax – xmin n wariancja odchylenie standardowe ∑ (x s2 = i − x) 2 i =1 n = x 2 − (x ) s = s2 2 odchylenie przeciętne s ⋅ 100% x ∑x sp = i −x i =1 n Listing 9. Implementacja miar dyspersji pl s. SELECT MAX(m.moc)-MIN(m.moc) AS rozstep, SUM( power(m.moc-sr.moc, 2) ) / COUNT(*) AS wariancja, AVG(m.moc*m.moc)-AVG(m.moc)*AVG(m.moc) AS wariancja,--drugi sposób sqrt( SUM( power(m.moc-sr.moc, 2) ) / COUNT(*) ) AS odchylenie, sqrt( SUM( power(m.moc-sr.moc, 2) ) / COUNT(*) * 100 / AVG(m.moc) ) AS wsp_zmiennosci, SUM( abs(m.moc-sr.moc) ) / COUNT(*) AS odchylenie_przecietne FROM model m, ( SELECT AVG(moc) AS moc FROM model ) sr; rozstep wariancja wariancja odchylenie wsp_zmiennosci odchylenie_przecietne 184 1461,5 1461,5 38,2 37,4 30,2 Rys. 4. Wartości miar dyspersji dla cechy moc Podstawowe miary asymetrii oraz ich wartości dla cechy spalanie zostały zebrane w tabeli 3. Moment trzeci względny można zaimplementować w sposób analogiczny do wariancji. Natomiast, aby wyliczyć moment trzeci centralny należy dodatkowo utworzyć zagnieżdżone podzapytanie zwracające odchylenie standardowe w trzeciej potędze (listing 10). Wyliczona wartość momentu trzeciego centralnego (0,68) świadczy o dość silnej asymetrii dodatniej. 41 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 A. Przybyłek Tabela 3. Miary asymetrii miara wzór wynik n moment trzeci względny ∑ (x w µ3 = i − x) 3 i =1 66,9 n µ3 w moment trzeci centralny α3 = współczynnik skośności A( x) = 0,68 s3 x−D s 0,33 Listing 10. Implementacja momentu trzeciego względnego oraz centralnego da .b w SELECT AVG( power(m.spalanie-(SELECT AVG(spalanie) FROM model), 3) ) AS mi3, ( AVG( power( m.spalanie-(SELECT AVG(spalanie) FROM model), 3) ) / --s3 start power( (SELECT sqrt( AVG(power( m_in.spalanie-(SELECT AVG(spalanie) FROM model), 2)) ) AS odchylenie FROM model m_in), 3) --s3 end ) AS alfa3 FROM model m; Implementując współczynnik skośności (listing 11) przyjęto z wiadomych względów, że dominanta zostanie wyliczona po uprzednim zaokrągleniu wartości cechy spalanie do wartości całkowitych. Listing 11. Implementacja współczynnika skośności pl s. SELECT ( param.srednia - round(m.spalanie) ) / param.odchylenie AS A FROM model m, ( SELECT AVG(spalanie) AS srednia, sqrt(AVG( power( (SELECT AVG(tmp.spalanie) FROM model tmp), 2 ) )) AS odchylenie FROM model ) param GROUP BY 1 HAVING COUNT(*) = ( SELECT MAX(liczebnosc.ile) FROM ( SELECT COUNT(*) AS ile FROM model m_in GROUP BY round(m_in.spalanie) ) liczebnosc ); Do oceny spłaszczenia zwykle wykorzystywane są dwa parametry klasyczne: moment czwarty względny oraz moment czwarty centralny zwany kurtozą (tabela 4). Implementacja obu momentów (listing 12) jest analogiczna do implementacji odpowiadających im 42 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 Zastosowanie języka SQL w statystyce opisowej momentów trzecich. Wartość parametru α4 (3,72) wyliczona dla cechy moc świadczy o koncentracji większej od normalnej, występującej w rozkładach wysmukłych. Tabela 4. Miary spłaszczenia miara wzór wynik w n moment czwarty względny w moment czwarty centralny ∑ (x µ4 = α4 = i − x) 4 i =1 7939061 n µ4 3,72 s4 Listing 12. Implementacja momentu czwartego centralnego da .b w SELECT ( AVG( power( moc-(SELECT avg(moc) FROM model), 4) ) / --s4 start dpower( (SELECT sqrt( AVG(power( m_in.moc-(SELECT AVG(moc) FROM model), 2)) ) AS odchylenie FROM model m_in), 4) --s4 end ) AS kurtoza FROM model m; 5 Rozkład łączny dwóch cech pl s. Przedstawione w poprzednim podrozdziale miary służyły do analizy pojedynczej cechy. Jeżeli badane jednostki opisane są przez więcej niż jedną cechę może istnieć potrzeba zbadania współzależności między tymi cechami. Przed wprowadzeniem miar współzależności należy przypomnieć podstawowe pojęcia związane z łącznym rozkładem dwóch cech. Empiryczny łączny rozkład cechy X, Y określają liczebności nij odpowiadające parom wartości (xi, yj), gdzie: − k - liczba wariantów cechy X, − i ∈ {1, 2, ..., k}, − r - liczba wariantów cechy Y, − j ∈ {1, 2, ..., r}. W analizowanym przykładzie interesujący będzie łączny rozkład pojemności i mocy silnika. Rozkład taki można uzyskać wykonując kwerendę z listingu 13. Listing 13. Empiryczny rozkład łączny pojemności silnika i jego mocy SELECT pojemnosc, moc, COUNT(*) FROM model GROUP BY 1, 2 ORDER BY 1, 2; 43 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 A. Przybyłek w Otrzymany rozkład w dalszej części posłuży do zbadania wpływu pojemności silnika (cecha niezależna – X) na jego moc (cecha zależna – Y). Badanie takie jest uzasadnione, ponieważ między wymienionymi cechami istnieje logiczny związek przyczynowoskutkowy. Na podstawie rozkładu łącznego wyznacza się rozkłady brzegowe oraz rozkłady warunkowe. Rozkład brzegowy prezentuje strukturę rozkładu jednej cechy bez względu na rozkład drugiej cechy [5]. Wobec powyższego, należy zauważyć (tabela 5), że: − średnia rozkładu brzegowego cechy Y jest średnią arytmetyczną cechy Y rozpatrywanej indywidualnie, − wariancja rozkładu brzegowego cechy Y (nazywana także wariancją ogólną) jest wariancją cechy Y rozpatrywanej indywidualnie. w Tabela 5. Parametry rozkładu brzegowego cechy Y miara wzór w średnia rozkładu brzegowego r k ∑ y ∑ n j y= j =1 ij i =1 r r ∑y n j = k ∑∑ n j j =1 n ij da .b j =1 i =1 ∑ yj − y j =1 r wariancja rozkładu brzegowego s 2 ( y) = ( r ) ∑ n ∑ (y k 2 ij i =1 k ∑∑ n r = ) 2 j − y nj j =1 n ij j =1 i =1 Rozkład warunkowy prezentuje strukturę rozkładu jednej cechy, pod warunkiem, że druga cecha przyjęła określoną wartość [5]. Rozkład warunkowy zmiennej Y przyjęło się oznaczać Y|X=xi. Sposób liczenia parametrów rozkładów warunkowych mocy silnika, przy poszczególnych pojemnościach przedstawiono w tabeli 6, natomiast implementację na listingu 14. miara wzór pl s. Tabela 6. Parametry rozkładów warunkowych Y|X=xi r r y i = ∑ y j nij / ∑ nij j =1 j =1 r r 2 2 wariancje warunkowe s i ( y ) = ∑ ( y j − y i ) nij / ∑ nij j =1 j =1 średnie warunkowe Listing 14. Implementacja rozkładów warunkowych Y|X = xi CREATE VIEW moc_rozklad_warunkowy(pojemnosc, n, avg_moc, std_moc) AS SELECT m.pojemnosc, COUNT(*) AS n, AVG(m.moc) AS srednia_warunkowa, SUM( power(m.moc-p2.srMoc, 2) ) / COUNT(*) AS wariancja_warunkowa FROM model m, ( 44 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 Zastosowanie języka SQL w statystyce opisowej w SELECT pojemnosc, moc, COUNT(*) AS n FROM model GROUP BY 1, 2 ) p1, ( SELECT pojemnosc, AVG(moc) AS srMoc, COUNT(*) AS n FROM model GROUP BY 1 ) p2 WHERE m.pojemnosc=p1.pojemnosc AND m.moc=p1.moc AND m.pojemnosc=p2.pojemnosc GROUP BY 1 ORDER BY 1; w Pobieżna analiza otrzymanych wyników (rys. 5) ujawnia prawidłowość, że wraz ze wzrostem wartości cechy pojemność wzrastają średnie warunkowe cechy moc. Świadczy to o dodatniej korelacji między pojemnością a mocą silnika. n moc_avg moc_std ... ... ... 1 125,0 0,0 11 135,7 22,9 6 145,0 125,0 4 140,0 37,5 3 153,3 1088,9 ... ... ... da .b w pojemnosc ... 4375 4948 4981 4998 5030 ... Rys. 5. Rozkład warunkowy Y|X=xi 6 Analiza korelacji Podstawą do obliczenia siły związku korelacyjnego cechy Y względem cechy X jest równość wariancyjna (1), zakładająca, że wariancja ogólna jest sumą wariancji międzygrupowej i wariancji wewnątrzgrupowej. s 2 ( y ) = s 2 ( y i ) + si2 ( y ) (1) pl s. Wariancja ogólna opisuje dyspersję cechy Y bez wnikania w przyczyny ją wywołujące [4]. Wzory, według których liczone są poszczególne wariancje zawiera tabela 7. Tabela 7. Wariancja ogólna i jej składniki miara wynik wzór k wariancja międzygrupowa ∑(y s 2 ( yi ) = i − y ) 2 ni i =1 1343,7 n k wariancja wewnątrzgrupowa ∑s 2 i s ( y) = 2 i ( y ) ni i =1 117,8 n 45 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 A. Przybyłek r ∑(y wariancja ogólna 2 s ( y) = j − y) 2 n j j =1 1461,5 w n Wariancja międzygrupowa pokazuje zróżnicowanie cechy Y wywołane oddziaływaniem cechy X [4]. Jest to wariancja średnich rozkładów warunkowych cechy Y. Implementację wariancji międzygrupowej przedstawiono na listingu 15. Listing 15. Implementacja wariancji międzygrupowej w CREATE VIEW tmp(pojemnosc, n, sr_warunkowa, kw_roznicy) AS SELECT m.pojemnosc, COUNT(*) AS ni, AVG(m.moc) AS avg_yi, power(AVG(m.moc)-AVG(sr.moc), 2) AS kw_roznicy FROM model m, (SELECT AVG(moc) AS moc FROM model) sr GROUP BY 1 ORDER BY 1; w SELECT SUM(kw_roznicy*n)/SUM(n) AS wariancja_miedzygrupowa, sqrt( SUM(kw_roznicy*n)/SUM(n) ) AS odchylenie_miedzygrupowe FROM tmp; da .b Wariancja wewnątrzgrupowa określa zróżnicowanie cechy Y, wywołane wpływem innych czynników niż cecha X [4]. Jest to średnia ważona z wariancji rozkładów warunkowych cechy Y. Implementację wariancji wewnątrzgrupowej przedstawiono na listingu 16. Listing 16. Implementacja wariancji wewnątrzgrupowej SELECT SUM(std_moc*n)/SUM(n) AS wariancja_wewnatrzgrupowa, sqrt( SUM(std_moc*n)/SUM(n) ) AS odchylenie_wewnatrzgrupowe FROM moc_rozklad_warunkowy; Dzieląc obustronnie równość wariancyjną (1) przez wariancję ogólną otrzymujemy wyrażenie (2), w którym pierwszy składnik sumy, zwany współczynnikiem determinacji, informuje jaka część zmienności cechy Y jest wywołana zmianami cechy X, natomiast drugi składnik sumy pokazuje, jaka część zmienności cechy Y została spowodowana innymi przyczynami [4]. s 2 ( y i ) si2 ( y ) + s 2 ( y) s 2 ( y ) pl s. 1= (2) Uniwersalnymi miernikami korelacji są stosunki korelacyjne Pearsona. Stosunek korelacyjny Pearsona e(yx), mierzący siłę zależności cechy Y od cechy X, jest pierwiastkiem z współczynnika determinacji [4]. Implementację współczynnika determinacji oraz stosunku korelacyjnego Pearsona zawiera listing 17. Uzyskana w wyniku wykonania kwerendy wartość e(yx) = 0,96 wskazuje na silną korelację między pojemnością a mocą silnika. Listing 17. Implementacja współczynnika determinacji i stosunku korelacyjnego Pearsona SELECT SUM(kw_roznicy*n)/SUM(n) / AVG(param.var) AS wsp_determinacji, sqrt( SUM(kw_roznicy*n)/SUM(n) / AVG(param.var) ) AS "e(yx)" FROM tmp, ( SELECT AVG( power(m.moc-(SELECT AVG(moc) FROM model), 2) ) AS var FROM model m ) param; 46 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 Zastosowanie języka SQL w statystyce opisowej w Stosunki korelacyjne przyjmują wartości z przedziału [0,1] i świadczą o sile związku, ale nie informują o jego kierunku. Do określenia kierunku związku służ y kowariancja cech X i Y (tabela 7) [3]. Wartość kowariancji większa od zera świadczy o korelacji dodatniej. W przypadku podejrzenia występowania korelacji liniowej między cechami, zamiast stosowania stosunku korelacyjnego Pearsona, należ y posługiwać się współczynnikiem korelacji liniowej Pearsona (tabela 8). Współczynnik ten przyjmuje wartości z przedziału [–1,1]. Znak współczynnika mówi o kierunku korelacji, natomiast wartość bezwzględna o jego sile. W celu sprawdzenia, czy związek między cechami jest rzeczywiście liniowy należ y obliczyć wskaźnik krzywoliniowości m(yx) (tabela 8). Przy wartości m(yx) ≤ 0,2 związek przyjęło się traktować jako liniowy i oceniać za pomocą r(yx), w przeciwnym przypadku należ y uż ywać e(yx). Implementację kowariancji oraz współczynnika korelacji liniowej Pearsona zawiera listing 18. w Tabela 8. Miary korelacji między cechami miara wzór w kowariancja cech X i Y wynik n ∑ (x cov(x, y) = i − x ) ⋅ ( yi − y ) i =1 58816,6 da .b n cov(x, y) współczynnik korelacji liniowej Pearsona r ( yx ) = r ( xy ) = s(x) ⋅ s(y) 2 (yx) r2(yx) m(yx) = e wskaźnik krzywoliniowości 0,90 0,11 Listing 18. Implementacja kowariancji oraz współczynnika korelacji liniowej Pearsona 7 Funkcja regresji pl s. SELECT AVG( (m.pojemnosc-param.pojemnosc)*(m.moc-param.moc) ) AS cov, AVG( (m.pojemnosc-param.pojemnosc)*(m.moc-param.moc) ) / AVG(param.stdMoc) / AVG(param.stdPojemnosc) AS r FROM model m, ( SELECT AVG(sr.moc) AS moc, AVG(sr.pojemnosc) AS pojemnosc, sqrt( AVG(power(m_in.moc-sr.moc, 2)) ) AS stdMoc, sqrt( AVG(power(m_in.pojemnosc-sr.pojemnosc, 2)) ) AS stdPojemnosc FROM model m_in, ( SELECT AVG(moc) AS moc, AVG(pojemnosc) AS pojemnosc FROM model ) sr ) param; W przypadku badania zależności cech X i Y, wynik badania statystycznego można zapisać jako punkty (x1,y1), (x2,y2), ..., (xn,yn). Często istnieje potrzeba wyznaczenia funkcji określonego typu (np. liniowa, kwadratowa, potęgowa, wykładnicza) najlepiej dopasowanej do tych punktów. Funkcja ta będąca aproksymacją faktycznej zależności między zmiennymi nazywana jest funkcją regresji. Ponieważ w przypadku pojemności silnika 47 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 A. Przybyłek w i jego mocy stwierdzono korelację liniową, za postać funkcji regresji przyjęto wielomian pierwszego stopnia: ŷ = ax + b, gdzie a i b to współczynniki, które należ y wyznaczyć. Powszechnie wykorzystywanym w praktyce sposobem wyznaczania tych współczynników jest metoda najmniejszych kwadratów (MNK). MNK za najlepsze wartości współczynników przyjmuje takie, dla których suma kwadratów reszt jest najmniejsza [3]. Aby obliczyć sumę kwadratów reszt, należy najpierw wyjaśnić, czym jest reszta. Reszta dla i-tej obserwacji definiowana jest jako różnica pomiędzy wartością rzeczywistą (zaobserwowaną) a wartością teoretyczną (wyliczoną na podstawie funkcji aproksymującej): ei = yi –- ŷi. Suma kwadratów reszt może być zatem traktowana jako funkcja błędu zależna od współczynników a i b. 2 ∧ s(a, b) = ∑ e = ∑ y i − y i = ∑ ( y i − (axi + b )) i =1 i =1 i =1 w n n n 2 2 i (3) w Zadanie aproksymacji MNK sprowadza się do wyznaczenia takich wartości współczynników a i b, dla których funkcja s przyjmuje minimum. Licząc pochodne cząstkowe funkcji s, a następnie przyrównując je do zera otrzymujemy: n n n n n ∑ xi y i − ∑ x i ∑ y i i =1 i =1 2 i ∧ b= i i =1 i =1 da .b a= i =1 n ∑ y − a∑ x n n∑ x − ∑ xi i =1 i =1 n n 2 i (4) Zależności (4) po odpowiednich przekształceniach można uprościć do: a= cov( x, y ) ∧ b = y − ax s 2 ( x) (5) Podstawiając otrzymane wartości a i b do funkcji regresji otrzymujemy: yˆ = ax + b = ax + y − a x = a ( x − x) + y = (6) pl s. cov( x, y ) ( x − x) + y s 2 ( x) Wartość współczynnika a mówi o ile przeciętnie zmieni się wartość zmiennej zależnej, jeśli wartość zmiennej niezależnej wzrośnie o jednostkę. Kwerendę SQL wyliczającą według formuły (6) wartości teoretyczne mocy w zależności od pojemności silnika przedstawiono na listingu 19, natomiast rezultat jej wykonania rys. 6. Różnice między wartościami teoretycznymi, a rzeczywistymi mocy silnika mogą mieć dwa źródła: − na moc silnika mają wpływ także inne czynniki nieuwzględnione w modelu, − zależność między pojemnością a mocą silnika nie jest liniowa. Listing 19. Wyliczenie mocy teoretycznej silnika na podstawie pojemności SELECT m.pojemnosc, m.moc AS moc_rzeczywista, ( ( SELECT SUM( (m_in.pojemnosc-m_avg.pojemnosc)*(m_in.moc-m_avg.moc) ) / SUM( (m_in.pojemnosc-m_avg.pojemnosc)* (m_in.pojemnosc-m_avg.pojemnosc) ) AS a FROM model m_in 48 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 Zastosowanie języka SQL w statystyce opisowej ) * (m.pojemnosc-m_avg.pojemnosc) + m_avg.moc ) AS moc_teoretyczna FROM model m, (Select avg(moc) AS moc, avg(pojemnosc) AS pojemnosc From model) m_avg ORDER BY 1, 2; w w pojemnosc moc_rzeczywista moc_teoretyczna ... ... ... 2294 92 86,5 2310 71 86,8 2310 80 86,8 2359 96 87,8 2376 76 88,1 2392 67 88,4 2392 97 88,4 ... ... ... Rys. 6. Moc rzeczywista i teoretyczna na tle pojemności silnika w 8 Podsumowanie Literatura 1. 2. 3. 4. 5. pl s. da .b W niniejszym rozdziale przedstawiono sposób implementacji w języku SQL obliczeń na potrzeby statystyki opisowej. Kolejne kroki analizy statystycznej, poczynając od stworzenia szeregu rozdzielczego, poprzez wyliczenie parametrów rozkładu, aż po analizę korelacji i regresji wsparto odpowiednimi kwerendami SQL. Wszystkie kwerendy zostały zapisane za pomocą tzw. czystego SQL, czyli w paradygmacie deklaratywnym, bez odwoływania się do elementów proceduralnych. W szczególności podzbiór SQL-2003, który został wykorzystany na potrzeby opracowania, implementuje niemal każda relacyjna baza danych. Gwarantuje to bez większych modyfikacji przenoszalność kwerend, pomimo iż zostały napisane pod bazę Firebird. Znajomość standardu SQL umożliwia zatem bezpośrednią pracę na dowolnej relacyjnej bazie danych oraz uniezależnienie się od wysokopoziomowych narzędzi analityczno-raportujących. Ponadto umiejętność pisania złożonych kwerend umożliwia przeprowadzenie wszystkich obliczeń po stronie serwera. Do stacji roboczej trafiają wówczas jedynie wyniki przetwarzania realizowanego po stronie systemu zarządzania bazą danych. Architektura cienkiego klienta znacznie ogranicza ilość danych przesyłanych w sieci. W przypadku ogromnej ilości danych przechowywanych na zdalnym serwerze przynosi to wymierne korzyści. ISO/IEC 9075-*:2003, Database Languages – SQL Jóźwiak J., Podgórski J.: Statystyka od podstaw. Polskie Wydawnictwo Ekonomiczne, Warszawa 1998 Mac Berthouex P., Brown L.C.: Statistics for Environmental Engineers. CRC Press, Florida 2002 Makać W., Urbanek-Krzysztofiak D.: Metody opisu statystycznego. Wydawnictwo UG, Gdańsk 1997. Sobczyk M.: Statystyka. Wydawnictwo Naukowe PWN, Warszawa 1998. 49 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007 Rozdział monografii: 'Bazy Danych: Nowe Technologie', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2007 w pl s. da .b w w (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2007