Kokybinių duomenų analizė Užduotys prie kompiuteriovytas/stat/kda-uzduotys.pdf · dos...
Transcript of Kokybinių duomenų analizė Užduotys prie kompiuteriovytas/stat/kda-uzduotys.pdf · dos...
Kokybinių duomenų analizėUžduotys prie kompiuterio
Vytautas Kazakevičius
2018 m. rugsėjo 19 d.
Turinys1 Nepriklausomumo tikrinimas ir atitikimo analizė 1
1.1 Sąlygos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Sprendimai . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Priklausomybės vertinimas 232.1 Sąlygos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.2 Sprendimai . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3 Logistinė regresija 413.1 Sąlygos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.2 Sprendimai . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
1 Nepriklausomumo tikrinimas ir atitikimoanalizė
1.1 Sąlygos1. (Duomenų rinkinys korupcija2016) Q35 anketos klausime prašoma įver-tinti, kiek įvairūs asmenys kalti dėl korupcijos Lietuvoje masto. Pasiaiškinki-te, kaip valstybės tarnautojų vertinimas priklauso nuo respondento nuomonėsapie tai, kam tenka didesnė atsakomybė kyšio davimo atveju (Q36 klausimas).
• Žmonių, neturinčių nuomonės apie vieną ar kitą klausimą, į analizęneįtraukite.
• Q35 klausimą atitinkančio faktoriaus reikšmės turi būti 1, 2, 3, 4 ir 5.
1
• Nupieškite diagramą, atitinkančią gautą dažnių lentelę.
• Pritaikykite Pirsono χ2 kriterijų. Jei kompiuteris perspės dėl nepa-grįsto kriterijaus taikymo, pakartokite procedūrą, pakoregavę dažniųlentelę.
• Interpretuokite rezultatus.
• Atspausdinkite Pirsono liekanų matricą ir bandykite spėti, kokios pag-rindinės priklausomybės priežastys.
• Atlikite atitikimo analizę ir interpretuokite rezultatus.
2. (Duomenų rinkinys korupcija2016) Q42 anketos klausime klausiama,kur reiktų nukreipti didžiausias pajėgas, kovojant su korupcija. Pasiaiškin-kite, ar respondento nuomonė priklauso nuo jo išsilavinimo (S4 klausimas).
• Žmones be išsilavinimo prijunkite prie žmonių su pradiniu išsilavinimu.
• Nupieškite abiejų kintamųjų reikšmių pasiskirstymo skritulines diagra-mas.
• Žmones, neatsakiusius į Q42 klausimą, laikykite atskira grupe.
• Sudarykite abiejų kintamųjų dažnių lentelę; lentelės eilutės turi atitiktiįvairius išsilavinimo lygius.
• Transformuokite lentelę, kad matytųsi kiek procentų įvairių išsilavini-mų žmonių renkasi vienokį ar kitokį atsakymą.
• Pakomentuokite rezultatus; bandykite spėti, ar nepriklausomumo hi-potezė bus atmesta ir jei taip tai kodėl.
• Pritaikykite Pirsono χ2 kriterijų ir patikrinkite savo spėjimą.
• Atlikite atitikimo analizę ir interpretuokite rezultatus.
3. Tegu (X, Y ) yra atsitiktinis vektorius, įgyjantis reikšmes (j, k) su tiki-mybėmis pjk; čia p = (pjk) matrica yra
p =(a ba b+ c
)
pavidalo.
2
• Su kokiomis a, b ir c reikšmėmis X ir Y dydžiai nepriklausomi?
• Kokia yra Pirsono χ2 nepriklausomumo kriterijaus pirmos rūšies klai-dos tikimybė, kai n nedidelis; pavyzdžiui, n = 5, 6, 7, 8, 9, 10? Ar jipriklauso nuo a ir b?
• Kokia yra Pirsono χ2 nepriklausomumo kriterijaus galia, kai n = 50?Imkite a = b ir paskaičiuokite galią su įvairiomis c reikšmėmis. Rezul-tatus pavaizduokite grafiškai.
4. Tegu (X, Y ) yra atsitiktinis vektorius, įgyjantis reikšmes (j, k) su tikimy-bėmis pjk, j, k = 1, 2. Mano skaičiavimai rodo, kad jei X ir Y nepriklausomiir n didelis, tai statistika
Z =√n
p11 − p1+p+1√p1+p+1(1− p1+)(1− p+1)
pasiskirsčiusi apytiksliai pagal standartinį normalųjį dėsnį. Taigi nepriklau-somumo hipotezę galima būtų tikrinti taip: hipotezę atmesti, kai |Z| > zα/2;čia zα/2 yra standartinio normalaus skirstinio α/2 lygmens kritinė reikšmė(t.y. 1− α/2 lygmens kvantilis). Patikrinkite, ar tikrai tokio kriterijaus pir-mos rūšies klaidos tikimybė bus α.
• Imkite n = 100,
p =(
14
14
14
14
)ir α = 0.05, 0.1, 0.15, . . . , 0.5. Rezultatus pavaizduokite grafiškai.
• Imkite n = 100, α = 0.05 ir P(X = 1) = a, P(Y = 1) = b su įvairiomisa ir b reikšmėmis. Rezultatus surašykite į lentelę.
5. (Duomenų rinkinys korupcija2016) Q1 anketos klausime prašoma įver-tinti įvairių probleminių reiškinių Lietuvoje svarbą. Paanalizuokite, ar korup-cijos svarbos vertinimas priklauso nuo alkoholizmo svarbos vertinimo.
• Žmonių neatsakiusių į vieną ar kitą klausimą, į analizę neįtraukite.
• Atsakymus neypatingai rimta problema ir visai ne problema sujunkiteį vieną.
• Perkoduoti atsakymai turi būti labai, pakankamai ir nelabai.
• Pritaikykite Pirsono χ2 kriterijų, atlikite atitikimo analizę ir pakomen-tuokite rezultatus.
3
• Pakartokite analizę, nagrinėdami tik žmonių iki 60 metų populiaciją(S2 anketos klausimas).
6. Įsivaizduokime, kad stebimi vienodai pasiskirstę atsitiktiniai dydžiai Xir Y , įgyjantys tik dvi reikšmes, ir nepriklausomumo hipotezė atmetama, kaip11 + p22 > c. Mane domina, kokia turi būti konstanta c, kad tokio kriterijauspirmos rūšies klaidos tikimybė būtų 0.05.
• Ar c priklauso nuo X ir Y skirstinio? Analizės rezultatus pavaizduokitegrafiškai.
• Ar c priklauso nuo n (imkite n = 50, 55, . . . , 100)? Analizės rezultatuspavaizduokite grafiškai.
7. (Duomenų rinkinys korupcija2016) Q2 anketos klausime prašoma pasa-kyti, ar įvairios situacijos yra korupcinės, ar ne. Mano galva, 1 ir 14 situacijosaiškiai ne korupcinės, o 2 situacija — aiškiai korupcinė, bet žmonės manoįvairiai. Priežastis man nelabai aiški, bet gal, pavyzdžiui, yra žmonių, kurietiesiog linkę visur įžvelgti korupciją. Pabandykite palyginti 1 ir 2 bei 1 ir 14situacijos vertinimus. Abiem atvejais:
• sutrumpinkite galimus atsakymus iki taip, ne ir gal;
• atspausdinkite lentelę, kurioje matytųsi tiek dažniai, tiek suminiai ei-lučių ir stulpelių dažniai;
• pritaikykite Pirsono χ2 kriterijų, atlikite atitikimo analizę ir pakomen-tuokite rezultatus.
Parašykite savo nuomonę, ar gauti rezultatai bent kažkiek naudingi, bandantatsakyti į mano nelabai aiškiai suformuluotą problemą.
8. (Duomenų rinkinys korupcija2016) Q36 anketos klausime prašoma pa-sakyti, kam tenka didesnė atsakomybė kyšio davimo atveju — duodančiamkyšį, imančiam kyšį ar abiem vienodai. Q40.1 klausime prašoma išvardintitris efektyviausias korupcijos mažinimo priemones. Duotame sąraše yra irbausmių didinimas duodantiems arba imantiems kyšius. Galima būtų pa-galvoti, kad tie, kurie labiau kaltina imančius arba duodančius kyšį, siūlysbausti, atitinkamai, imančius arba duodančius. Patikrinkite, ar tokia hipo-tezė teisinga.
• Nagrinėkite tik žmones, kurie turi nuomonę pirmuoju klausimu ir tarp 3efektyviausių priemonių paminėjo bausmių griežtinimą imantiems arbaduodantiems kyšį.
4
• Sukurkite kintamąjį kaltas, įgyjantį 3 reikšmes, imantis, duodantisir abu, priklausomai nuo atsakymo į Q36 klausimą.
• Sukurkite kintamąjį bausti, įgyjantį 3 reikšmes: imanti, duodantiir abu. Trečioji reikšmė turi būti įgyjama, kai tarp 3 efektyviausiųpriemonių paminėtas tiek bausmės griežtinimas už kyšio paėmimą, tiekuž kyšio davimą. Jei paminėta tik pirma arba tik antra priežastis,kintamasis turėtų atitinkamai įgyti pirmąją arba antrąją reikšmę.
• Sudarykite ir atspausdinkite abiejų kintamųjų dažnių lentelę. Eilutesturėtų atitikti kaltas kintamojo reikšmės.
• Patikrinkite nepriklausomumo hipotezę, atlikite atitikimo analizę ir pa-komentuokite rezultatus.
9. R funkcija chisq.test neveikia, jei vienas iš kintamųjų išsigimęs — įgyjatik vieną reikšmę. Man atrodo, kad taip neturi būti — tokiu atveju nepri-klausomumo hipotezė turėtų būti priimta, nepriklausomai nuo reikšmingumolygmens. Panagrinėkite, kaip dažnai tokia situacija susidaro ir kokia yra pa-tobulinto kriterijaus pirmos rūšies klaidos tikimybė, kai n = 10 ir stebiminepriklausomi atsitiktiniai dydžiai, kurių skirstiniai aprašomi tokiomis lente-lėmis:
X 1 2p 1− p
Y 1 212
12
• (Užduotis ant popieriaus) Kokia yra tikimybė, kad atsitiktinėje imtyjebus tik viena X kintamojo reikšmė? Kokia tikimybė, kad chisq.testfunkcija neveiks?
• Patikrinkite savo spėjimą, simuliuodami reikiamas imtis su kompiute-riu. Rezultatus pavaizduokite grafiškai.
• Nubrėžkite grafiką, iliustruojantį patobulinto kriterijaus pirmos rūšiesklaidos priklausomybę nuo p.
1.2 Sprendimai1. Iš pradžių pasigaminu reikalingą lentelę ir pavaizduoju ją grafiškai.
load("korupcija2016")kaltas<-duom$B36summary(kaltas)
5
vtkorump<-duom$B3504summary(vtkorump)
#atrenku duomenisind<-which(unclass(kaltas)==4 | unclass(vtkorump)==6)kaltas<-droplevels(kaltas[-ind])vtkorump<-droplevels(vtkorump[-ind])levels(kaltas)<-c("duodantis","imantis","abu")levels(vtkorump)<-c("1","2","3","4","5")summary(kaltas)summary(vtkorump)
#lenteletbl<-table(kaltas,vtkorump)tblbarplot(t(tbl),legend.text = c(levels(vtkorump)),
args.legend = list(x="topleft", inset=0.1),main="Valstybės tarnautojų korumpuotumo lygis",xlab="Labiau kaltas")
duodantis imantis abu
54321
Valstybės tarnautojų korumpuotumo lygis
Labiau kaltas
010
030
050
0
Pritaikau Pirsono χ2 kriterijų. Kompiuteris perspėjo, kad kriterijaus tai-kymas gali būti nepagrįstas, todėl sujungiau pirmus du lentelės stulpelius irpakartojau procedūrą. Kompiuteris pakartojo perspėjimą, bet dabar jau jįignoruoju.
6
#Pirsono testaschisq.test(tbl)tbl2<-cbind(tbl[,1]+tbl[,2],tbl[,3],tbl[,4],tbl[,5])colnames(tbl2)<-c("1-2","3","4","5")tbl2Ptest<-chisq.test(tbl2)Ptest
Rezultatai tokie:
Pearson’s Chi-squared test
data: tbl2X-squared = 6.4452, df = 6, p-value = 0.3752
Taigi valstybės tarnautojų korumpuotumo vertinimas nepriklauso nuožmogaus nuomonės apie tai, kas labiau atsakingas kyšio paėmimo atveju.Nekreipdamas dėmesio į tą išvadą, vis tiek bandysiu paanalizuoti Pirsonoliekanų matricą.
> Ptest$residuals1-2 3 4 5
duodantis 0.2220451 0.6276939 -0.3960590 -0.32034032imantis -0.6426517 -1.3354004 1.4845392 0.08599784abu 0.3552813 0.6986721 -0.8485281 0.02164029
Jeigu nepriklausomumo hipotezė būtų atmesta, pagrindinė priežastis bū-tų ta, kad tarp žmonių, labiau atsakingu laikančių imantį kyšį, neproporcin-gai daug valstybės tarnautojų korumpuotumo lygį vertina 4, ir neproporcin-gai mažai — 3.
Na ir pažiūriu, ką duos atitikimo analizė.
#CAlibrary(FactoMineR)CA(tbl2)
7
−0.15 −0.10 −0.05 0.00 0.05 0.10 0.15
−0.
08−
0.02
0.02
CA factor map
Dim 1 (98.03%)
Dim
2 (
1.97
%)
duodantis
imantis
abu 1−234
5
Ką gi, iš esmės yra tik vienas faktorius, paaiškinantis net 98% „duomenųsklaidos“. Pavadinsiu jį D faktoriumi: kuo jo reikšmė didesnė, tuo žmogus la-biau linkęs dėl kyšio ėmimo kaltinti duodantį, o ne imantį. Iš grafiko matyti,kad tokie žmonės ne taip griežtai vertina valstybės tarnautojų korumpuotu-mą.
Antras pagal svarbą faktorius paaiškina tik 2% duomenų sklaidos. Jisatspindi tą faktą, kad žmonės, kurie dėl kyšio paėmimo vienodai atsakingaislaiko abu to veiksmo dalyvius, kažkodėl linkę valstybės tarnautojų korum-puotumą vertinti kraštutiniais skaičiais: arba jį laiko labai mažu, arba labaidideliu.
2. Iš pradžių paruošiu duomenis ir nupiešiu abi skritulines diagramas.
load("korupcija2016")gaudyti<-duom$B42summary(gaudyti)levels(gaudyti)<-c("stambius","smulkius","visus","nežino")issilav<-unclass(duom$S04)issilav<-ifelse(issilav==1,2,issilav)issilav<-factor(issilav)levels(issilav)<-c("prad","neb","vid","spec","aukst","univ")summary(issilav)
oldpar<-par(mfrow=c(1,2))
8
pie(table(gaudyti), main="Gaudyti reikia")pie(table(issilav),main="Išsilavinimas")par(oldpar)
stambius
smulkius
visus
nežino
Gaudyti reikia
pradneb
vid
spec
aukst
univ
Išsilavinimas
Dabar sudarau reikalingas lenteles.
tbl<-table(issilav,gaudyti)tbltblproc<-prop.table(tbl,margin = 1)print(100*tblproc, digits=0)
Lentelė su procentais atrodo taip:
gaudytiissilav stambius smulkius visus nežino
prad 34 3 21 41neb 34 7 43 16vid 48 4 40 8spec 47 1 45 8aukst 28 4 60 8univ 49 4 43 5
Jei man reiktų spėti χ2 testo rezultatus, sakyčiau, kad nepriklausomumohipotezė bus atmesta ir kompiuteris perspės, jog rezultatai gali būti nepa-grįsti, nes labai mažai žmonių mano, kad reikia gaudyti smulkius kyšininkus.
9
Hipotezė turėtų būti atmesta ir po lentelės korekcijos (tarkime, po smulkiusstulpelio prijungimo prie visus), nes labai jau daug žmonių su viduriniu,specialiuoju viduriniu ir aukštuoju universitetiniu išsilavinimu siūlo gaudytistambius kyšininkus ir labai daug žmonių su pradiniu ir nebaigtu viduriniuišsilavinimu neturi nuomonės.
Tikrinu savo intuiciją:
chisq.test(tbl)tbl2<-cbind(tbl[,1],tbl[,2]+tbl[,3],tbl[,4])colnames(tbl2)<-c("stambius","visus","nežino")tbl2chisq.test(tbl2)library(FactoMineR)CA(tbl2)
0.0 0.5 1.0
−0.
4−
0.2
0.0
0.2
CA factor map
Dim 1 (74.21%)
Dim
2 (
25.7
9%)
prad
neb
vidspec
aukst
univ
stambius
visus
nežino
Bemaž atspėjau. Nepasakiau tik, kad kompiuteris protestuos ir po stulpe-lių sujungimo, ir nebandžiau spėti, kuris iš paminėtų faktorių yra svarbesnis.
Taigi žmonių nuomonė apie tai, kokias žuvis — stambias ar visokias —reikia gaudyti, tikrai priklauso nuo išsilavinimo. Svarbiausias faktorius, dėlkurio nepriklausomumo hipotezė buvo atmesta — labai daug žmonių su pra-diniu ir nebaigtu viduriniu išsilavinimu neturi nuomonės. Jis paaiškina 74%duomenų sklaidos. Antras faktorius (likę 26%) — žmonės su nebaigtu vidu-riniu ir aukštuoju neuniversitetiniu išsilavinimu (kokia įdomi kombinacija)labiau linkę gaudyti visokias žuvis.
10
3. 1 dalis. Tikimybių suma turi būti 1, todėl 2a + 2b + c = 1. Jei dydžiainepriklausomi, tai iš p11 = p1+p+1 išplaukia
a = (a+ b)2a, 2a+ 2b = 1
ir, reiškia, c = 0 (o a+ b = 1). Atvirkščiai, jei c = 0 ir a+ b = 1, tai (X, Y )skirstinį apibrėžianti tikimybių matrica yra(
a 12 − a
a 12 − a
).
Nesunku įsitikinti, kad visos pjk = pj+p+k lygybės teisingos ir, reiškia, dydžiainepriklausomi. Taigi atsakymas į pirmą klausimą toks: dydžiai nepriklauso-mi tada ir tik tada, kai c = 0.
2 dalis. Skaičiuojant pirmos rūšies klaidos tikimybę, reikia generuotinepriklausomus X ir Y , taigi c = 0, b = 1 − a ir 0 < a < 1
2 . Imsiu a =0.1, . . . , 0.4. Tikimybes skaičiuoja tokia programa:
a<-seq(from=0.1, to=0.4, by=0.1)n.a<-length(a)n<-(5:10)n.n<-length(n)N<-1000 #generuojamų imčių skaičiustik<-matrix(nrow = n.a, ncol = n.n)
for(i.a in (1:n.a)){for (i.n in (1:n.n)){
atmete<-rep(NA,times=N)for (imtis in (1:N)){
#generuoju imtįu<-runif(n[i.n])x<-ifelse(u<0.5,1,2)x<-factor(x)v<-runif(n[i.n])y<-ifelse(v<a[i.a],1,2)y<-factor(y)#tikrinu nepriklausomumąif (length(levels(x))==2&length(levels(y))==2){
test<-chisq.test(x,y)atmete[imtis]<-ifelse(test$p.value<0.05,1,0)
}}
11
tik[i.a,i.n]<-mean(atmete[!is.na(atmete)])}
}rownames(tik)<-c("a=0.1","a=0.2","a=0.3","a=0.4")colnames(tik)<-c("n=5","n=6","n=7","n=8","n=9","n=10")print(tik,digits = 3)
Rezultatai:
n=5 n=6 n=7 n=8 n=9 n=10a=0.1 0 0 0 0.00000 0.00000 0.00000a=0.2 0 0 0 0.00122 0.00240 0.00113a=0.3 0 0 0 0.00743 0.00417 0.00309a=0.4 0 0 0 0.01339 0.00409 0.00202
Kažkodėl pirmuose trijuose stulpeliuose yra grynas 0, o kitur — jeigu ir0, tai su daug nulių po kablelio. Tingėjau aiškintis, ką tas gali reikšti. Šiaipjau lentelė lyg ir rodo, kad pirmos rūšies klaidos tikimybė priklauso nuo a irvisada žymiai mažesnė, nei reikšmingumo lygmuo 0.05. Labai jau įtartinasrezultatas.
3 dalis. Imsiu c = 0.1, 0.2, . . . , 0.9 ir a = b = (1 − c)/4. Galią skaičiuojatokia programa:
c<-seq(from=0.1, to=0.9, by=0.1)n.c<-length(c)N<-1000n<-50galia<-numeric(n.c)
for (i.c in(1:n.c)){atmete<-rep(NA, times=N)for (imtis in (1:N)){
#generuoju imtįu<-runif(n)a<-(1-c[i.c])/4x<-ifelse(u<2*a,1,2)x<-factor(x)y<-ifelse(u<a,1,ifelse(u<2*a,2,ifelse(u<3*a,1,2)))y<-factor(y)#tikrinu nepriklausomumąif (length(levels(x))==2&length(levels(y))==2){
test<-chisq.test(x,y)
12
atmete[imtis]<-ifelse(test$p.value<0.05,1,0)}
}galia[i.c]<-mean(atmete[!is.na(atmete)])
}plot(c,galia, type = "l", main="Pirsono kriterijaus galia")
0.2 0.4 0.6 0.8
0.1
0.3
0.5
Pirsono kriterijaus galia
c
galia
Iš grafiko matyti, kad kriterijaus galia didžiausia, kai c = 0.7, o paskuipradeda mažėti. Irgi labai keistas rezultatas.
4. 1 dalis. Programa:
n<-100
alfa<-seq(from=0.05, to=0.5, by=0.05)kiek<-length(alfa)tikimybe<-numeric(kiek)
N<-1000atmete<-numeric(N)
for (j in (1:kiek)){for (i in (1:N)){
#generuoju imtį
13
x<-sample(2, size = n, replace = TRUE)y<-sample(2, size = n, replace = TRUE)
#atlieku procedūrątbl<-table(x,y)hatp<-tbl/na<-sum(hatp[1,])b<-sum(hatp[,1])z<-sqrt(n)*(hatp[1,1]-a*b)/sqrt(a*b*(1-a)*(1-b))atmete[i]<-ifelse(abs(z)>qnorm(1-alfa[j]/2), 1, 0)
}tikimybe[j]<-mean(atmete)
}plot(alfa,tikimybe, type="l",
main="Tikroji pirmos rūšies klaidos tikimybė")abline(a=0, b=1, col="red")
Rezultatas:
0.1 0.2 0.3 0.4 0.5
0.1
0.2
0.3
0.4
0.5
Tikroji pirmos rūšies klaidos tikimybė
alfa
tikim
ybe
Komentaras: panašu, kad neklydau (tiesa, teko ištaisyti klaidą — Z sta-tistikos apibrėžime buvau pamiršęs daugiklį
√n).
2 dalis. Programa:
n<-100a<-seq(from=0.1, to=0.9, by=0.1)
14
kieka<-length(a)b<-seq(from=0.1, to=0.9, by=0.1)kiekb<-length(b)tikimybe<-numeric(kieka*kiekb)dim(tikimybe)<-c(kieka,kiekb)
N<-1000atmete<-numeric(N)
for (ia in (1:kieka)){for (ib in (1:kiekb)){
for (i in (1:N)){x<-sample(2, size = n, replace = TRUE, prob=c(a[ia],1-a[ia]))y<-sample(2, size = n, replace = TRUE, prob=c(b[ib],1-b[ib]))tbl<-table(x,y)hatp<-tbl/np<-sum(hatp[1,])q<-sum(hatp[,1])z<-sqrt(n)*(hatp[1,1]-p*q)/sqrt(p*q*(1-p)*(1-q))atmete[i]<-ifelse(abs(z)>qnorm(0.975), 1, 0)
}tikimybe[ia,ib]<-mean(atmete)
}}print(tikimybe,digits=3)
Rezultatas:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9][1,] NA 0.052 0.054 0.051 0.045 0.046 0.051 0.037 0.036[2,] 0.034 0.043 0.056 0.065 0.047 0.050 0.047 0.042 0.049[3,] 0.047 0.049 0.056 0.056 0.057 0.038 0.044 0.058 0.049[4,] 0.041 0.035 0.059 0.050 0.046 0.059 0.050 0.051 0.048[5,] 0.054 0.048 0.042 0.043 0.055 0.046 0.058 0.058 0.055[6,] 0.062 0.056 0.063 0.049 0.053 0.055 0.053 0.039 0.052[7,] 0.046 0.046 0.058 0.046 0.050 0.055 0.058 0.054 0.037[8,] 0.036 0.060 0.048 0.052 0.052 0.044 0.048 0.053 0.044[9,] 0.043 0.043 0.062 0.055 0.051 0.047 0.039 0.031 0.048
Komentaras. Visur turėjo gautis 0.05. Daugmaž tiek ir gavosi, tik atve-ju a = b = 0.1 yra trūkstama reikšmė. Matyt, tarp 1000 generuotų imčiųbent vienoje arba x, arba y kintamasis neįgijo reikšmės 1. Reiktų, aišku,
15
pakoreguoti programą, bet nesinori to daryti metodiniais tikslais — kad ne-pasirodytų per daug sudėtinga (iš tikrųjų tai tingiu).
5. 1 dalis. Programa:
library(FactoMineR)load("korupcija2016")x<-duom$B0101y<-duom$B0112
#išsiaiškinu, kas slypi po faktorių reikšmių etiketėmissummary(x)summary(factor(unclass(x)))summary(y)summary(factor(unclass(y)))
#pertvarkau duomenisx<-unclass(x)y<-unclass(y)ind<-which(x<5 & y<5)x<-x[ind]y<-y[ind]x[x==4]<-3y[y==4]<-3x<-factor(x)y<-factor(y)vardai<-c("labai", "pakankamai", "nelabai")levels(x)<-vardailevels(y)<-vardai
#analizėchisq.test(x,y)
tbl<-table(x,y)CA(tbl)
Rezultatai ir komentaras. Nepriklausomumo hipotezė atmesta, o atlikusatitikimo analizę gautas toks grafikas:
16
−0.3 −0.2 −0.1 0.0 0.1 0.2 0.3 0.4
−0.
050.
050.
150.
25CA factor map
Dim 1 (94.36%)
Dim
2 (
5.64
%)
labai pakankamai
nelabai
labai
pakankamai
nelabai
Svarbiausia priežastis, dėl kurios hipotezė atmesta (jos svarba — 95%) —per daug žmonių, manančių, kad alkoholizmas yra labai svarbi problema,taip pat galvoja ir apie korupciją. Kita priežastis (jos svarba tik 5%) —per daug žmonių, manančių, kad alkoholizmas yra nesvarbi problema, taippat galvoja ir apie korupciją. Apskritai panašu, kad žmonės tiesiog vienodaivertina abi problemas.
2 dalis. Programa, rezultatai ir komentaras.
amzius<-duom$S02summary(amzius)amzius<-amzius[ind]x<-x[amzius<60]y<-y[amzius<60]chisq.test(x,y)
tbl<-table(x,y)CA(tbl)
17
−0.4 −0.2 0.0 0.2 0.4 0.6
−0.
10.
00.
10.
20.
3CA factor map
Dim 1 (80.83%)
Dim
2 (
19.1
7%)
labai
pakankamai
nelabai
labai
pakankamai
nelabai
Analizuojant tik žmones iki 60 metų, rezultatai labai panašūs. Skirtumastik tas, kad p-reikšmė ne tokia maža ir faktorių svoriai dabar yra kitokie:80% ir 20%. Toks jausmas, kad senesni žmonės labiau linkę abi problemasįvardinti, kaip labiai svarbias.
6. 1 dalis: programa ir rezultatas.
N<-1000z<-numeric(N)
a<-seq(from=0.1, to=0.9, by=0.1)kieka<-length(a)const<-numeric(kieka)n<-50
for (j in (1:kieka)){p<-c(a[j],1-a[j])for (i in (1:N)){
x<-sample(2, size=n, prob = p, replace = TRUE)y<-sample(2, size=n, prob = p, replace = TRUE)hatp<-table(x,y)/nz[i]<-ifelse(nrow(hatp)==2 &ncol(hatp)==2,hatp[1,1]+hatp[2,2],NA)
}const[j]<-quantile(z,probs = 0.95, na.rm = TRUE)
18
}plot(a,const, type="l",
main = "Kritinės konstantos priklausomybė nuo skirstinio",ylab = "",xlab = "Tikimybė, kad X=1")
0.2 0.4 0.6 0.8
0.65
0.75
0.85
Kritinės konstantos priklausomybė nuo skirstinio
Tikimybė, kad X=1
1 dalis: programa, rezultatas ir komentaras.
N<-1000z<-numeric(N)
n<-seq(from=50, to=100, by=5)kiekn<-length(n)const<-numeric(kiekn)p<-c(0.3,0.7)
for (j in (1:kiekn)){for (i in (1:N)){
x<-sample(2, size=n[j], prob = p, replace = TRUE)y<-sample(2, size=n[j], prob = p, replace = TRUE)hatp<-table(x,y)/n[j]z[i]<-ifelse(nrow(hatp)==2 &ncol(hatp)==2,hatp[1,1]+hatp[2,2],NA)
}const[j]<-quantile(z,probs = 0.95, na.rm = TRUE)
19
}plot(n,const, type="l",
main = "Kritinės konstantos priklausomybė nuo n",ylab = "",xlab = "n")
50 60 70 80 90 100
0.66
0.67
0.68
0.69
0.70
Kritinės konstantos priklausomybė nuo n
n
Laikiau, kad P(X = 1) = P(Y = 1) = 0.3 ir P(X = 2) = P(Y = 2) = 0.7.Grafiko šuolis aukštyn ties n = 85 nelabai paaiškinamas. Gal reikėjo paimtididesnį N?
7. 1 ir 2 klausimai: programa, rezultatai ir komentaras.
library(FactoMineR)load("korupcija2016")x1<-duom$B0201x2<-duom$B0202x14<-duom$B0214summary(x1)vardai<-c("taip", "ne", "gal")levels(x1)<-vardailevels(x2)<-vardailevels(x14)<-vardaisummary(x1)
20
#1 ir 2tbl<-table(x1,x2)tbl1<-matrix(nrow = 3, ncol = 4)tbl1[,1:3]<-tbltbl1[,4]<-margin.table(tbl,margin=1)tbl2<-matrix(nrow = 4, ncol = 4)tbl2[1:3,]<-tbl1tbl2[4,]<-margin.table(tbl1,margin=2)colnames(tbl2)<-c(vardai,"iš viso")rownames(tbl2)<-c(vardai,"iš viso")print(tbl2)
CA(tbl)
Lentelė atrodo taip:
taip ne gal iš visotaip 519 40 13 572ne 228 22 5 255gal 121 7 47 175iš viso 868 69 65 1002
O atitikimo analizės piešinys — taip:
0.0 0.5 1.0 1.5
−0.
40.
00.
20.
4
CA factor map
Dim 1 ( 99.52%)
Dim
2 (
0.48
%)
taipne
galtaip
ne
gal
Faktiškai tėra viena priežastis, dėl kurios nepriklausomumo hipotezė buvoatmesta (jos svarba — 99.5%): buvo per daug žmonių, kurie neturėjo nuo-
21
monės tiek apie vieną, tiek apie kitą situaciją. Kitaip tariant, viską nulėmėtie 47, kurie atsakė gal į abu klausimus.
1 ir 14 klausimai: programa, rezultatai ir komentaras.
#1 ir 14tbl<-table(x1,x14)tbl1<-matrix(nrow = 3, ncol = 4)tbl1[,1:3]<-tbltbl1[,4]<-margin.table(tbl,margin=1)tbl2<-matrix(nrow = 4, ncol = 4)tbl2[1:3,]<-tbl1tbl2[4,]<-margin.table(tbl1,margin=2)colnames(tbl2)<-c(vardai,"iš viso")rownames(tbl2)<-c(vardai,"iš viso")print(tbl2)
CA(tbl)
taip ne gal iš visotaip 263 183 126 572ne 38 184 33 255gal 22 42 111 175iš viso 323 409 270 1002
−1.0 −0.5 0.0 0.5 1.0
−0.
40.
00.
4
CA factor map
Dim 1 (57.67%)
Dim
2 (
42.3
3%) taip
ne gal
taip
ne gal
Nepriklausomumo hipotezė vėl atmesta. Šįkart abu pagrindiniai faktoriaidaugmaž vienodo svorio ir abu kartu gali būti charakterizuoti taip: žmonės,
22
kurie pasirinko kokį nors atsakymą į vieną klausimą, buvo linkę taip patatsakyti ir į antrą. Kitaip tariant, abi situacijos jiems atrodė vienodos.
2 Priklausomybės vertinimas
2.1 Sąlygos1. (Duomenų rinkinys korupcija2016) Q13 anketos klausime prašoma pa-sakyti, ar per pastaruosius 12 mėnesių teko duoti kyšį. Panagrinėkite, kaipžmonių, kurie bent kartą yra davę kyšį, dalis priklauso nuo lyties (S1 klausi-mas) ir amžiaus (S2 klausimas).
• Nagrinėkite tik žmones, atsakiusius į Q13 klausimą.
• Nagrinėdami priklausomybę nuo lyties, suskaičiuokite reikiamus tiki-mybių ir šansų santykius ir interpretuokite rezultatus.
• Nagrinėdami priklausomybę nuo amžiaus, suskirstykite žmones į tokiasgrupes: iki 25 metų, nuo 26 iki 65 metų ir virš 65 metų. Trečiąją grupęlaikydami bazine, suskaičiuokite reikiamus tikimybių ir šansų santykiusir interpretuokite rezultatus.
• Kiekvienam tikimybių ar šansų santykiui raskite asimptotinius 95%patikimumo pasikliovimo intervalus.
• Gautus rezultatus tvarkingai surašykite į lentelę.
• Su 10% reikšmingumo lygmeniu patikrinkite hipotezę, kad tikimybė,jog tiek vyrams, tiek moterims vienodai dažnai tenka duoti kyšį. Taiky-kite du kriterijus: Pirsono χ2 kriterijų ir kriterijų, paremtą atitinkamošansų santykio asimptotiniu normalumu. Palyginkite abu rezultatus.
2. Tegu stebimi du atsitiktiniai dydžiai X ir Y , įgyjantys reikšmes 1 ir 2,
rr = p11/p1+
p21/p2+, or = p11/p12
p21/p22
ir rr, or yra tų išvestinių parametrų didžiausio tikėtinumo įvertiniai. Teorijasako, kad kai n→∞,√n(ln rr − ln rr)→ N(0, σ2
rr),√n(ln or − ln or)→ N(0, σ2
or) (2.1)
suσ2rr = p12
p11p1++ p22
p21p2+ir σ2
or = 1p11
+ 1p12
+ 1p21
+ 1p22
.
23
• Patikrinkite abu rezultatus, simuliuodami reikiamas imtis kompiuteriuir suskaičiuodami atitinkamos statistikos asimptotinę dispersiją. Imki-te n = 50 ir
p =(a 1
4(1− 2a)a 3
4(1− 2a)
)su a = 0.1, 0.15, . . . , 0.4. Rezultatus tvarkingai surašykite į lentelę.
• Palyginkite asimptotinius 95% patikimumo pasikliovimo intervalus, gau-namus iš (2.1) sąryšių su analogiškais intervalais, kuriuos pateikia pa-ketas epitools.
• Koks tikrasis asimptotinių pasikliovimo intervalų patikimumas, kai nnedidelis? Imkite n = 5, 10, . . . , 30 ir
p =(
14
14
14
14
).
Rezultatus pavaizduokite grafiškai.
3. (Duomenų rinkinys korupcija2016) Q11 anketos klausime prašoma pa-sakyti savo nuomonę apie tai, ar kyšio davimas padeda išspręsti problemas,o Q13 klausime — kaip dažnai per pastaruosius 12 mėnesių teko duoti ky-šį. Panagrinėkite, kaip atsakymai į šiuos klausimus priklauso nuo lyties (S1klausimas), amžiaus (S2 klausimas) ir išsilavinimo (S4 klausimas).
• Nagrinėkite tik žmones, kurie atsakė į atitinkamą klausimą (Q11 arbaQ13).
• Nagrinėdami išsilavinimą, sustambinkite grupes. Turėtų likti 3 grupės:nebaigtas vidurinis, vidurinis arba specialusis vidurinis ir aukštasis.
• Paskaičiuokite visas korektiškas koreliacijas ir pakomentuokite rezulta-tus.
• Jei įmanoma, raskite koreliacijų pasikliovimo intervalus ir patikrinkitenekoreliuotumo hipotezes.
4. Kazakevičius yra iškėlęs hipotezę, kad Spirmeno ranginis koreliacijos ko-eficientas tarp X ir Y yra įprastos koreliacijos ρ tarp u(X) ir v(Y ) įvertis;čia
u(x) = P(X < x) + 12P(X = x) ir v(y) = P(Y < y) + 1
2P(Y = y).
24
Patikrinkite tą spėjimą. Laikykite, kad X įgyja dvi, o Y — tris reikšmes,keletą (X, Y ) skirstinių parinkite savo nuožiūra ir imkite n = 50. Kiekvie-ną kartą generuokite daug imčių ir raskite empirinio Spirmeno koreliacijoskoeficiento vidutinį kvadratinį nuokrypį nuo ρ.
5. (Duomenų rinkinys korupcija2016) Q21 anketos klausime prašoma pa-sakyti, ar pasinaudotume darbindamiesi giminystės ryšiais, pažintimis ar pi-nigais. Jei žmogus rinkosi atsakymą ne arba nežinau, neturiu nuomonės, taspasirinkimas išsaugotas kintamajame B2101. Kitais atvejais jis galėjo, pa-vyzdžiui, nurodyti, kad pasinaudotų tiek giminystės ryšiais, tiek pažintimis.Tokie jo atsakymai išsaugoti kintamuosiuose B2101–B2103.
Įvertinkite, kaip tikimybė, kad žmogus pasinaudotų pažintimis, priklausonuo lyties (S1 klausimas) ir tautybės (S3 klausimas).
• Suskaičiuokite visus korektiškus priklausomybės stiprumo matus.
• Jei įmanoma, patikrinkite ir nepriklausomumo hipotezę, naudodamiatitinkamą matą atitinkantį kriterijų.
6. Internete radau parašyta, kad empirinė Spirmeno koreliacija dažniau-siai būna 1.5 karto didesnė, nei Kendalo tau-b statistika. Patikrinkite tai,simuliuodami daug imčių iš skirstinio su
p =
a b 0b a b0 b a
pavidalo parametrų matrica. Imite n = 15 ir bent 10 skirtingų a reikšmių.Savo tyrimo rezultatus pavaizduokite grafiškai.
2.2 Sprendimai1. Programa.
load("korupcija2016")df<-data.frame(teko=duom$B13, lytis=duom$S01, amzius=duom$S02)summary(df)
#pertvarkau duomenisdf<-subset(df, unclass(teko)<6)levels(df$teko)<-c("ne",rep("taip",5))df$amzius<-cut(df$amzius, breaks = c(18,25,65,90), include.lowest = TRUE)
25
summary(df)
#skaičiuoju tikimybių ir šansų santykiuslibrary(epitools)
#priklausomybė nuo lytiesriskratio(df$lytis, df$teko)oddsratio(df$lytis, df$teko)
#pasitikrinu, ar teisingai skaičiuoja rrtbl<-table(df$lytis,df$teko)prop.table(tbl,margin = 1)0.1756757/0.1507761#gražu, taigi pakete įvykiu laikomas Y=2
#priklausomybė nuo amžiausamzius<-relevel(df$amzius, ref = "(65,90]")riskratio(amzius, df$teko)oddsratio(amzius, df$teko)
#hipotezės tikrinimuioddsratio(df$lytis,df$teko, conf.level = 0.9)
Rezultatai ir komentarai. Priklausomybė nuo lyties:
risk ratio with 95% C.I.Predictor estimate lower upper
Vyras 1.000000 NA NAMoteris 1.165143 0.8738401 1.553555
odds ratio with 95% C.I.Predictor estimate lower upper
Vyras 1.00000 NA NAMoteris 1.19951 0.8518906 1.69563
Duomenys rodo, kad moterims tikimybė, kad teks duoti kyšį, 1.17 kartodidesnė nei vyrams. Atitinkamas šansų santykis didesnis 1.2 karto. Kitavertus, į pasikliovimo intervalą patenka ir 1; taigi negalima atmesti hipotezės,kad abi tikimybės vienodos.
Priklausomybė nuo amžiaus:
risk ratio with 95% C.I.
26
Predictor estimate lower upper(65,90] 1.0000000 NA NA[18,25] 0.6067416 0.3075338 1.197057(25,65] 1.0315457 0.7434524 1.431277
odds ratio with 95% C.I.Predictor estimate lower upper
(65,90] 1.0000000 NA NA[18,25] 0.5703545 0.2482019 1.182577(25,65] 1.0359679 0.7031645 1.550645
Apklausos duomenys rodo, kad jauni žmonės maždaug 1.7 karto rečiau duo-da kyšius nei pensininkai. Vidutinio amžiaus žmonės — maždaug 1.03 kartodažniau. Tačiau ir šiuo atveju neatmestinos hipotezės, kad abi amžiaus gru-pės nesiskiria nuo pensininkų.
Nepriklausomumo hipotezė:
$measureodds ratio with 90% C.I.
Predictor estimate lower upperVyras 1.00000 NA NAMoteris 1.19951 0.8999649 1.603246
$p.valuetwo-sided
Predictor midp.exact fisher.exact chi.squareVyras NA NA NAMoteris 0.2982806 0.3388695 0.2965229
1 patenka į 90% patikimumo pasikliovimo intervalą, taigi ir su 10% reikš-mingumo lygmeniu nepriklausomumo hipotezė neatmetama. Jos neatmetair Pirsono χ2 kriterijus: p-reikšmė 0.2965>0.1.
2. 1 dalis, programa.
n<-50a<-seq(from=0.1, to=0.4, by=0.05)kieka<-length(a)Drr<-numeric(kieka)Drr.est<-numeric(kieka)Dor<-numeric(kieka)Dor.est<-numeric(kieka)
27
N<-1000rr<-numeric(N)or<-numeric(N)
for (j in (1:kieka)){p<-c(a[j], (1-2*a[j])/4, a[j], 3*(1-2*a[j])/4)Drr[j]<-p[2]/(p[1]*(p[1]+p[2]))+p[4]/(p[3]*(p[3]+p[4]))Dor[j]<-sum(1/p)for (i in (1:N)){
z<-sample(0:3, size = n, prob = p, replace = T)x<-factor(z%/%2+1)y<-factor(z%%2+1)tbl<-table(x,y)rr[i]<-log((tbl[1,1]/sum(tbl[1,]))/(tbl[2,1]/sum(tbl[2,])))or[i]<-log((tbl[1,1]/tbl[1,2])/(tbl[2,1]/tbl[2,2]))
}Drr.est[j]<-var(rr[which(is.finite(rr))])*nDor.est[j]<-var(or[which(is.finite(or))])*n
}ats<-as.matrix(data.frame(Drr,Drr.est,Dor,Dor.est))row.names(ats)<-paste("a=", a, sep = "")print(ats, digits = 3)
Rezultatas ir komentaras.
Drr Drr.est Dor Dor.esta=0.1 15.24 19.33 26.7 32.0a=0.15 8.77 11.74 21.0 27.3a=0.2 5.60 6.71 18.9 23.3a=0.25 3.73 4.56 18.7 22.2a=0.3 2.50 2.56 20.0 22.2a=0.35 1.62 1.80 23.5 26.1a=0.4 0.96 1.01 31.7 27.2
Rezultatai, sakyčiau, nuviliantys. Gal n = 50 ne toks jau didelis skaičius,kaip man atrodė.
2 dalis, programa.
n<-50p0<-c(0.3,0.1,0.2,0.4)rez<-matrix(0, nrow = 4, ncol =2)
28
colnames(rez)<-c("a", "b")row.names(rez)<-c("rr, mano", "rr, epitools", "or, mano", "or, epitools")
#generuoju imtįxy<-sample(0:3, size = n, prob = p0, replace = T)x<-factor(xy%/%2+1)y<-factor(xy%%2+1)
#skaičiuoju CI patsz<-qnorm(0.975)p<-table(x,y)/nlogrr<-log((p[1,1]/sum(p[1,]))/(p[2,1]/sum(p[2,])))drr<-p[1,2]/(p[1,1]*sum(p[1,]))+p[2,2]/(p[2,1]*sum(p[2,]))rez[1,]<-c(exp(logrr-z*sqrt(drr/n)), exp(logrr+z*sqrt(drr/n)))logor<-log((p[1,1]/p[1,2])/(p[2,1]/p[2,2]))dor<-sum(1/p)rez[3,]<-c(exp(logor-z*sqrt(dor/n)), exp(logor+z*sqrt(dor/n)))
#skaičiuoju CI su paketulibrary(epitools)x<-relevel(x, ref = 2)y<-relevel(y, ref = 2)rez[2,]<-riskratio(x,y)$measure[2,2:3]rez[4,]<-oddsratio(x,y)$measure[2,2:3]
print(rez)
Rezultatas ir komentaras.
a brr, mano 1.246838 3.546861rr, epitools 1.246838 3.546861or, mano 1.509883 21.423956or, epitools 1.496476 23.470919
Matau, kad pasikliovimo intervalą rr dydžiui epitools skaičiuoja pagal teo-rines formules, tačiau pasikliovimo intervalas or dydžiui šiek tiek skiriasi nuoteorinio. Pakartojau programą, pakeitęs dvi paskutines eilutes į
rez[2,]<-riskratio(x,y, method="wald")$measure[2,2:3]rez[4,]<-oddsratio(x,y, method="wald")$measure[2,2:3]
Dabar abu intervalai idealiai sutampa:
29
a brr, mano 1.459210 4.66286rr, epitools 1.459210 4.66286or, mano 2.464124 36.19847or, epitools 2.464124 36.19847
3 dalis, programa.
n<-seq(from=5, to=30, by=5)kiekn<-length(n)conf.rr<-numeric(kiekn)conf.or<-numeric(kiekn)
N<-1000pateko.rr<-numeric(N)pateko.or<-numeric(N)
library(epitools)
for (j in (1:kiekn)){for (i in (1:N)){
xy<-sample(0:3, size = n[j], replace = T)x<-factor(xy%/%2+1)y<-factor(xy%%2+1)if (nlevels(x)==2 & nlevels(y)==2){
ab<-riskratio(x,y, method="wald")$measure[2,2:3]pateko.rr[i]<-(ab[1]<1&1<ab[2])ab<-oddsratio(x,y, method="wald")$measure[2,2:3]pateko.or[i]<-(ab[1]<1&1<ab[2])
}else{
pateko.rr[i]<-NApateko.or[i]<-NA
}}conf.rr[j]<-mean(pateko.rr, na.rm = T)conf.or[j]<-mean(pateko.or, na.rm = T)
}
ymin<-min(min(conf.rr), min(conf.or))ymax<-max(max(conf.rr), max(conf.or))plot(n,conf.rr, type = "l",
30
ylim = c(ymin,ymax),ylab = "confidence",main = "Asimptotinių pasikliovimo intervalų patikimumas")
lines(n, conf.or, type ="l", col="blue")abline(h=0.95, col="red")legend(x="topright", legend = c("rr","or"),
col = c("black", "blue"),lty = 1)
Rezultatas ir komentaras.
5 10 15 20 25 30
0.95
0.97
0.99
Asimptotinių pasikliovimo intervalų patikimumas
n
conf
iden
ce
rror
Taigi jei n nedidelis, tikrasis asimptotinių pasikliovimo intervalų patiki-mumas netgi didesnis nei 95%. Nuostabu.
3. 1 dalis: ar kyšio davimas padeda?Iš pradžių paruošiu duomenis:
load("korupcija2016")df<-data.frame(padeda=duom$B11, lytis=duom$S01,
amzius=duom$S02, issilav=duom$S04)summary(df)df<-subset(df, unclass(padeda)<3)df<-droplevels(df)summary(df$issilav)levels(df$issilav)<-c("nebaigtas", "nebaigtas", "nebaigtas",
31
"vidurinis", "vidurinis", "aukštasis","aukštasis")
summary(df)
library(polycor)
Skaičiuosiu tokias koreliacijas tarp padeda ir galimų kovariančių:
• su lytis: Pirsono ir Spirmeno;
• su amzius: Pirsono, Spirmeno ir poliserijinę;
• su issilav: Spirmeno ir polichorinę.
Priklausomybė nuo lyties: programa, rezultatai ir komentarai.
> cor(unclass(df$lytis),unclass(df$padeda))[1] 0.007117943> cor(unclass(df$lytis),unclass(df$padeda), method = "spearman")[1] 0.007117943> cor.test(unclass(df$lytis),unclass(df$padeda))
Pearson’s product-moment correlation
data: unclass(df$lytis) and unclass(df$padeda)t = 0.20765, df = 851, p-value = 0.8356alternative hypothesis: true correlation is not equal to 095 percent confidence interval:-0.06003586 0.07420761
sample estimates:cor
0.007117943
Kadangi abu dydžiai dichotominiai, Pirsono koreliacija visiškai sutampa suSpirmeno koreliacija. Pagal mūsų duomenis išeitų, kad moterys didesnėsidealistės nei vyrai (jos labiau linkę manyti, kad kyšis nepadeda išspręstiproblemų). Visgi koreliacijos koeficientas labai mažas ir nepriklausomumohipotezė nėra atmetama. Taigi neatmestina, kad idealizmas nuo lyties ne-priklauso.
Priklausomybė nuo amžiaus: programa, rezultatai ir komentarai.
> cor(df$amzius,unclass(df$padeda))[1] -0.1801458
32
> cor(df$amzius,unclass(df$padeda), method = "spearman")[1] -0.1723927> cor.test(df$amzius,unclass(df$padeda))
Pearson’s product-moment correlation
data: df$amzius and unclass(df$padeda)t = -5.3426, df = 851, p-value = 1.177e-07alternative hypothesis: true correlation is not equal to 095 percent confidence interval:-0.2443165 -0.1144040
sample estimates:cor
-0.1801458
> cor.test(df$amzius,unclass(df$padeda), method = "spearman")
Spearman’s rank correlation rho
data: df$amzius and unclass(df$padeda)S = 121270000, p-value = 4.073e-07alternative hypothesis: true rho is not equal to 0sample estimates:
rho-0.1723927
Warning message:In cor.test.default(df$amzius, unclass(df$padeda), method = "spearman") :
Cannot compute exact p-value with ties> polyserial(df$amzius, df$padeda, std.err = T)
Polyserial Correlation, 2-step est. = -0.249 (0.04547)Test of bivariate normality: Chisquare = 23.79, df = 5, p = 0.0002384
Visos trys koreliacijos neigiamos, taigi amžius idealizmą lyg ir mažina.Be to, nepriklausomumo hipotezė visais trim atvejais atmetama (poliserijinėskoreliacijos pasikliovimo intervalas yra −0.249± 1.96 · 0.04547 ir reikšmė 0 įjį nepatenka). Taigi mūsų išvada pakankamai pagrįsta.
Priklausomybė nuo išsilavinimo: programa, rezultatai ir komentarai.
> cor(unclass(df$issilav), unclass(df$padeda),+ use = "complete", method = "spearman")
33
[1] 0.08755643> cor.test(unclass(df$issilav),unclass(df$padeda),+ use = "complete", method = "spearman")
Spearman’s rank correlation rho
data: unclass(df$issilav) and unclass(df$padeda)S = 93063000, p-value = 0.0107alternative hypothesis: true rho is not equal to 0sample estimates:
rho0.08755643
Warning message:In cor.test.default(unclass(df$issilav), unclass(df$padeda), use = "complete", :
Cannot compute exact p-value with ties> polychor(df$issilav, df$padeda, std.err = T)
Polychoric Correlation, 2-step est. = 0.143 (0.05652)Test of bivariate normality: Chisquare = 0.3121, df = 1, p = 0.5764
Abi koreliacijos teigiamos, o nepriklausomumo hipotezė atmetama; taigikuo labiau žmogus išsimokslinęs, tuo jis didesnis idealistas. Interpretuojantpolichorinės koreliacinės analizės rezultatus, vietoj išsimokslinęs gal reiktųvartoti kitą žodį — apibrėžiantį tą vidinę nestebimą savybę, kuri verčia žmo-gų siekti didesnio išsilavinimo.
2 dalis: kaip dažnai duodamas kyšis?Iš pradžių paruošiu duomenis:
load("korupcija2016")df<-data.frame(daznis=duom$B13, lytis=duom$S01,
amzius=duom$S02, issilav=duom$S04)summary(df)df<-subset(df, unclass(daznis)<6)daznis<-unclass(df$daznis)df$kiek<-ifelse(daznis==1,0,
ifelse(daznis==2,1,ifelse(daznis==3,2.5,
ifelse(daznis==4,6.5,10))))summary(df$kiek)summary(df$issilav)levels(df$issilav)<-c("nebaigtas", "nebaigtas", "nebaigtas",
34
"vidurinis", "vidurinis", "aukštasis","aukštasis")
summary(df)
Skaičiuosiu tokias koreliacijas tarp kiek ir galimų kovariančių:
• su lytis: Pirsono ir Spirmeno;
• su amzius: Pirsono ir Spirmeno;
• su issilav: Spirmeno ir poliserijinę.
Programa, rezultatai ir komentarai:
#koreliacijos su lytimicor.test(unclass(df$lytis),df$kiek)cor.test(unclass(df$lytis),df$kiek, method = "spearman")
#koreliacijos su amžiumicor.test(df$amzius,df$kiek)cor.test(df$amzius,df$kiek, method = "spearman")
#koreliacijos su išsilavinimucor.test(unclass(df$issilav), df$kiek,
use = "complete", method = "spearman")polyserial(df$kiek, df$issilav, std.err = T)
Abi koreliacijos su lytimi lygios maždaug 0.03, o su amžiumi — 0.02; taigilyg ir moterys ir vyresni žmonės dažniau duoda kyšius, bet nepriklausomumohipotezė abiem atvejais neatmetama. Sirmeno koreliacija su išsilavinimu yramaždaug 0.04, o poliserijinė — apytiksliai 0.02. Nepriklausomumo hipotezėabiem atvejais taip pat neatmetama.
4. Programa:
n<-50N<-1000hatrho<-numeric(N)P<-20 #bandomų skirstinių skaičius
rho<-numeric(P)mse<-numeric(P)
35
for (j in (1:P)){#generuoju atsitiktinai 2x3 tikimybių matricą pp<-runif(6)p<-p/sum(p)dim(p)<-c(2,3)#skaičiuoju vertesu<-c(sum(p[1,])/2, sum(p[1,])+sum(p[2,])/2)v<-c(sum(p[,1])/2, sum(p[,1])+sum(p[,2])/2,
sum(p[,1])+sum(p[,2])+sum(p[,2])/2)#skaičiuoju tikrąjį rhop.u<-margin.table(p, margin=1)p.v<-margin.table(p, margin=2)vid.u<-u%*%p.uvid.v<-v%*%p.vvid.uu<-(u^2)%*%p.uvid.vv<-(v^2)%*%p.vdim(u)<-c(2,1)dim(v)<-c(1,3)vid.uv<-sum((u%*%v)*p)rho[j]<-(vid.uv-vid.u*vid.v)/sqrt((vid.uu-vid.u^2)*(vid.vv-vid.v^2))
#vėl paverčiu u,v,p vektoriaisdim(u)<-c(2)dim(v)<c(3)dim(p)<-c(6)
for (i in (1:N)){#generuoju imtįxy<-sample(0:5, size=n, prob=p, replace = T)x<-u[xy%%2+1]y<-v[xy%/%2+1]hatrho[i]<-cor(x,y, method = "spearman")
}mse[j]<-sqrt(mean((hatrho-rho[j])^2, na.rm = T))
}ats<-data.frame(rho,mse)ats$rho<-round(ats$rho,3)ats$mse<-round(ats$mse,3)print(ats, row.names=F)
Rezultatai neįspūdingi:
36
rho mse-0.323 0.1310.285 0.141
-0.293 0.1490.342 0.135
-0.152 0.1450.300 0.139
-0.464 0.1350.058 0.1440.185 0.149
-0.030 0.135-0.049 0.1420.084 0.1250.142 0.1590.080 0.1380.010 0.145
-0.136 0.145-0.289 0.1300.107 0.1440.116 0.143
-0.041 0.145
Galimas daiktas, imties dydis n = 50 nepakankamas. Dėl įdomumo pakar-tojau programą su n = 1000 ir gavau tokius rezultatus:
rho mse0.240 0.0300.394 0.027
-0.460 0.032-0.495 0.033-0.063 0.0320.428 0.0330.093 0.031
-0.180 0.0340.007 0.043
-0.363 0.0280.384 0.047
-0.348 0.0290.465 0.0240.595 0.021
-0.188 0.0300.050 0.033
37
0.042 0.0330.489 0.0270.224 0.0300.019 0.056
Jau gražiau, ypač kai tikrasis ρ nėra artimas 0. Apskritai susidaro įspūdis,kad paklaida priklauso tik nuo n, o ne nuo ρ. Taigi jei |ρ| mažas, santykinėpaklaida pakankamai didelė.
5. Programa:
#duomenysload("korupcija2016")x1<-duom$B2101x2<-duom$B2102x3<-duom$B2103summary(x1)summary(x2)summary(x3)pazintys<-ifelse(unclass(x1)==2 | unclass(x2)==2,1,2)pazintys[is.na(pazintys)]<-2pazintys<-factor(pazintys)levels(pazintys)<-c("taip", "ne")summary(pazintys)lytis<-duom$S01tautybe<-duom$S03summary(lytis)summary(tautybe)
library(epitools)library(vcdExtra)library(ryouready)
#priklausomybė nuo lytiesriskratio(lytis,pazintys, rev = "columns")epitools::oddsratio(lytis, pazintys, rev= "columns")cor.test(unclass(lytis),unclass(pazintys))cor.test(unclass(lytis),unclass(pazintys),method = "spearman")
#priklausomybė nuo tautybėsnom.uncertainty(table(tautybe,pazintys))
38
Rezultatai ir komentarai.
• unclass(x1)==2 reikšmės yra TRUE arba FALSE, o unclass(x2)==2reikšmės — TRUE arba NA. Dizjunkcijos reikšmė tada gaunasi TRUE arbaNA ir antruoju atveju ifelse funkcija duoda NA. Todėl tenka tuos NApaversti antruoju faktoriaus lygiu rankiniu būdu.
• Pakrovus biblioteką vcdExtra, kompiuteris perspėjo, kad epitoolspaketo funkcija oddsratio buvo paslėpta (matyt, tokia funkcija yrair antrajame pakete, nors aš jos ir neradau). Todėl savo programojenaudoju pilną funkcijos vardą epitools::oddsratio.
• Duomenys rodo, kad moterys lyg ir nežymiai sąžiningesnės už vyrus:jos 1/0.9 = 1.1 karto rečiau naudotųsi pažintimis nei vyrai. Tačiau ne-priklausomumo hipotezė neatmetama (1 priklauso tiek tikimybių san-tykio, tiek šansų santykio pasikliovimo intervalui), todėl jokios išvadosdaryti negalime.
• Tą patį rodo ir koreliacinė analizė. 2 × 2 lentelėse Pearson’o ir Spear-man’o koreliacijos sutampa ir nagrinėjamu atveju jos lygios 0.02. Taigimoterys (unclass(lytis)=2) labiau linkusios rinktis antrą atsakymąne. Tačiau nepriklausomumo hipotezė neatmetama.
• Neapibrėžtumo koeficientas tarp tautybės ir pazintys kintamojo lygus0.005; taigi priklausomybė labai menka. Pasikliovimo intervalo tam ko-eficientui funkcija ryouready::nom.uncertainty neduoda, bet galimaspėti, kad nepriklausomumo hipotezė ir šiuo atveju būtų atmesta.
6. Programa:
n<-15a<-seq(from=0, to=0.33, by=0.01)kieka<-length(a)vidutinis<-numeric(kieka)
N<-1000santykis<-numeric(N)
for (j in (1:kieka)){A<-a[j]B<-(1-3*A)/4p<-c(A,B,0,B,A,B,0,B,A)for (i in (1:N)){
39
xy<-sample(0:8, size = n, prob = p, replace = T)x<-factor(xy%/%3+1)y<-factor(xy%%3+1)if (nlevels(x)>1 & nlevels(y)>1){
Sp<-cor(unclass(x),unclass(y),method = "spearman", use = "complete")
Ke<-cor(unclass(x),unclass(y),method = "kendall", use = "complete")
santykis[i]<-Sp/Ke}else santykis[i]<-NA
}vidutinis[j]<-mean(santykis[is.finite(santykis)])
}
plot(a,vidutinis, type = "l",main = "Spirmeno ir Kendalo koreliacijų santykis",ylab = "")
Rezultatas ir komentaras.
0.00 0.05 0.10 0.15 0.20 0.25 0.30
1.00
1.05
1.10
1.15
Spirmeno ir Kendalo koreliacijų santykis
a
Mano simuliacijos rodo, kad Spirmeno koreliacijos koeficientas tikrai di-desnis už Kendalo τb, bet 1.5 reikšmės santykis nepasiekia.
40
3 Logistinė regresija
3.1 Sąlygos1. (Duomenų rinkinys korupcija2016) Q25 anketos klausime prašoma pa-sakyti, ar teko per pastaruosius 5 metus tvarkyti reikalus įvairiose institu-cijose. Pabandykite pasiaiškinti, kokiems žmonėms teko tvarkyti reikalussavivaldybių socialinės paramos skyriuose (atitinkamas kintamasis duomenųlentelėje yra B25291) — priklausomai nuo lyties (S1 klausimas), amžiaus (S2klausimas) ir išsimokslinimo (S4 klausimas).
• Pagal išsimokslinimą apklaustuosius suskirstykite į 3 grupes: nebaigtasvidurinis, vidurinis, aukštasis.
• Atlikite logistinę regresinę analizę, naudodami logit modelį, ir interpre-tuokite rezultatus. Suskaičiuokite ir paaiškinkite visus šansų santykius.Ar visi nepriklausomi modelio kintamieji statistiškai reikšmingi?
• Įvertinkite šansų, kad teko tvarkyti reikalus, santykį, kai lyginami tokiedu žmonės: 40 metų vyras, turintis vidurinį išsilavinimą, ir 50 metųmoteris su aukštuoju išsilavinimu. Raskite pasikliovimo intervalą tamšansų santykiui.
• Sudarykite ir atspausdinkite lentelę su tokiais 4 stulpeliais: modelioparametro įvertis, jo pasikliovimo intervalas (2 stulpeliai) ir p-reikšmė,atitinkanti hipotezę, kad tas parametras lygus 0.
2. (Duomenų rinkinys korupcija2016) Pabandykite pasiaiškinti, kokie žmo-nės mano, kad nėra veikiami korupcijos kasdieniame gyvenime (Q11.1 an-ketos klausimas) — priklausomai nuo lyties (S1 klausimas), amžiaus (S2klausimas) ir to, kaip jie vertina korupcijos masto pokytį per pastaruosius 5metus (Q5 klausimas).
• Pagal atsakymą į Q5 klausimą žmones suskirstykite į 3 grupes: tuos,kurie mano, kad mastai sumažėjo, nepakito ir padidėjo. Neatsakiusiusarba neturinčius nuomonės iš analizės išmeskite.
• Atlikite logistinę regresinę analizę, naudodami probit modelį, ir inter-pretuokite rezultatus. Ar visi nepriklausomi modelio kintamieji statis-tiškai reikšmingi?
• Kokia tikimybė, kad nėra veikiamas korupcijos 25 metų vyras, manan-tis, kad korupcijos mastas per pastaruosius 5 metus padidėjo? Raskiteir pasikliovimo intervalą tai tikimybei.
41
• Ar galima korupcijos masto vertinimą laikyti kiekybiniu kintamuoju,t.y. ar skirtumas tarp žmonių, kurie laiko tą mastą padidėjusiu ir žmo-nių, kurie laiko jį nepakitusiu, toks pat kaip ir skirtumas tarp žmonių,kurie laiko jį nepakitusiu, ir žmonių, kurie laiko jį sumažėjusiu?
3. (Duomenų rinkinys korupcija2016) Q4.1 anketos klausime prašoma pa-sakyti savo nuomonę apie korupcijos įtaką visuomenės gyvenimui. Dalis žmo-nių nelaiko, kad korupcija yra kliūtis, ar didelė kliūtis, visuomenės gyveni-mui. Pabandykite pasiaiškinti, kas tai per žmonės — priklausomai nuo lyties(S1 klausimas), amžiaus (S2 klausimas) ir gyvenamosios vietos (S7 klausimotrečia dalis).
• Žmones, neturinčius nuomonės apie korupcijos įtaką, iš analizės išme-skite.
• Pagal gyvenamąją vietą žmones sugrupuokite į dvi grupes: vilniečiai irkauniečiai turi patekti į vieną grupę, visi kiti — į kitą.
• Atlikite logistinę regresinę analizę, naudodami logit modelį, ir interpre-tuokite rezultatus. Ar visi nepriklausomi modelio kintamieji statistiškaireikšmingi? Suskaičiuokite ir pakomentuokite visus šansų santykius.
• Papildykite modelį, į nepriklausomų kintamųjų sąrašą įtraukdami am-žiaus kvadratą. Ar dabar amžius statistiškai reikšmingas? Kokio am-žiaus žmonės labiausiai nekenčia korupcijos?
• Dar papildykite modelį taip, kad galėtumėte atsakyti į klausimą, kokioamžiaus vyrai ir kokio amžiaus moterys labiausiai nekenčia korupcijos.
4. (Duomenų rinkinys korupcija2016) Pasiaiškinkite, kokie žmonės norėtųdalyvauti antikorupcinėje veikloje (Q46 anketos klausimas), priklausomai nuoamžiaus (S2 klausimas), lyties (S1 klausimas) ir to, kaip jie atsako į Q41klausimą.
• Analizuokite tik žmones, kurie pasirinko pirmus tris atsakymus į Q41klausimą.
• Atlikite logistinę regresinę analizę, naudodami probit modelį, ir in-terpretuokite rezultatus. Ar visi nepriklausomi kintamieji statistiškaireikšmingi?
• Sudarykite klasifikavimo lentelę ir nupieškite ROC kreivę.
42
• Pasirinkite klasifikavimo slenkstį, atitinkantį maždaug 80% klasifika-vimo jautrumą, ir naudodami atitinkamą klasifikavimo taisyklę prog-nozuokite, ar norėtų dalyvauti antikorupcinėje veikloje 40 metų vyras,manantis, kad veiksmingiausios yra baudžiamosios priemonės.
5. (Duomenų rinkiniai korupcija2016 ir nedarbas.xlsx) Q5 anketos klau-sime prašoma įvertinti, kaip pasikeitė korupcijos mastas Lietuvoje per pa-staruosius 5 metus. Panagrinėkite, kokie žmonės mano, kad korupcija pa-didėjo — priklausomai nuo lyties (S1 klausimas), išsilavinimo (S4 klausi-mas) ir nedarbo lygio apskrityje, kurioje žmogus gyvena (S7 klausimas irnedarbas.xlsx lentelė).
• Nagrinėkite tik žmones, kurie atsakė į Q5 klausimą.
• Pagal išsimokslinimą žmones suskirstykite į 3 grupes: nebaigtas vidu-rinis, vidurinis ir aukštasis.
• Atlikite logistinę regresinę analizę, naudodami probit modelį, ir inter-pretuokite rezultatus. Ar visi kintamieji statistiškai reikšmingi?
• Pakartokite analizę, įtraukdami į modelį ir sąveiką tarp lyties ir išsi-mokslinimo. Ar dabar visi kintamieji statistiškai reikšmingi?
• Įvertinkite tikimybę, kad vyras su viduriniu išsilavinimu, gyvenantishipotetinėje apskrityje, kurioje nedarbo lygis sutampa su vidutiniu ne-darbo lygiu Lietuvoje, manys, jog korupcijos mastai didėja. Raskite irpasikliovimo intervalą tai tikimybei.
3.2 Sprendimai1. Mano programa, 1 dalis.
load("korupcija2016")df<-data.frame(teko=duom$B25291, lytis=duom$S01, amzius=duom$S02,
mokslai=duom$S04)summary(df)summary(df$mokslai)levels(df$mokslai)<-c("nebaigtas", "nebaigtas", "nebaigtas",
"vidurinis", "vidurinis", "aukštasis","aukštasis")
df$teko<-factor(ifelse(unclass(df$teko)==1,1,0))summary(df)
43
attach(df)fit<-glm(teko~lytis+mokslai+amzius, family="binomial")summary(fit)cat("Šansų santykiai\n")exp(fit$coefficients[2:5])
library(car)lht(fit,c("mokslaividurinis=0","mokslaiaukštasis=0"))
Rezultatai ir komentarai.
Coefficients:Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.337803 0.455135 -2.939 0.00329 **lytisMoteris 0.442682 0.196811 2.249 0.02450 *mokslaividurinis -0.195949 0.320097 -0.612 0.54043mokslaiaukštasis -0.556136 0.350975 -1.585 0.11307amzius -0.010861 0.005567 -1.951 0.05106 .
Šansų santykiailytisMoteris mokslaividurinis mokslaiaukštasis amzius
1.5568770 0.8220540 0.5734204 0.9891977
Linear hypothesis test
Hypothesis:mokslaividurinis = 0mokslaiaukštasis = 0
Model 1: restricted modelModel 2: teko ~ lytis + mokslai + amzius
Res.Df Df Chisq Pr(>Chisq)1 9952 993 2 3.596 0.1656
Moterims šansai apsilankyti socialinės paramos skyriuje maždaug 1.6 kar-to didesni nei vyrams, žmonėms su nebaigtu viduriniu išsilavinimu — maž-daug 1.2 karto didesni, nei žmonėms su viduriniu, ir maždaug 1.8 karto dides-ni, nei žmonėms su aukštuoju išsilavinimu. Tačiau išsilavinimas nėra statis-tiškai reikšmingas faktorius. Amžius, kaip ir lytis, statistiškai reikšmingas:
44
kiekvieni papildomi metai šansus apsilankyti tame skyriuje sumažina 1.01karto.
2 dalis. Tegu A yra 40 metų vyras, turintis vidurinį išsilavinimą, B — 50metų moteris su aukštuoju išsilavinimu ir oA, oB atitinkamo asmens šansaiapsilankyti socialinės paramos skyriuje. Tada
ln oA = βmv + 40βa, ln oB = βm + βma + 50βa;
čia βm, βmv, βma ir βa yra modelio parametrai, atitinkantys atitinkamus pse-udokintamuosius (lytisMoteris, mokslaividurinis, mokslaiaukštasis iramzius), todėl ieškomas šansų santykis yra
orA/B = e−βm+βmv−βma−10βa .
Jo įvertį ir pasikliovimo intervalą randu atlikęs tokią programą:
d<-c(-1,1,-1,-10)beta<-fit$coefficients[2:5]lor<-d%*%betasigma<-vcov(fit)[2:5,2:5]se<-sqrt(d%*%sigma%*%d)z<-qnorm(0.975)cat("Šansų santykis: ", exp(lor), "\n")cat("Pasikliovimo intervalas: [",exp(lor-z*se),";",exp(lor+z*se),"]\n")
Rezultatai: A asmeniui šansai apsilankyti skyriuje yra 1.02 karto didesninei B; šansų santykio pasikliovimo intervalas yra [0.58; 1.82].
3 dalis, programa ir rezultatas.
lent<-matrix(0, nrow=5, ncol = 4)row.names(lent)<-names(fit$coefficients)colnames(lent)<-c("estimate", "ci, left", "ci, right", "p value")lent[,1]<-fit$coefficientsse<-sqrt(diag(vcov(fit)))z<-qnorm(0.975)lent[,2]<-fit$coefficients-z*selent[,3]<-fit$coefficients+z*selent[,4]<-2*pnorm(abs(fit$coefficients/se), lower.tail = F)lent<-round(lent,3)print(lent)
estimate ci, left ci, right p value(Intercept) -1.338 -2.230 -0.446 0.003
45
lytisMoteris 0.443 0.057 0.828 0.024mokslaividurinis -0.196 -0.823 0.431 0.540mokslaiaukštasis -0.556 -1.244 0.132 0.113amzius -0.011 -0.022 0.000 0.051
2. 1 dalis.
load("korupcija2016")df<-data.frame(neveikia=duom$B111, lytis=duom$S01, amzius=duom$S02,
mastas=duom$B05)summary(df)df$neveikia<-factor(ifelse(unclass(df$neveikia)==2,1,0))df<-subset(df, unclass(mastas)<6)df<-droplevels(df)levels(df$mastas)<-c("sumažėjo", "sumažėjo", "nepakito",
"padidėjo", "padidėjo")summary(df)
fit<-glm(neveikia~lytis+mastas+amzius, data=df,family=binomial(link="probit"))
summary(fit)
library(car)lht(fit,c("mastasnepakito=0","mastaspadidėjo=0"))
Rezultatai ir komentarai.
Coefficients:Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.034189 0.164869 -0.207 0.83572lytisMoteris 0.198224 0.086356 2.295 0.02171 *mastasnepakito -0.077545 0.134727 -0.576 0.56491mastaspadidėjo -0.337956 0.129241 -2.615 0.00892 **amzius 0.001665 0.002540 0.656 0.51211
Linear hypothesis test
Hypothesis:mastasnepakito = 0mastaspadidėjo = 0
46
Model 1: restricted modelModel 2: neveikia ~ lytis + mastas + amzius
Res.Df Df Chisq Pr(>Chisq)1 8612 859 2 11.135 0.00382 **
Moterys dažniau negu vyrai mano, kad yra neveikiamos korupcijos, irtas skirtumas statistiškai reikšmingas. Kuo žmogus vyresnis, tuo dažniaujis mano esąs neveikiamas korupcijos, bet amžius nėra statistiškai reikšmin-gas kintamasis. Kaip ir reikėjo tikėtis, kuo pesimistiškiau žmogus vertinakorupcijos masto pokytį per pastaruosius 5 metus, tuo rečiau jis mano esąsneveikiamas tos korupcijos. mastas yra statistiškai reikšmingas faktorius.
2 dalis.
> d<-c(1,0,0,1,25)> u<-d%*%fit$coefficients> cat("Tikimybė lygi", round(pnorm(u),2))Tikimybė lygi 0.37> se<-sqrt(d%*%vcov(fit)%*%d)> z<-qnorm(0.975)> cat("Pasikliovimo intervalas: nuo", round(pnorm(u-z*se),2),+ " iki ",round(pnorm(u+z*se),2))Pasikliovimo intervalas: nuo 0.3 iki 0.45
3 dalis. Tegu U yra latentinis kintamasis, kurio vidurkis
EU = β0 + βmoteris1lytis=Moteris + βamziusamzius+ βnepakito1mastas=nepakito + βpadidejo1mastas=padidejo;
tada tikimybė, kad žmogus mano esąs neveikiamas korupcijos, yra Φ(EU).Jeigu į mastas žiūrėtume, kaip į kiekybinį kintamąjį, įgyjantį reikšmes 1,2 ir 3 (kai žmogus atitinkamai mano, kad mastas sumažėjo, nepakito arpadidėjo), ta tikimybė būtų lygi Φ(EU); čia
EU = β0 + βmoteris1lytis=Moteris + βamziusamzius
+ βmastas1mastas=sumazejo + 2βmastas1mastas=nepakito + 3βmastas1mastas=padidejo.
Abu modeliai visada duos tą patį rezultatą, kai
β0 = β0 + βmastas,
βmoteris = βmoteris, βamzius = βamzius
47
irβnepakito = βmastas = 1
2βpadidejo,
t.y. 2βnepakito = βpadidejo. Tokią hipotezę ir patikrinu:
> lht(fit,"mastaspadidėjo-2mastasnepakito=0")Linear hypothesis test
Hypothesis:- 2 mastasnepakito + mastaspadidėjo = 0
Model 1: restricted modelModel 2: neveikia ~ lytis + mastas + amzius
Res.Df Df Chisq Pr(>Chisq)1 8602 859 1 0.8971 0.3436
Kaip matome, hipotezė neatmetama.
3. 1 dalis: programa.
load("korupcija2016")df<-data.frame(itaka=duom$B041, lytis=duom$S01,
amzius=duom$S02, savivaldybe=duom$S0702)summary(df)summary(df$savivaldybe)df<-subset(df, unclass(itaka)<6)df$vk<-ifelse(unclass(df$savivaldybe)<=2,1,0)df$moteris<-ifelse(unclass(df$lytis)==2,1,0)df$nekliutis<-factor(ifelse(unclass(df$itaka)>=3,1,0))df<-droplevels(df)summary(df)
fit<-glm(nekliutis~moteris+vk+amzius, data=df, family="binomial")summary(fit)exp(fit$coefficients)exp(-fit$coefficients)
Rezultatai ir komentarai.
Coefficients:Estimate Std. Error z value Pr(>|z|)
48
(Intercept) -1.8210828 0.3330396 -5.468 4.55e-08 ***moteris 0.1176070 0.1900331 0.619 0.536vk -0.2527489 0.2195430 -1.151 0.250amzius 0.0006628 0.0055163 0.120 0.904
> exp(fit$coefficients)(Intercept) moteris vk amzius
0.1618504 1.1248019 0.7766629 1.0006630> exp(-fit$coefficients)(Intercept) moteris vk amzius
6.1785452 0.8890454 1.2875599 0.9993375
Kad būtų sklandesnė interpretacija, žmones, nelaikančius korupcijos blo-gu dalyku, vadinsiu keistuoliais. Analizė rodo, kad tarp moterų keistuoliųdaugiau, negu tarp vyrų (jei tiksliau, moteriai šansai būti keistuole 1,12 kartodidesni), o Vilniuje ir Kaune — mažiau, nei likusioje Lietuvos dalyje (vilnie-čiams ir kauniečiams šansai būti keistuoliu 1,29 karto mažesni). Senstantšansai būti keistuoliu nežymiai didėja (kiekvieni metai tuos šansus padidina1,0007 karto). Tačiau nė vienas iš į modelį įtrauktų kintamųjų nėra statis-tiškai reikšmingas.
2 dalis: programa.
df$amzius2<-df$amzius^2fit<-glm(nekliutis~moteris+vk+amzius+amzius2,
data=df, family="binomial")summary(fit)
library(car)lht(fit, c("amzius=0", "amzius2=0"))a<-fit$coefficients["amzius2"]b<-fit$coefficients["amzius"]-b/(2*a)
Rezultatai ir komentarai.
Coefficients:Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.7724395 0.7330947 -1.054 0.292moteris 0.1231070 0.1903085 0.647 0.518vk -0.2707743 0.2199659 -1.231 0.218amzius -0.0464549 0.0302704 -1.535 0.125amzius2 0.0004648 0.0002940 1.581 0.114
49
Linear hypothesis test
Hypothesis:amzius = 0amzius2 = 0
Model 1: restricted modelModel 2: nekliutis ~ moteris + vk + amzius + amzius2
Res.Df Df Chisq Pr(>Chisq)1 9132 911 2 2.5151 0.2843
amzius49.97832
Įtraukus į modelį amžiaus kvadratą, situacija faktiškai nepasikeitė: nėvienas kintamasis nėra statistiškai reikšmingas. Tiesa, dabar analizė rodo,kad polinkis į keistuoliškumą pradeda didėti tik nuo 50 metų, o iki tol jismažėja.
3 dalis, programa. Norint, kad vyrams ir moterims ekstremalus amžiusgautųsi skirtingas, į modelį reikia įtraukti ir lyties sąveiką su amžiui ir suamžiaus kvadratu. Modelis tada gaunasi toks:
EU = β0 + β11moteris + β21vk + β3x + β4x2 + β51moterisx + β61moterisx2;
čia EU yra sąlyginis keistumo vidurkis, o x žymi amžių. Kitaip tariant,vyrams
EU = β0 + β3x + β4x2,
o moterimsEU = β′0 + (β3 + β5)x + (β4 + β6)x2.
Ekstremalūs amžiai tada randami, atlikus tokią programą.
fit<-glm(nekliutis~moteris+vk+amzius+amzius2+moteris*amzius+moteris*amzius2,data=df, family="binomial")
summary(fit)c<-fit$coefficientsopt<-matrix("", nrow=2, ncol = 2)row.names(opt)<-c("Optimalus amžius","Koks")
50
colnames(opt)<-c("vyrų","moterų")opt[1,1]<-round(-c[4]/(2*c[5]),0)opt[2,1]<-ifelse(c[5]>0,"min","max")opt[1,2]<-round(-(c[4]+c[6])/(2*(c[5]+c[7])),0)opt[2,2]<-ifelse(c[5]+c[7]>0,"min","max")print(opt, quote = F)
Rezultatai ir komentarai.
vyrų moterųOptimalus amžius 41 50Koks min min
Taigi vyrams kritinis amžius yra 41 metai, moterims — 50 metų. Ikikritinio amžiaus keistuoliškumas mažėja, po to pradeda didėti.
4. 1 dalis, programa.
load("korupcija2016")summary(duom$B41)df<-data.frame(noretu=duom$B46, lytis=duom$S01, amzius=duom$S02,
priemones=duom$B41)summary(df)df<-subset(df,unclass(priemones)<4)df$noretu<-ifelse(unclass(df$noretu)==1,1,0)df$noretu<-factor(df$noretu)df<-droplevels(df)levels(df$priemones)<-c("prevencinės", "švietimo", "baudžiamosios")summary(df)
fit<-glm(noretu~lytis+amzius+priemones, data=df,family = binomial(link = "probit"))
summary(fit)
lht(fit,c("priemonesšvietimo=0","priemonesbaudžiamosios=0"))
Rezultatai ir komentarai.
Coefficients:Estimate Std. Error z value Pr(>|z|)
(Intercept) -0.312367 0.194861 -1.603 0.1089lytisMoteris -0.287408 0.115812 -2.482 0.0131 *amzius -0.014137 0.003333 -4.241 2.22e-05 ***
51
priemonesšvietimo 0.033712 0.183249 0.184 0.8540priemonesbaudžiamosios -0.137938 0.128858 -1.070 0.2844
Linear hypothesis test
Hypothesis:priemonesšvietimo = 0priemonesbaudžiamosios = 0
Model 1: restricted modelModel 2: noretu ~ lytis + amzius + priemones
Res.Df Df Chisq Pr(>Chisq)1 8692 867 2 1.6687 0.4342
Latentinį kintamąjį, lemiantį, kad žmogus pasirenka 1 atsakymą į Q46klausimą, vadinsiu aktyvumu. Taigi kai aktyvumas viršija tam tikrą lygį,žmogus pradeda norėti dalyvauti antikorupcinėje veikloje. Analizė rodo, kadmažiau aktyvios nei vyrai ir su amžiumi aktyvumas mažėja; be to, tiek ly-tis, tiek amžius yra statistiškai reikšmingi kintamieji. Aktyviausi yra tie,kurie efektyviausiomis laiko švietimo priemones; mažiausiai aktyvūs — tie,kuriems patinka baudžiamosios priemonės. Tačiau pastarosios išvados abe-jotinos vertės, nes atsakymas į Q41 klausimą nėra statistiškai reikšmingaskintamasis.
2 dalis: programa.
slenkstis<-seq(from=0.01,to=0.99, by=0.01)kiek<-length(slenkstis)sens<-numeric(kiek)spec<-numeric(kiek)probs<-fit$fitted.valuesfor (i in 1:kiek){
haty<-factor(ifelse(probs>slenkstis[i],1,0))if (nlevels(haty)==2){
tbl<-table(df$noretu,haty)sens[i]<-tbl[2,2]/sum(tbl[2,])spec[i]<-tbl[1,1]/sum(tbl[1,])
} else if (haty[1]==0){sens[i]<-0spec[i]<-1
} else {
52
sens[i]<-1spec[i]<-0
}}lent<-as.matrix(data.frame(slenkstis,sens,spec))print(lent[1:30,])plot(1-spec,sens, type="l", main = "ROC kreivė")abline(a=0,b=1,col="red")
asmuo<-c(1,0,40,0,1)prob<-pnorm(fit$coefficients%*%asmuo)prob
Rezultatai ir komentarai.
slenkstis sens spec[1,] 0.01 1.00000000 0.00000000[2,] 0.02 1.00000000 0.00000000[3,] 0.03 1.00000000 0.01161290[4,] 0.04 0.97938144 0.05419355[5,] 0.05 0.93814433 0.09806452[6,] 0.06 0.89690722 0.19096774[7,] 0.07 0.83505155 0.29290323[8,] 0.08 0.80412371 0.37548387[9,] 0.09 0.77319588 0.47096774
[10,] 0.10 0.70103093 0.53419355[11,] 0.11 0.62886598 0.61548387[12,] 0.12 0.56701031 0.67096774[13,] 0.13 0.52577320 0.72774194[14,] 0.14 0.46391753 0.76903226[15,] 0.15 0.43298969 0.80774194[16,] 0.16 0.39175258 0.82838710[17,] 0.17 0.34020619 0.84903226[18,] 0.18 0.25773196 0.87741935[19,] 0.19 0.20618557 0.88903226[20,] 0.20 0.18556701 0.91612903[21,] 0.21 0.18556701 0.93419355[22,] 0.22 0.15463918 0.95483871[23,] 0.23 0.14432990 0.96258065[24,] 0.24 0.09278351 0.97806452[25,] 0.25 0.07216495 0.98580645[26,] 0.26 0.05154639 0.99225806
53
[27,] 0.27 0.03092784 0.99354839[28,] 0.28 0.03092784 0.99741935[29,] 0.29 0.01030928 1.00000000[30,] 0.30 0.00000000 1.00000000
> prob[,1]
[1,] 0.1548693
0.0 0.2 0.4 0.6 0.8 1.0
0.0
0.2
0.4
0.6
0.8
1.0
ROC kreivė
1 − spec
sens
Iš lentelės matyti, kad 80% klasifikavimo jautrumas pasiekiamas, kai kla-sifikavimo slenkstis lygus 0.08. Naudojant tokią taisyklę, reiktų spėti, kadminimas asmuo norės dalyvauti antikorupcinėje veikloje.
5. 1 dalis, programa:
load("korupcija2016")df<-data.frame(mastas=duom$B05, lytis=duom$S01,
mokslai=duom$S04, apskritis=duom$S0701)summary(df)summary(df$mokslai)df<-subset(df, unclass(mastas)<6)df$isaugo<-factor(ifelse(unclass(df$mastas)>3,1,0))levels(df$mokslai)<-c("nebaigtas","nebaigtas","nebaigtas",
"vidurinis","vidurinis","aukštasis",
54
"aukštasis")df<-droplevels(df)summary(df)
library(readxl)nedarbas <- read_excel(file.choose())View(nedarbas)levels(df$apskritis)perstata<-c(10,2,3,6,5,1,4,7,8,9)temp<-nedarbas[perstata,]View(temp)df$nedarbas<-temp$nedarbas[unclass(df$apskritis)]summary(factor(df$nedarbas))
fit<-glm(isaugo~lytis+mokslai+nedarbas, data=df,family=binomial(link="probit"))
summary(fit)library(car)lht(fit,c("mokslaividurinis=0","mokslaiaukštasis=0"))
Rezultatai ir komentarai.
Coefficients:Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.009403 0.278945 0.034 0.973lytisMoteris 0.066014 0.086428 0.764 0.445mokslaividurinis 0.197342 0.159236 1.239 0.215mokslaiaukštasis -0.004833 0.166418 -0.029 0.977nedarbas -0.020731 0.026773 -0.774 0.439
Linear hypothesis test
Hypothesis:mokslaividurinis = 0mokslaiaukštasis = 0
Model 1: restricted modelModel 2: isaugo ~ lytis + mokslai + nedarbas
Res.Df Df Chisq Pr(>Chisq)1 8572 855 2 5.3856 0.06769 .
55
Kad interpretacija skambėtų gražiau, žmones, manančius, kad korupcijoslygis išaugo, vadinsiu pesimistais. Analizė rodo, kad moterys šiek tiek dides-nės pesimistės nei vyrai, žmonės su viduriniu išsilavinimu yra didžiausi, o suaukštuoju — mažiausi pesimistai. Tačiau tokios išvados nėra labai pagrįs-tos, nes nei lytis, nei išsimokslinimas nėra statistiškai reikšmingi kintamie-ji (tiesa, išsimokslinimas statistiškai reikšmingas, jei reikšmingumo lygmenįimsime 0.1). Kaip bebūtų keista, kuo didesnis apskrityje nedarbo lygis, tuomažiau joje pesimistų. Tiesa, ir ši švada nepatikima, nes nedarbo lygis nėrastatistiškai reikšmingas.
2 dalis, programa.
fit<-glm(isaugo~lytis+mokslai+nedarbas+lytis*mokslai, data=df,family=binomial(link="probit"))
summary(fit)
lht(fit,c("lytisMoteris=0","lytisMoteris:mokslaividurinis=0","lytisMoteris:mokslaiaukštasis=0"))
lht(fit,c("mokslaividurinis=0","mokslaiaukštasis=0","lytisMoteris:mokslaividurinis=0","lytisMoteris:mokslaiaukštasis=0"))
asmuo<-c(1,0,1,0,mean(temp$nedarbas),0,0)tik<-fit$coefficients%*%asmuocat("Tikimybė: ",round(pnorm(tik),3),"\n")delta<-qnorm(0.975)*(asmuo%*%vcov(fit)%*%asmuo)cat("Intervalas: [", round(pnorm(tik-delta),3),";",
round(pnorm(tik+delta),3),"]\n")
Rezultatai ir komentarai.
Coefficients:Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.21126 0.30806 0.686 0.493lytisMoteris -0.38453 0.30016 -1.281 0.200mokslaividurinis -0.01031 0.21681 -0.048 0.962mokslaiaukštasis -0.26687 0.23237 -1.148 0.251nedarbas -0.02055 0.02681 -0.767 0.443lytisMoteris:mokslaividurinis 0.45913 0.32098 1.430 0.153lytisMoteris:mokslaiaukštasis 0.54724 0.33493 1.634 0.102
Linear hypothesis test
56
Hypothesis:lytisMoteris = 0lytisMoteris:mokslaividurinis = 0lytisMoteris:mokslaiaukštasis = 0
Model 1: restricted modelModel 2: isaugo ~ lytis + mokslai + nedarbas + lytis * mokslai
Res.Df Df Chisq Pr(>Chisq)1 8562 853 3 3.2688 0.352
Linear hypothesis test
Hypothesis:mokslaividurinis = 0mokslaiaukštasis = 0lytisMoteris:mokslaividurinis = 0lytisMoteris:mokslaiaukštasis = 0
Model 1: restricted modelModel 2: isaugo ~ lytis + mokslai + nedarbas + lytis * mokslai
Res.Df Df Chisq Pr(>Chisq)1 8572 853 4 8.0353 0.09029 .
Tikimybė: 0.506Intervalas: [ 0.5 ; 0.511 ]
Įtraukus sąveiką tarp lyties ir išsimokslinimo, situacija iš esmės nepasi-keitė: visi kintamieji vis tiek liko statistiškai nereikšmingi. Tikimybė, kadsąlygoje minimas asmuo bus pesimistas yra maždaug 0.506 (95% patikimumopasikliovimo intervalas: [0.5; 0.511]).
57