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

Podobne dokumenty