Rozkład prawdopodobieństwa dla różnych prawdopodobieństw


36

Gdybym chciał uzyskać prawdopodobieństwo 9 sukcesów w 16 próbach z prawdopodobieństwem 0,6 każdej próby, mógłbym zastosować rozkład dwumianowy. Czego mogę użyć, jeśli każda z 16 prób ma inne prawdopodobieństwo sukcesu?


1
@whuber W objaśnieniu przybliżenia normalnego obliczenia średniej i odchylenia standardowego różnią się od opisu w Wikipedii. W Wiki średnia to np, a odchylenie standardowe to np (1-p). Zatem w tym problemie, dla normalnego przybliżenia zmiennego prawdopodobieństwa sukcesu w rozkładzie dwumianowym, średnia wynosi p1 + p2 + p3 + p4 + p5 + ... + pi, a wariancja to p1 (1-p1) + p2 ( 1-p2) + ... + pi (1-pi). Czy mam rację?
David

1
Zobacz Wikipedia na temat rozkładu dwumianowego Poissona . Również wyszukiwane hasło, które pojawia się tutaj kilka trafień.
Glen_b

@David Gdy wszystkie równa się do wspólnej wartości , a następnie i wykazujący że opis Wikipedii, do którego się odwołujesz, to tylko wyjątkowy przypadek. pipp1+p2++pn=npp1(1p1)++pn(1pn)=np(1p)
whuber


Odpowiedzi:


22

Jest to suma 16 (prawdopodobnie niezależnych) prób dwumianowych. Założenie niezależności pozwala nam pomnożyć prawdopodobieństwa. Stąd po dwóch próbach z prawdopodobieństwem sukcesu i szansa na sukces w obu próbach wynosi , szansa na brak sukcesu wynosi , a szansa na jeden sukces wynosi . To ostatnie wyrażenie jest ważne ze względu na fakt, że dwa sposoby osiągnięcia dokładnie jednego sukcesu wykluczają się wzajemnie: co najwyżej jeden może się zdarzyć. Oznacza to, że dodają ich prawdopodobieństwa .p 2 p 1 p 2 ( 1 - p 1 ) ( 1 - p 2 ) p 1 ( 1 - p 2 ) + ( 1 - p 1 ) p 2p1p2p1p2(1p1)(1p2)p1(1p2)+(1p1)p2

Za pomocą tych dwóch zasad - mnożą się niezależne prawdopodobieństwa i wzajemnie się wykluczają - możesz wypracować odpowiedzi dla, powiedzmy, 16 prób z prawdopodobieństwami . Aby to zrobić, musisz wziąć pod uwagę wszystkie sposoby uzyskania każdej podanej liczby sukcesów (np. 9). Istnieje sposobów na osiągnięcie 9 sukcesów. Jeden z nich występuje na przykład, gdy próby 1, 2, 4, 5, 6, 11, 12, 14 i 15 są sukcesami, a inne porażkami. Sukcesy miały prawdopodobieństwa i a awarie miały prawdopodobieństwa . Pomnożenie tych 16 liczb daje szansęp1,,p16(169)=11440p 15 1 - p 3 , 1 - p 7 , , 1 - p 13 , 1 - p 16p1,p2,p4,p5,p6,p11,p12,p14,p151p3,1p7,,1p13,1p16tej konkretnej sekwencji wyników. Sumowanie tej liczby wraz z 11 439 pozostałymi takimi liczbami daje odpowiedź.

Oczywiście użyłbyś komputera.

Przy wielu ponad 16 próbach konieczne jest przybliżenie dystrybucji. Pod warunkiem, że żadne z prawdopodobieństw i stają się zbyt małe, normalne przybliżenie zwykle działa dobrze. Za pomocą tej metody można zauważyć, że oczekiwanie na sumę prób wynosi i (ponieważ próby są niezależne) wariancja wynosi . Udajesz, że rozkład sum jest normalny ze średnią i odchyleniem standardowym . Odpowiedzi wydają się być dobre do obliczania prawdopodobieństw odpowiadających odsetkowi sukcesów, który różni się 1 - p i n μ = p 1 + p 2 + + p n σ 2 = p 1 ( 1 - p 1 ) + p 2 ( 1 - p 2 ) + + p n ( 1 - p n ) μ σ μ σ n σ μpi1pinμ=p1+p2++pnσ2=p1(1p1)+p2(1p2)++pn(1pn)μσμ przez nie więcej niż kilka wielokrotności . Gdy rośnie, to przybliżenie staje się coraz bardziej dokładne i działa dla jeszcze większych wielokrotności z dala od .σnσμ


