MODELE LINIOWE i MIESZANE WYKŠAD 5 13 kwiecie«2018 1 / 48
Plan wykªadu 1. Metody Monte Carlo we wnioskowaniu statystycznym 2. Pakiet R 2 / 48
Metody Monte Carlo we wnioskowaniu statystycznym 3 / 48
Zaªó»my,»e X 1, X 2,..., X n jest prób losow z rozkªadu X. Estymator θ parametru θ jest funkcj n-zmiennych z próby θ = θ(x 1, X 2,..., X n ). Dla uproszczenia, niech x = (x 1, x 2,..., x n ) T R n i niech x (1), x (2),... b d niezale»nymi próbami losowymi z rozkªadu X. Zmienne losowe z rozkªadu θ mog by generowane poprzez wielokrotne losowanie prób x (j) i wyznaczanie θ (j) (j) = θ(x 1, x (j) 2,..., x n (j) ) dla ka»dej z nich. 4 / 48
Zaªó»my,»e X 1 i X 2 s niezale»nymi zmiennymi losowymi ze standardowego rozkªadu normalnego. B dziemy chcieli estymowa E X 1 X 2. Aby uzyska estymator Monte-Carlo bazuj c na m replikacjach nale»y θ = E[g(X 1, X 2 )] = E X 1 X 2 1 Wygenerowa prób losow x (j) = (x (j) 1, x (j) 2 ) ze standardowego rozkªadu normalnego, j = 1, 2,..., m. 2 Wyznaczy warto±ci θ (j) = g j (x 1, x 2 ) = x (j) 1 x (j) 2 dla ka»dego j. 3 Wyznaczy ±redni θ = 1 m m θ (j) = g(x 1, X 2 ) = 1 m j=1 m j=1 x (j) 1 x (j) 2. 5 / 48
1 m=1000 2 g=numeric(m) 3 for (i in 1:m) { 4 x=rnorm(2) 5 g[i]=abs(x[1] x[2]) 6 } 7 est=mean(g) 8 est 9 10 [1] 1.161195 11 Prawdziwa warto± parametru θ wynosi 2/ π = 1.128379. 6 / 48
Bª d standardowy ±redniej z próby X rozmiaru n wynosi Var(X )/n. Dla nieobci»onego estymatora wariancji, bª d standardowy b dzie miaª posta { ŝe(x) = 1 1 n n 1 } 1/2 n (x i x) 2. i=1 1 sqrt(sum((g mean(g))^2)) / m 2 [1] 0.02705826 3 Prawdziwa warto± bª du standardowego dla estymatora θ wynosi se( θ) = (2 4/π)/m = 0.02695850. 7 / 48
Metody Monte Carlo mog by zastosowane do wyznaczenie bª du ±redniokwadratowego (MSE) estymatora. Z denicji bª d ±redniokwadratowy estymatora θ parametru θ wynosi MSE = E[( θ θ) 2 ]. Je»eli mamy m prób losowych z rozkªadu X, wtedy estymator Monte Carlo bª du ±redniokwadratowego ma posta MSE = 1 m m ( θ (j) θ) 2, i=1 gdzie θ (j) = θ(x (j) 1,..., x (j) 2 ). 8 / 48
rednia uci ta jest cz sto u»ywana do estymacji '±rodka' symetrycznego rozkªadu ci gªego, który niekoniecznie jest rozkªadem normalnym. Dla przykªadu policzymy estymator bª du ±redniokwadratowego dla ±redniej uci tej. Zaªó»my,»e X 1, X 2,..., X n jest prób losow, a X (1), X (2),..., X (n) jest uszeregowan prób losow. k-ta ±rednia uci ta jest deniowana jako X [ k] = 1 n 2k n k i=k+1 X (i). 9 / 48
W naszym przykªadzie policzymy MSE dla pierwszej ±redniej uci tej. Dodatkowo zaªo»ymy,»e próby losowe pochodz ze standardowego rozkªadu normalnego θ = E[X ] = E[X [ 1] ]] = 0. Algorytm obliczania bª du ±redniokwadratowego ma posta 1 Wygenerowa próby losowe x (j) 1,..., x (j) n z rozkªadu X. 2 Ka»d prób uszeregowa od najmniejszej do najwi kszej obserwacji. 3 Wyznaczy T (j) = 1 n 1 x (j) n 2 i=2 (i). 4 Wyznaczy MSE(T ) = 1 m m (T (j) j=1 θ) 2 = 1 m m (T (j) j=1 ) 2. 10 / 48
1 n=20 2 m=1000 3 tmean=numeric(m) 4 for (i in 1:m) { 5 x=sort(rnorm(n)) 6 tmean[i]=sum(x[2:(n 1)]) / (n 2) 7 } 8 mse=mean(tmean^2) 9 10 mse 11 [1] 0.05036731 12 sqrt(sum((tmean mean(tmean))^2)) / m 13 [1] 0.007086121 14 11 / 48
1 n=20 2 m=1000 3 tmean=numeric(m) 4 for (i in 1:m) { 5 x=sort(rnorm(n)) 6 tmean[i]=median(x) 7 } 8 mse=mean(tmean^2) 9 10 mse 11 [1] 0.07398811 12 sqrt(sum((tmean mean(tmean))^2)) / m 13 [1] 0.008600712 14 12 / 48
Wyznaczymy teraz bª d ±redniokwadratowy dla ±redniej uci tej z mieszaniny rozkªadów normalnych zadanej wzorem pn(0, σ 2 = 1) + (1 p)pn(0, σ 2 = 100). Warto± parametru θ jest równa 0. Celem jest napisanie funkcji do wyznaczania MSE(X [ k] ) dla ró»nych warto±ci parametrów p i k. 13 / 48
1 n=20 2 K=n/2 1 3 m=1000 4 mse=matrix(0,n/2,6) 5 trimmed.mse=function(n,m,k,p) { 6 tmean=numeric(m) 7 for (i in 1:m) { 8 sigma=sample(c(1,10),size=n, 9 replace=true,prob=c(p,1 p)) 10 x=sort(rnorm(n,0,sigma)) 11 tmean[i]=sum(x[(k+1):(n k)]) / (n 2 k) 12 } 13 mse.est=mean(tmean^2) 14 se.mse=sqrt(mean((tmean mean(tmean))^2)) / sqrt(m) 15 return(c(mse.est,se.mse)) 16 } 17 18 for (k in 0:K) { 19 mse[k+1,1:2]=trimmed.mse(n=n,m=m,k=k,p=1.0) 20 mse[k+1,3:4]=trimmed.mse(n=n,m=m,k=k,p=.95) 21 mse[k+1,5:6]=trimmed.mse(n=n,m=m,k=k,p=.9) 22 } 23 14 / 48
15 / 48
Je»eli X 1, X 2,..., X n jest prób losow z rozkªadu N(µ, σ 2 ), n 2, oraz S 2 jest wariancj z próby wtedy 2 (n 1)S V = χ 2 (n 1). σ 2 Jednostronny przedziaª ufno±ci 100(1 α)% ma posta (0, (n 1)S 2 /χ 2 α), gdzie χ 2 α jest kwantylem rz du α z rozkªadu χ2 (n 1). Je»eli próba pochodzi z rozkªadu normalnego z wariancj σ 2, wtedy prawdopodobie«stwo,»e ta wariancja znajduje si w przedziale ufno±ci wynosi 1 α. 1 n=20 2 alpha=.05 3 x=rnorm(n,mean=0,sd=2) 4 UCL=(n 1) var(x) / qchisq(alpha,df=n 1) 5 6 UCL 7 [1] 7.437747 8 16 / 48
Zaªó»my,»e X F X jest zmienn losow oraz»e θ jest parametrem do estymacji. Aby wyznaczy poziom istotno±ci metod Monte Carlo nale»y wykona poni»szy algorytm. 1 Dla ka»dej replikacji j = 1, 2,..., m Wygenerowa prób losow X (j) 1,..., X (j) n dla ka»dego j. Wyznaczy przedziaª ufno±ci C j dla ka»dej próby losowej. Wyznaczy y j = I (θ C j ) dla ka»dej warto±ci j. 2 Wyznaczy empiryczny poziom istotno±ci y = 1 m m j=1 y j. 17 / 48
1 n=20 2 alpha=.05 3 UCL=replicate(1000,expr={ 4 x=rnorm(n,mean=0,sd=2) 5 (n 1) var(x) / qchisq(alpha,df=n 1) 6 }) 7 8 sum(ucl>4) 9 [1] 943 10 mean(ucl>4) 11 [1] 0.943 12 18 / 48
1 n=20 2 alpha=.05 3 UCL=replicate(1000,expr={ 4 x=rchisq(n,df=2) 5 (n 1) var(x) / qchisq(alpha,df=n 1) 6 }) 7 8 sum(ucl>4) 9 [1] 784 10 mean(ucl>4) 11 [1] 0.784 12 19 / 48
Empiryczny bª d I-go rodzaju mo»na tak»e wyznaczy przy pomocy metod Monte Carlo. Procedura testowania jest powtarzana wiele razy przy zaªo»eniu prawdziwo±ci hipotezy zerowej. Procedura uzyskania bª du I-go rodzaju ma nast puj ce kroki 1 Dla ka»dej replikacji j = 1, 2,..., m Wygenerowa prób losow X (j) 1,..., X n (j) dla ka»dego j z rozkªadu uwzgl dnionego w hipotezie zerowej. Wyznaczy statystyk testow T j dla ka»dej próby losowej j. Zapisa wyniki testowania I j = 1, gdy H 0 jest odrzucana dla zadanego poziomu istotno±ci α i I j = 0 w przeciwnym wypadku. 2 Wyznaczy empiryczny bª d I-go rodzaju 1 m m j=1 I j. Je»eli bª d I-go rodzaju oznaczymy przez p wtedy bª d standardowy dla bª du I-go rodzaju ma posta p(1 p) ŝe( p) = 0.5 m m. 20 / 48
Zakªadamy,»e mamy prób losow X 1,..., X 20 z rozkªadu N(µ, σ 2 ). Testujemy H 0 : µ = 500 przeciw H 1 : µ > 500 na poziomie istotno±ci α = 0.05. 1 n=20 2 alpha=.05 3 mu0=500 4 sigma=100 5 6 m=10000 7 p=numeric(m) 8 for (j in 1:m) { 9 x=rnorm(n,mu0,sigma) 10 ttest=t.test(x,alternative='greater',mu=mu0) 11 p[j]=ttest$p.value 12 } 13 14 p.hat=mean(p<alpha) 15 se.hat=sqrt(p.hat (1 p.hat) / m) 16 print(c(p.hat,se.hat)) 17 [1] 0.04630000 0.00210134 18 Zakªadali±my,»e α = 0.05 oraz se(α) = (0.05 0.95/m) = 0.0022. 21 / 48
Wspóªczynnik sko±no±ci β 1 dla zmiennej losowej X deniujemy jako β 1 = E[(x µ X ) 3 ], σx 3 gdzie µ X = E[X ] oraz σx 2 = Var(X ). Wspóªczynnik sko±no±ci z próby jest deniowany jako 1 n n i=1 β 1 = (X i X ) 3 n (X i=1 i X ) 2 ). 3/2 ( 1 n B dziemy testowa hipotezy H 0 : β 1 = 0 przeciw H 1 : β 1 0, gdzie zakªada si,»e sko±no± z próby ma asymptotyczny rozkªad normalny ze ±redni 0 i wariancj 6/n. 22 / 48
1 n=c(10,20,30,50,100,500) 2 cv=qnorm(0.975,0,sqrt(6/n)) 3 rbind(n,cv) 4 5 n 10.000 20.000 30.000 50.000 100.00 500.000 6 cv 1.518 1.074 0.877 0.679 0.48 0.215 7 8 sk=function(x) { 9 xbar=mean(x) 10 m3=mean((x xbar)^3) 11 m2=mean((x xbar)^2) 12 return (m3 / m2^1.5) 13 } 14 23 / 48
1 p.reject=numeric(length(n)) 2 m=10000 3 4 for (i in 1:length(n)) { 5 sktests=numeric(m) 6 for (j in 1:m) { 7 x=rnorm(n[i]) 8 sktests[j]=as.integer(abs(sk(x))>=cv[i]) 9 } 10 p.reject[i]=mean(sktests) 11 } 12 13 rbind(n,p.reject) 14 n 10.0000 20.0000 30.0000 50.0000 100.0000 500.0000 15 p.reject 0.0121 0.0272 0.0348 0.0401 0.0448 0.0497 16 24 / 48
Wida,»e dla warto±ci n < 50 rozkªad asymptotyczny nie jest adekwatny. Dla maªych prób losowych nale»y u»y innego estymatora wariancji Var(β 1 ) = 6(n 2) (n + 1)(n + 3) 1 cv=qnorm(0.975,0,sqrt(6 (n 2)/((n+1) (n+3)))) 2 round(cv,4) 3 1.1355 0.9268 0.7943 0.6398 0.4660 0.2134 4 5 rbind(n,p.reject) 6 n 10.0000 20.0000 30.0000 50.0000 100.0000 500.0000 7 p.reject 0.0553 0.0547 0.0558 0.0487 0.0492 0.0516 8 25 / 48
Bª d II-go rodzaju (β) - nieodrzucenie hipotezy zerowej, która jest w rzeczywisto±ci faªszywa. Moc testu - prawdopodobie«stwo niepopeªnienia bª du drugiego rodzaju. Estymator Monte Carlo mocy testu mo»na uzyska przy pomocy poni»- szego algorytmu 1 Wybra kilka ró»nych warto±ci parametru θ 1 Θ. 2 Dla ka»dej replikacji j = 1, 2,..., m Wygenerowa prób losow X (j) 1,..., X n (j) dla ka»dego j z zaªo»eniami uwzgl dnionymi w hipotezie alternatywnej θ = θ 1. Wyznaczy statystyk testow T j dla ka»dej próby losowej j. Zapisa wyniki testowania I j = 1, gdy H 0 jest odrzucana dla zadanego poziomu istotno±ci α i I j = 0 w przeciwnym wypadku. 3 Wyznaczy π(θ 1 ) = 1 m m j=1 I j. 26 / 48
1 n=20 2 m=1000 3 mu0=500 4 sigma=100 5 mu=c(seq(450,650,10)) 6 M=length(mu) 7 power=numeric(m) 8 for (i in 1:M) { 9 mu1=mu[i] 10 pvalues=replicate(m,expr={ 11 x=rnorm(n,mean=mu1,sd=sigma) 12 ttest=t.test(x,alternative='greater',mu=mu0) 13 ttest$p.value }) 14 power[i]=mean(pvalues<=.05) 15 } 16 17 library(hmisc) 18 plot(mu,power) 19 abline(v=mu0,lty=1) 20 abline(h=.05,lty=1) 21 27 / 48
28 / 48
1 se=sqrt(power (1 power) / m) 2 errbar(mu,power,yplus=power+se,yminus=power se,xlab=bquote(theta)) 3 lines(mu,power,lty=3) 4 detach(package: Hmisc) 5 29 / 48
30 / 48
Rozpatrzmy ponownie mieszanin rozkªadów normalnych (1 ɛ)n(µ = 0, σ 2 = 1) + ɛn(µ = 0, σ 2 = 100), 0 ɛ 1. Gdy ɛ = 0 lub ɛ = 1 rozkªad jest normalny. W innych przypadkach mieszanina nie ma rozkªadu normalnego. Wyznaczymy moc dla testu normalno±ci opartego o wspóªczynnik sko±no±ci (opisanego wcze±niej). 31 / 48
1 alpha=.1 2 n=30 3 m=2500 4 epsilon=c(seq(0,.15,.01),seq(.15,1,.05)) 5 N=length(epsilon) 6 pwr=numeric(n) 7 cv=qnorm(1 alpha/2,0,sqrt(6 (n 2) / ((n+1) (n+3)))) 8 9 for (j in 1:N) { 10 e=epsilon[j] 11 sktests=numeric(m) 12 for (i in 1:m) { 13 sigma=sample(c(1,10),replace=true, size=n, prob=c(1 e,e)) 14 x=rnorm(n,0,sigma) 15 sktests[i]=as.integer(abs(sk(x))>=cv) 16 } 17 pwr[j]=mean(sktests) 18 } 19 } 20 } 21 32 / 48
1 plot(epsilon,pwr,type='b',xlab=bquote(epsilon),ylim=c(0,1)) 2 abline(h=.1,lty=3) 3 se=sqrt(pwr (1 pwr)/m) 4 lines(epsilon,pwr+se,lty=3) 5 lines(epsilon,pwr se,lty=3) 6 33 / 48
34 / 48
Porównamy moce trzech ró»nych testów normalno±ci Shapiro-Wilk Test oparty na odlegªo±ciach pomi dzy elementami próby (energy) Test normalno±ci oparty o wspóªczynnik sko±no±ci Rozpatrzmy ponownie mieszanin rozkªadów normalnych (1 ɛ)n(µ = 0, σ 2 = 1) + ɛn(µ = 0, σ 2 = 100), 0 ɛ 1. Gdy ɛ = 0 lub ɛ = 1 rozkªad jest normalny. mieszanina nie ma rozkªadu normalnego. W innych przypadkach 35 / 48
1 library(energy) 2 alpha=.1 3 n=30 4 m=2500 5 epsilon=.1 6 test1=test2=test3=numeric(n) 7 8 cv=qnorm(1 alpha/2,0,sqrt(6 (n 2) / ((n+1) (n+3)))) 9 10 for (j in 1:m) { 11 e=epsilon 12 sigma=sample(c(1,10),replace=true,size=n,prob=c(1 e,e)) 13 x=rnorm(n,0,sigma) 14 test1[j]=as.integer(abs(sk(x))>cv) 15 test2[j]=as.integer(shapiro.test(x)$p.value<=alpha) 16 test3[j]=as.integer(mvnorm.etest(x,r=200)$p.value<=alpha) 17 } 18 19 print(c(epsilon,mean(test1),mean(test2),mean(test3))) 20 [1] 0.1000 0.8112 0.8952 0.8820 21 detach(package:energy) 22 36 / 48
1 plot(epsilon,sim[,1],ylim=c(0,1),type='l',xlab=bquote(epsilon),ylab='power') 2 lines(epsilon,sim[,2],lty=2) 3 lines(epsilon,sim[,3],lty=4) 4 abline(h=alpha,lty=3) 5 legend('topright',1,c('skewness','s W','energy'),lty=c(1,2,4),inset=.02) 6 37 / 48
38 / 48
39 / 48
Test 'Count Five' dla dwóch prób sprawdza, czy dwie próby pochodz z rozkªadów o równych wariancjach. Test wyznacza ekstremalne obserwacje z jednej próby wzgl dem drugiej. Je±li zaªo»ymy,»e ±rednie oraz liczebno±ci dwóch prób s identyczne, wtedy obserwacja w pierwszej próbie jest uznawana za ekstremaln je±li nie jest w zakresie drugiej próby. Je±li próba ma pi lub wi cej ekstremalnych warto±ci hipoteza o równych wariancjach jest odrzucana. 40 / 48
1 x1=rnorm(20,0,sd=1) 2 x2=rnorm(20,0,sd=1.5) 3 y=c(x1,x2) 4 5 group=rep(1:2,each=length(x1)) 6 boxplot(y~group,boxwex=.3,xlim=c(.5,2.5),main='') 7 points(group,y) 8 9 range(x1) 10 [1] 1.721976 1.378195 11 range(x2) 12 [1] 3.789346 2.381543 13 14 i=which(x1<min(x2)) 15 j=which(x2>max(x1)) 16 17 x1[i] 18 numeric(0) 19 x2[j] 20 [1] 1.453466 2.381543 21 out1=sum(x1>max(x2))+sum(x1<min(x2)) 22 out2=sum(x2>max(x1))+sum(x2<min(x1)) 23 max(c(out1,out2)) 24 [1] 6 25 41 / 48
42 / 48
Rozwa»my dwie niezale»ne próby losowe z tego samego rozkªadu. Wyestymuj rozkªad empiryczny maksymalnej liczby punktów ekstremalnych oraz znajd¹ kwantyle rz du 0.80, 0.90 i 0.95. 43 / 48
1 maxout=function(x,y) { 2 X=x mean(x) 3 Y=y mean(y) 4 outx=sum(sum(x>max(y)))+sum(x<min(y)) 5 outy=sum(sum(y>max(x)))+sum(y<min(x)) 6 return(max(c(outx,outy))) 7 } 8 9 n1=n2=20 10 mu1=mu2=0 11 sigma1=sigma2=1 12 m=1000 13 14 stat=replicate(m,exp={ 15 x=rnorm(n1,mu1,sigma1) 16 y=rnorm(n2,mu2,sigma2) 17 maxout(x,y) }) 18 print(cumsum(table(stat)) / m) 19 1 2 3 4 5 6 7 8 9 10 11 20 0.156 0.521 0.742 0.872 0.934 0.970 0.984 0.994 0.996 0.999 1.000 21 print(quantile(stat,c(.8,.9,.95))) 22 80% 90% 95% 23 4 5 6 24 44 / 48
Estymacja poziomu istotno±ci dla testu 'Count ve'. 1 count5test=function(x,y) { 2 X=x mean(x) 3 Y=y mean(y) 4 outx=sum(sum(x>max(y)))+sum(x<min(y)) 5 outy=sum(sum(y>max(x)))+sum(y<min(x)) 6 return(as.integer(max(c(outx,outy))>5)) 7 } 8 9 n1=n2=20 10 mu1=mu2=0 11 sigma1=sigma2=1 12 m=1000 13 14 tests=replicate(m,exp={ 15 x=rnorm(n1,mu1,sigma1) 16 y=rnorm(n2,mu2,sigma2) 17 x=x mean(x) 18 y=y mean(y) 19 count5test(x,y) }) 20 21 alphahat=mean(tests) 22 print(alphahat) 23 [1] 0.045 45 / 48
Estymacja bª du I-go rodzaju dla testu 'Count ve'. 1 n1=20 2 n2=30 3 mu1=mu2=0 4 sigma1=sigma2=1 5 m=10000 6 7 alphahat=mean(replicate(m,exp={ 8 x=rnorm(n1,mu1,sigma1) 9 y=rnorm(n2,mu2,sigma2) 10 x=x mean(x) 11 y=y mean(y) 12 count5test(x,y) })) 13 14 print(alphahat) 15 [1] 0.1085 16 46 / 48
Estymacja mocy testu 'Count ve'. 1 sigma1=1 2 sigma2=1.5 3 4 power=mean(replicate(m,exp={ 5 x=rnorm(n1,mu1,sigma1) 6 y=rnorm(n2,mu2,sigma2) 7 count5test(x,y) })) 8 9 print(power) 10 [1] 0.626 11 47 / 48
Bibliograa Wykªad opracowany na podstawie ksi»ki: Maria L. Rizzo 'Statitical Computing with R' 48 / 48