9
Informatycy nazywają te „próbami Poissona”, aby odróżnić je od prób Bernoulliego. Oprócz aproksymacji Central Limit Theorem istnieją również dobre granice ogona. Oto jeden Wyszukiwania w Google „Granice Chernoffa dla prób Poissona” podniosą wyniki, które można znaleźć w typowym leczeniu CS.
kardynał

@Cardinal Ta nomenklatura jest interesująca. Byłoby to poprawne dla bardzo małych , ale poza tym wydaje się mylące, ponieważ w przeciwnym razie rozkład nie jest dobrze przybliżony przez rozkłady Poissona. (W CV pi
pojawiła się

1
tak, zgadzam się na nazwisko Uznałem, że to trochę dziwne, kiedy po raz pierwszy go spotkałem. Podałem go tutaj jako użyteczny termin wyszukiwania. Wygląda na to, że informatycy często biorą pod uwagę te prawdopodobieństwa w przypadku niektórych algorytmów. Chciałbym przeczytać to drugie pytanie, jeśli je znajdziesz. Czy to ten może?
kardynał

2
@cardinal ma rację, że my „ludzie CS” nazywamy je próbami Poissona. w rzeczywistości w tym przypadku standardowa granica Chernoffa-Hoeffdinga da ci dokładnie granicę, o którą prosi OP.
Suresh Venkatasubramanian

1
Zgodnie z wczorajszym komentarzem @Davida, coś jest nie tak z twoim stwierdzeniem o normalnej przybliżonej średniej jako Podsumowujemy 16 rv Bernoulliego, z których każdy może przyjąć wartość 0 lub 1, więc suma będzie miała domenę wsparcia od 0 do 16, a nie od 0 do 1. Warto też sprawdzić swoje SD.
μ=(p1+p2++pn)/n
wilki

12

Jedną alternatywą dla normalnego przybliżenia @ whubera jest użycie prawdopodobieństwa „mieszania” lub modelu hierarchicznego. Miałoby to zastosowanie, gdy są w pewien sposób podobne i można to modelować za pomocą rozkładu prawdopodobieństwa z funkcją gęstości indeksowaną przez jakiś parametr . otrzymujesz równanie całkowe:p iD i s t ( θ ) g ( p | θ ) θpipiDist(θ)g(p|θ)θ

Pr(s=9|n=16,θ)=(169)01p9(1p)7g(p|θ)dp

Prawdopodobieństwo dwumianowe pochodzi z ustawienia , normalne przybliżenie pochodzi z (myślę) ustawienia (z i zgodnie z definicją w odpowiedzi @ whubera), a następnie odnotowując „ ogony ”tego pliku PDF gwałtownie opadają wokół szczytu.g ( p | θ ) = g ( p | μ , σ ) = 1g(p|θ)=δ(pθ)μσg(p|θ)=g(p|μ,σ)=1σϕ(pμσ)μσ

Można również użyć rozkładu wersji beta, który prowadziłby do prostej formy analitycznej i który nie musi cierpieć z powodu problemu „małego p”, jaki wykonuje normalne przybliżenie - ponieważ beta jest dość elastyczny. Przy użyciu rozkładu z ustawionymi przez rozwiązania następujących równań (jest to oszacowanie „minimalnej dywergencji KL”):α , βbeta(α,β)α,β

ψ(β)-ψ(α+β)=1

ψ(α)ψ(α+β)=1ni=1nlog[pi]
ψ(β)ψ(α+β)=1ni=1nlog[1pi]

Gdzie To funkcja digamma - ściśle związana z szeregami harmonicznymi.ψ(.)

Otrzymujemy rozkład związku „dwumianowego”:

(169)1B(α,β)01p9+α1(1p)7+β1dp=(169)B(α+9,β+7)B(α,β)

Rozkład ten jest zbliżony do rozkładu normalnego w przypadku, gdy @whuber wskazuje - ale powinien dać rozsądne odpowiedzi dla małego i pochylonego - ale nie dla multimodalnego , ponieważ rozkład beta ma tylko jeden pik. Ale możesz to łatwo naprawić, po prostu używając dystrybucji beta dla trybówDzielimy całkę z na części, aby każdy element miał unikalny tryb (i wystarczającą ilość danych do oszacowania parametrów) i dopasował rozkład beta w każdym kawałku. następnie zsumuj wyniki, zauważając, że dokonanie zmiany zmiennych dlap i p i M M 0 < p < 1 M p = x - LnpipiMM0<p<1M L<x<Up=xLULL<x<U całka beta przekształca się w:

B(α,β)=LU(xL)α1(Ux)β1(UL)α+β1dx

+1 Ta odpowiedź zawiera ciekawe i sprytne sugestie. Ten ostatni wygląda wyjątkowo elastycznie i potężnie.
whuber

Wystarczy wziąć coś bardzo prostego i konkretnego, załóżmy, że (i) i (ii) , dla do 16. Jakie byłoby rozwiązanie twoje oszacowania i , a zatem twoje oszacowania dla dla , jak na problem PO? pi=pi=i17i=1αβP(X=9)n=16pi=i/17i=1αβP(X=9)n=16
wilki

Świetna odpowiedź i propozycja, szczególnie beta! Byłoby fajnie widzieć tę odpowiedź zapisaną w ogólnej formie za pomocą i . sns
pglpm

8

Niech ~ z funkcją generującą prawdopodobieństwo (pgf): B e r n o u l l i ( p i )XiBernoulli(pi)

pgf=E[tXi]=1pi(1t)

Niech oznacza sumę takich niezależnych zmiennych losowych. Następnie PGF dla sumy z takich zmiennych jest: n S n = 16S=i=1nXinSn=16

pgfS=E[tS]=E[tX1]E[tX2]E[tX16] (... by independence)=i=116(1pi(1t))

Szukamy , czyli:P(S=9)

19!d9pgfSdt9|t=0

WSZYSTKIE GOTOWE. Daje to dokładne rozwiązanie symboliczne jako funkcję . Odpowiedź jest dość długa, aby wydrukować ją na ekranie, ale jest całkowicie wykonalna i zajmuje mniej niż sekundy do oceny za pomocą Mathematiki na moim komputerze.1pi1100

Przykłady

Jeśli , to: P(S=9)=9647941854334808184pi=i17,i=1 to 16P(S=9)=964794185433480818448661191875666868481=0.198268

Jeśli , to: P(S=9)=0,000228613pi=i17,i=1 to 16P(S=9)=0.000228613

Ponad 16 prób?

Przy ponad 16 próbach nie ma potrzeby przybliżania dystrybucji. Powyższa dokładna metoda działa równie łatwo dla przykładów z powiedzmy lub . Na przykład, gdy , zajmuje mniej niż sekundy do oceny całego pmf ( tj. Przy każdej wartości ) przy użyciu poniższego kodu.n = 100 n = 50 1n=50n=100n=50 s=0,1,,50110s=0,1,,50

Kod matematyczny

Biorąc pod uwagę wektor wartości , powiedz:pi

n = 16;   pvals = Table[Subscript[p, i] -> i/(n+1), {i, n}];

... oto kod Mathematica, aby zrobić wszystko, co konieczne:

pgfS = Expand[ Product[1-(1-t)Subscript[p,i], {i, n}] /. pvals];
D[pgfS, {t, 9}]/9! /. t -> 0  // N

0,198268

Aby uzyskać cały pmf:

Table[D[pgfS, {t,s}]/s! /. t -> 0 // N, {s, 0, n}]

... lub użyj jeszcze ładniejszego i szybszego (dzięki sugestii Raya Koopmana poniżej):

CoefficientList[pgfS, t] // N

Na przykład przy , obliczenie zajmuje tylko 1 sekundę , a następnie 0,002 sekundy, aby uzyskać cały pmf przy użyciu , więc jest to niezwykle wydajne.n=1000pgfSCoefficientList


1
To może być jeszcze prostsze. With[{p = Range@16/17}, N@Coefficient[Times@@(1-p+p*t),t,9]]daje prawdopodobieństwo 9 sukcesów i With[{p = Range@16/17}, N@CoefficientList[Times@@(1-p+p*t),t]]daje prawdopodobieństwo 0, ... 16 sukcesów.
Ray Koopman,

@RayKoopman That is cool. TableDla -values jest celowe, aby pozwolić na bardziej ogólne formy, które nie nadają się . Twoje użycie jest bardzo miłe! Dodałem kod powyżej, który ogromnie przyspiesza bezpośrednie podejście. Mimo to jest nawet szybszy niż . Nie ma to dużej różnicy dla poniżej 50 (oba podejścia zajmują tylko ułamek sekundy w obu kierunkach, aby wygenerować cały pmf), ale Twoja rzeczywista przewaga będzie również praktyczna, gdy n będzie naprawdę duże. npRangeCoefficientListExpandCoefficientListParallelTablenCoefficientList
wilki

5

Komentarz @wolfies, a moja próba odpowiedzi na to pytanie ujawniła ważny problem z moją drugą odpowiedzią, o której omówię później.

Przypadek szczególny (n = 16)

Istnieje dość skuteczny sposób na zakodowanie pełnej dystrybucji przy użyciu „sztuczki” polegającej na użyciu liczb podstawowych (binarnych) w obliczeniach. Wymaga tylko 4 wierszy kodu R, aby uzyskać pełny rozkład gdzie . Zasadniczo istnieją w sumie wyborów wektora które mogą przyjąć zmienne binarne . Teraz załóżmy, że każdy z osobnych wyborów numerujemy od do . To samo w sobie nie jest niczym specjalnym, ale teraz załóżmy, że reprezentujemy „liczbę wyboru” za pomocą arytmetyki podstawy 2. Teraz weź , abym mógł zapisać wszystkie opcje, aby były P r ( Z i = 1 ) = p i 2 n z = ( z 1 , , z n ) Z i 1 2 n n = 3 2 3 = 8 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 1Y=i=1nZiPr(Zi=1)=pi2nz=(z1,,zn)Zi12nn=323=8wybory Następnie w „liczbach zwykłych” staje się w „liczbach binarnych”. Załóżmy teraz, że zapisujemy je jako liczby czterocyfrowe, a następnie mamy . Teraz spójrz na ostatnie cyfry każdej liczby - można traktować jako itd. Liczenie w postaci binarnej zapewnia skuteczny sposób organizacji sumowania . Na szczęście istnieje funkcja R, która może wykonać dla nas tę konwersję binarną, wywołana i przekonwertujemy surową formę binarną na liczbę za pomocą , wtedy otrzymamy wektor z1,2,3,4,5,6,7,80001 , 0010 , 0011 , 0100 , 0101 , 0110 , 0111 , 1000 3 001 ( Z 1 = 0 , Z 2 = 0 , Z 3 = 1 )1,10,11,100,101,110,111,10000001,0010,0011,0100,0101,0110,0111,1000300132 y = 9(Z1=0,Z2=0,Z3=1)Y=1intToBits(x)as.numeric(intToBits(x))32elementy, przy czym każdy element jest cyfrą podstawowej wersji 2 naszego numeru (czytany od prawej do lewej, nie od lewej do prawej). Używając tej sztuczki w połączeniu z innymi wektoryzacjami R, możemy obliczyć prawdopodobieństwo, że w 4 liniach kodu R:y=9

exact_calc <- function(y,p){
    n       <- length(p)
    z       <- t(matrix(as.numeric(intToBits(1:2^n)),ncol=2^n))[,1:n] #don't need columns n+1,...,32 as these are always 0
    pz      <- z%*%log(p/(1-p))+sum(log(1-p))
    ydist   <- rowsum(exp(pz),rowSums(z))
    return(ydist[y+1])
}

Podłączenie jednolitego przypadku i przypadek root sqrt daje pełną dystrybucję dla y jako: p ( 2 ) i =pi(1)=i17pi(2)=i17

yPr(Y=y|pi=i17)Pr(Y=y|pi=i17)00.00000.055810.00000.178420.00030.265230.00260.243040.01390.153650.04910.071060.11810.024870.19830.006780.23530.001490.19830.0002100.11810.0000110.04910.0000120.01390.0000130.00260.0000140.00030.0000150.00000.0000160.00000.0000

Tak dla specyficznego problemu z sukcesów w próbach, dokładne obliczenia są prosto do przodu. Działa to również dla wielu prawdopodobieństw do około - poza tym prawdopodobnie zaczniesz mieć problemy z pamięcią i potrzebne są różne sztuczki obliczeniowe.16 n = 20y16n=20

Zauważ, że stosując mój sugerowany „rozkład beta” otrzymujemy oszacowania parametrów a to daje oszacowanie prawdopodobieństwa, które jest prawie równomierne w , dając przybliżoną wartość . Wydaje się to dziwne, biorąc pod uwagę, że gęstość rozkładu beta z ściśle zbliża się do histogramu wartości . Co poszło nie tak?y p r ( y = 9 ) = 0,06799 1α=β=1.3206y α=β=1,3206pipr(y=9)=0.06799117α=β=1.3206pi

Ogólna sprawa

Omówię teraz bardziej ogólny przypadek i dlaczego moje proste przybliżenie wersji beta nie powiodło się. Zasadniczo, pisząc a następnie mieszając nad z innym rozkładem faktycznie przyjmuje ważne założenie - że możemy oszacować rzeczywiste prawdopodobieństwo za pomocą jedno prawdopodobieństwo dwumianowe - jedynym problemem, który pozostaje, jest to, której wartości użyć. Jednym ze sposobów na to jest użycie gęstości mieszania, która jest dyskretnie jednorodna w stosunku do rzeczywistego . Zastępujemy więc rozkład beta gęstością dyskretnąp p f ( θ ) p p i p B e t a ( a , b ) p 16 i = 1 w i δ ( p - p i ) p i w i p i(y|n,p)Binom(n,p)ppf(θ)ppipBeta(a,b)pi=116wiδ(ppi). Następnie za pomocą aproksymacji mieszania można wyrazić słowami, wybierając wartość z prawdopodobieństwem i zakładając, że wszystkie próby mają to prawdopodobieństwopiwi . Oczywiście, aby takie przybliżenie działało dobrze, większość wartości powinna być do siebie podobna. Zasadniczo oznacza to, że dla równomiernego rozkładu wartości @wolfies, powoduje bardzo złe przybliżenie przy użyciu rozkładu mieszania beta. To wyjaśnia również, dlaczego przybliżenie jest znacznie lepsze dla - są one mniej rozłożone.pi pi=pi=i17pi=i17

Mieszanie wykorzystuje następnie zaobserwowane do uśrednienia wszystkich możliwych wyborów pojedynczego . Ponieważ „miksowanie” jest jak średnia ważona, nie może być nic lepszego niż użycie pojedynczego najlepszego . Jeśli więc są wystarczająco rozłożone, nie może istnieć pojedynczy który mógłby zapewnić dobre przybliżenie wszystkich . p p p i p p ipi pppippi

Jedną rzeczą, którą powiedziałem w mojej drugiej odpowiedzi było to, że może być lepiej użyć mieszanki rozkładów beta w ograniczonym zakresie - ale to nadal nie pomoże tutaj, ponieważ wciąż miesza się w jednym . Bardziej sensowny jest podział przedziału na kawałki i dwumian w każdym kawałku. Na przykład możemy wybrać jako nasze podziały i dopasować dziewięć dwumianów w każdym zakresie prawdopodobieństwa . Zasadniczo w ramach każdego podziału pasowalibyśmy do prostego przybliżenia, takiego jak użycie dwumianu z prawdopodobieństwem równym średniej( 0 , 1 ) ( 0 , 0,1 , 0,2 , , 0,9 , 1 ) 0,1 p ip(0,1)(0,0.1,0.2,,0.9,1)0.1piw tym zakresie. Jeśli zmniejszymy odstępy, przybliżenie staje się arbitralnie dobre. Ale zauważ, że wszystko to sprawia, że ​​mamy do czynienia z sumą niezależnych prób dwumianowych z różnymi prawdopodobieństwami, zamiast prób Bernoulliego . Jednak poprzednia część tej odpowiedzi pokazała, że ​​możemy wykonać dokładne obliczenia pod warunkiem, że liczba dwumianów jest wystarczająco mała, powiedzmy 10-15 lub więcej.

Aby rozszerzyć odpowiedź opartą na bernoulli na odpowiedź dwumianową, po prostu „ponownie interpretujemy” zmienne . Po prostu stwierdzamy, że - redukuje to do pierwotnego opartego na ale teraz mówi, z których dwumianów odnoszą sukcesy. Tak więc przypadek oznacza teraz, że wszystkie „sukcesy” pochodzą z trzeciego dwumianu, a żaden z pierwszych dwóch.Z i = I ( X i > 0 ) Z i ( Z 1 = 0 , Z 2 = 0 , Z 3 = 1 )ZiZi=I(Xi>0)Zi(Z1=0,Z2=0,Z3=1)

Zauważ, że wciąż jest to „wykładnicze”, ponieważ liczba obliczeń jest podobna do gdzie jest liczbą dwumianów, a jest wielkością grupy - więc masz gdzie . Jest to jednak lepsze niż , z którymi miałbyś do czynienia przy użyciu losowych zmiennych bernoulli. Załóżmy na przykład, że podzieliliśmy prawdopodobieństw na grupy z prawdopodobieństwami w każdej grupie. Daje to obliczeń, w porównaniu dokggkYj=1gXjXjBin(k,pj)2gkn=16g=4k=444=256216=65536

Wybierając grup i zauważając, że limit wynosił około czyli około komórek, możemy skutecznie zastosować tę metodę, aby zwiększyć maksimum do .g=10n=20107nn=50

Jeśli dokonamy przybliżenia crudera, obniżając , zwiększymy „możliwy” rozmiar dla . oznacza, że można mieć efektywną około . Poza tym normalne przybliżenie powinno być niezwykle dokładne.gng=5n125


@momo - Myślę, że to w porządku, ponieważ moje odpowiedzi to dwa różne sposoby podejścia do problemu. Ta odpowiedź nie jest zredagowaną wersją mojej pierwszej - to po prostu inna odpowiedź
probabilityislogic

1
Aby uzyskać rozwiązanie, Rktóre jest niezwykle wydajne i obsługuje znacznie, znacznie większe wartości , zobacz stats.stackexchange.com/a/41263 . Na przykład rozwiązał ten problem dla , dając pełny rozkład w czasie krótszym niż trzy sekundy. (Porównywalne rozwiązanie Mathematica 9 - patrz odpowiedź @wolfies - działa również dobrze dla mniejszego ale nie mogło ukończyć wykonania z tak dużą wartością .)n = 10 4 n nnn=104nn
whuber

5

(Na ogół trudny do wyodrębnienia) pmf to Kod R:

Pr(S=k)=A{1,,n}|A|=k(iApi)(j{1,,n}A(1pj)).
p <- seq(1, 16) / 17
cat(p, "\n")
n <- length(p)
k <- 9
S <- seq(1, n)
A <- combn(S, k)
pr <- 0
for (i in 1:choose(n, k)) {
    pr <- pr + exp(sum(log(p[A[,i]])) + sum(log(1 - p[setdiff(S, A[,i])])))
}
cat("Pr(S = ", k, ") = ", pr, "\n", sep = "")

Dla używanych w odpowiedzi na wilki mamy:pi

Pr(S = 9) = 0.1982677

Kiedy rośnie, użyj splotu .n


1
Wykonanie tego z kodem R było bardzo pomocne. Niektórzy z nas są bardziej konkretnymi myślicielami i bardzo pomaga mieć operacyjną wersję funkcji generującej.
DW

@DWin Zapewniam wydajny Rkod w rozwiązaniu tego samego problemu (z różnymi wartościami ) na stronie stats.stackexchange.com/a/41263 . Problem rozwiązano tutaj w całkowitym czasie obliczeń 0,00012 sekund (oszacowanym przez rozwiązanie go 1000 razy) w porównaniu do 0,53 sekundy (oszacowanym przez rozwiązanie go raz) dla tego kodu i 0,00058 sekund za pomocą kodu Matematyki Wolfiesa (oszacowanego przez rozwiązanie go 1000 razy). piR
whuber

Zatem podążyłby za rozkładem Poissona-dwumianu. P(S=k)
fccoelho

+1 Bardzo przydatny post w mojej próbie odpowiedzi na to pytanie . Zastanawiałem się, czy używanie dzienników jest bardziej fajnym sformułowaniem matematycznym niż prawdziwą potrzebą. Nie przejmuję się zbytnio
biegami
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.