* Encoding: UTF-8. *Syntax k prvnímu semináři. *Jsou dívky více monitorovány svými rodiči než kluci?. ************************************************. * Krok 1 - Screening a čištění dat. **************************************************. FREQUENCIES VARIABLES=POHLAVI KOHORTA /* Přes Analyze - Descriptive Statistics - Frequencies /BARCHART FREQ /ORDER=ANALYSIS. *V datech je neplatná hodnota, asi překlep 66. MISSING VALUES kohorta (0, 66). /* hodnoty 0 a 66 z proměnné kohorta považovat za neplatné/chybějící. *Nejsou pohlaví reprezentzována nerovnoměrně?. CROSSTABS /* Přes Analyze - Descriptive Statistics - Crosstabs /TABLES= kohorta BY pohlavi /* proměnné v řádku a sloupcích /FORMAT=AVALUE TABLES /STATISTICS=CHISQ /CELLS=COUNT ROW /* vypočíst řádkové relativní četnosti /COUNT ROUND CELL. *Podíl mužů a žen je ve zkoumaných kohortách přibližně stejný. *Nejsou v datech lidé, kteří věkově neodpovídají?. DESCRIPTIVES VARIABLES=vekr /* Analyze - Descriptive Statistics - Descriptives /STATISTICS=MEAN STDDEV MIN MAX. *Raději po kohortách. EXAMINE VARIABLES=vekr BY kohorta /* Analyze - Descriptive Statistics - Explore /PLOT BOXPLOT HISTOGRAM /COMPARE GROUPS /STATISTICS DESCRIPTIVES /CINTERVAL 95 /MISSING LISTWISE /NOTOTAL. MEANS TABLES=vekr BY kohorta /* Analyze - Compare Means - Means /CELLS=MEAN COUNT STDDEV MIN MAX. * U starší kohorty (žáků 1. stupně SŠ) jsou dva lidé, kteří mají více než 18 let. *Filtrujeme (asi) propadlíky - ti nereprezentují vývojovou etapu zakotvenou v 6. a 10. třídě. *Objevuje se myšlenka uvažovat o kohortách zvlášť. *Zatím jen filtr. *Přes Data - Select cases - If condition is satisfied. USE ALL. COMPUTE filter_$=(vekr<18). /* vybrat pouze žáky mladší 18 let VARIABLE LABELS filter_$ 'vekr<18 (FILTER)'. VALUE LABELS filter_$ 0 'Not Selected' 1 'Selected'. FORMATS filter_$ (f1.0). FILTER BY filter_$. EXECUTE. USE ALL. COMPUTE filter_$=(vekr<18 | missing(vekr)). /* vybrat pouze žáky mladší 18 let, ale také žáky, u kterých věk není uveden VARIABLE LABELS filter_$ 'vekr<18 (FILTER)'. VALUE LABELS filter_$ 0 'Not Selected' 1 'Selected'. FORMATS filter_$ (f1.0). FILTER BY filter_$. EXECUTE. *Když si teď spustíme pro kontrolu opět četnosti, není informace o filtru na první pohled vidět. *Podívejme se do "Notes". Takové filtry je potřeba reportovat!. *Budeme pracovat s položkami škály Monitorování (nakolik žáci vnímají, že jejich rodiče mají přehled o jejich aktivitách, pocitech apod.). *Škála se skládá z položek c01 - c09. *Podíváme se na četnosti odpovědí na jednotlivé položky. FREQUENCIES VARIABLES=c01_99 c02_99 c03_99 c04_99 c05_99 c06_99 c07_99 c08_99 c09_99 /* Přes Analyze - Frequencies /BARCHART FREQ /ORDER=ANALYSIS. *Začínáme popisem vzorku a datasetu. *************************************. *2. Vytváření nových proměnných. **************************************. *Vytvoření škály monitorování. * škála se skládá z položek c01 - c09. *Podíváme se na četnosti odpovědí na jednotlivé položky. FREQUENCIES VARIABLES=c01_99 c02_99 c03_99 c04_99 c05_99 c06_99 c07_99 c08_99 c09_99 /BARCHART FREQ /ORDER=ANALYSIS. CTABLES /* Přes Analyze - Tables - Custom Tables /VLABELS VARIABLES=c01_99 c02_99 c03_99 c04_99 c05_99 c06_99 c07_99 c08_99 c09_99 DISPLAY=LABEL /TABLE c01_99 [COUNT F40.0] + c02_99 [COUNT F40.0] + c03_99 [COUNT F40.0] + c04_99 [COUNT F40.0] + c05_99 [COUNT F40.0] + c06_99 [COUNT F40.0] + c07_99 [COUNT F40.0] + c08_99 [COUNT F40.0] + c09_99 [COUNT F40.0] /CLABELS ROWLABELS=OPPOSITE /CATEGORIES VARIABLES=c01_99 c02_99 c03_99 c04_99 c05_99 c06_99 c07_99 c08_99 c09_99 ORDER=A KEY=VALUE EMPTY=INCLUDE /CRITERIA CILEVEL=95. * Četnosti vypadají smysluplně *Podíváme se, zda spolu položky pozitivně korelují - abychom z nich mohli udělat škálu. *Počítat celkový skór je smysluplné tehdy, když položky měří totéž; a pokud měří totéž, měly by spolu kladně korelovat. CORRELATIONS /* přes Analyze - Correlate - Bivariate /VARIABLES=c01_99 c02_99 c03_99 c04_99 c05_99 c06_99 c07_99 c08_99 c09_99 /PRINT=TWOTAIL NOSIG /MISSING=PAIRWISE. NONPAR CORR /* přes Analyze - Correlate - Bivariate, Spearmanovy korelace /VARIABLES=c01_99 TO c09_99 /PRINT=SPEARMAN TWOTAIL SIG /MISSING=PAIRWISE. * Všechny položky škály monitorování spolu kladně korelují. *Alternativně můžeme udělat položkovou analýzu. RELIABILITY /* přes Analyze - Scale - Reliability Analysis /VARIABLES=c01_99 TO c09_99 /SCALE('MONIT') ALL /MODEL=ALPHA /STATISTICS=DESCRIPTIVE SCALE CORR /SUMMARY=TOTAL. *Můžeme spočítat škálový skór a uděláme to třema způsoby. *Výpočet ignoruje filtrování. COMPUTE MONIT_S = c01_99 +c02_99+ c03_99+ c04_99+ c05_99+ c06_99+ c07_99+ c08_99+ c09_99. COMPUTE MONIT_S = SUM(c01_99 , c02_99, c03_99, c04_99, c05_99, c06_99, c07_99, c08_99, c09_99). COMPUTE MONIT_S = SUM(c01_99 to c09_99). /* různé způsoby jak zapsat totéž. COMPUTE MONIT_S = SUM.9(c01_99 to c09_99). /* různé způsoby jak zapsat totéž. COMPUTE MONIT_M = MEAN(c01_99 , c02_99, c03_99, c04_99, c05_99, c06_99, c07_99, c08_99, c09_99). COMPUTE MONIT_M2 = MEAN.8(c01_99 , c02_99, c03_99, c04_99, c05_99, c06_99, c07_99, c08_99, c09_99). EXECUTE. * Funkce + vypočte celkový skór jako součet položek, a to pro žáky, kteří vyplnili všechny položky škály monitorování (nemají ani jednu nevyplněnou položku). * Funkce SUM() vypočte celkový skór jako součet položek, a to pro žáky, kteří vyplnili alespoň jednu položku škály monitorování. * Počítat celkový skór jako součet položek však má smysl pouze tehdy, když žáci vyplnili všechny položky. * Doporučuji proto funkci SUM() nepoužívat bez další specifikace. * Funkce SUM.9() vypočte celkový skór jako součet položek, a to pro žáky, kteří vyplnili všech 9 položek. * Funkce MEAN() vypočte celkový skór jako průměr položek, a to pro žáky, kteří vyplnili alespoň jednu položku škály monitorování. * Doporučuji funkci MEAN() nepoužívat bez další specifikace, protože celkový skór vypočtený pouze z jedné položky nebude validní. * Funkce MEAN.8() vypočte celkový skór jako průměr položek, a to pro žáky, kteří vyplnili alespoň 8 položek škály monitorování (1 nevyplněná položka je tedy "povolena", protože škála má celkem 9 položek).. * Kdybychom zadali MEAN.9(), vypočetl by se celkový skór pouze pro žáky, kteří vyplnili všech 9 položek; kdybychom zadali MEAN.7() stačilo by 7 vyplněných položek atd. *Podívejme se nyní na statistiky škály monitoringu. *Vždy stojí za to začít zobrazením. *Jedno netradiční. XGRAPH CHART=[POINT] BY MONIT_S[s] /DISPLAY DOT=ASYMMETRIC. /*Přes Graphs - Chart Builder - Scatter/Dot - Simple Dotplot. *Pro kontrolu pár popisných statistik *Histogram vyprodukovaný prostřednictvím funkce FREQUENCIES spolu se spoustou popisných statistik. DESCRIPTIVES MONIT_S MONIT_M MONIT_M2. /* přes Analyze - Descriptive Statistics - Descriptives . FREQUENCIES VARIABLES=MONIT_M2 /STATISTICS=ALL /HISTOGRAM NORMAL /ORDER=ANALYSIS. *Zde už můžeme napsat shrnující odstavec o příprvě dat a filtrech. **********************************************************************************. * 3. Popisné statistiky. **********************************************************************************. FREQUENCIES VARIABLES=POHLAVI /* Přes Analyze - Frequencies /BARCHART FREQ /ORDER=ANALYSIS. *Boxplot vyprodukovaný funkcí EXAMINE. EXAMINE VARIABLES = MONIT_M2 /* Analyze - Descriptive Statistics - Explore /PLOT BOXPLOT STEMLEAF HISTOGRAM NPPLOT /COMPARE GROUPS /PERCENTILES(5,10,25,50,75,90,95) HAVERAGE /STATISTICS DESCRIPTIVES EXTREME /CINTERVAL 95 /MISSING LISTWISE /NOTOTAL. *Když jsme seznámili s oběma proměnnými, můžeme se pokusit zobrazit hlefaný vztah. *Mnoho cest. MEANS TABLES=MONIT_M2 BY pohlavi /* přes Analyze - Compare Means - Means /CELLS=MEAN COUNT STDDEV. *Třeba boxploty - cestou se dozvíme S.E. průměru a můžeme si představit interval spolehlivosti.. GGRAPH /GRAPHDATASET NAME="graphdataset" VARIABLES=pohlavi MONIT_M2 MISSING=LISTWISE REPORTMISSING=NO /GRAPHSPEC SOURCE=INLINE. BEGIN GPL SOURCE: s=userSource(id("graphdataset")) DATA: pohlavi=col(source(s), name("pohlavi"), unit.category()) DATA: MONIT_M2=col(source(s), name("MONIT_M2")) DATA: id=col(source(s), name("$CASENUM"), unit.category()) GUIDE: axis(dim(1), label("pohlaví")) GUIDE: axis(dim(2), label("MONIT_M2")) SCALE: cat(dim(1), include("1", "2")) SCALE: linear(dim(2), include(0)) ELEMENT: schema(position(bin.quantile.letter(pohlavi*MONIT_M2)), label(id)) END GPL. * Dotploty. GGRAPH /GRAPHDATASET NAME="graphdataset" VARIABLES=pohlavi MONIT_M2 MISSING=LISTWISE REPORTMISSING=NO /GRAPHSPEC SOURCE=INLINE. BEGIN GPL SOURCE: s=userSource(id("graphdataset")) DATA: pohlavi=col(source(s), name("pohlavi"), unit.category()) DATA: MONIT_M2=col(source(s), name("MONIT_M2")) GUIDE: axis(dim(1), label("pohlaví")) GUIDE: axis(dim(2), label("MONIT_M2")) SCALE: cat(dim(1), include("1", "2")) SCALE: linear(dim(2), include(0)) ELEMENT: point.dodge.symmetric(position(pohlavi*MONIT_M2)) END GPL. *Nebo histogramy. GGRAPH /GRAPHDATASET NAME="graphdataset" VARIABLES=MONIT_M2 pohlavi MISSING=LISTWISE REPORTMISSING=NO /GRAPHSPEC SOURCE=INLINE. BEGIN GPL SOURCE: s=userSource(id("graphdataset")) DATA: MONIT_M2=col(source(s), name("MONIT_M2")) DATA: pohlavi=col(source(s), name("pohlavi"), unit.category()) GUIDE: axis(dim(1), label("MONIT_M2")) GUIDE: axis(dim(2), label("Frequency Percent")) GUIDE: axis(dim(3), label("pohlaví"), opposite()) SCALE: cat(dim(3), include("1", "2")) ELEMENT: interval(position(summary.percent.count(bin.rect(MONIT_M2*1*pohlavi, binCount(24)), base.all())), shape.interior(shape.square)) ELEMENT: line(position(density.normal(MONIT_M2*1*pohlavi)), color("Normal")) END GPL. *Něco musíme vybrat do zprávy. *Chybějících dat je minimum. *************************************************************************************************. * 4. Plánované hypotézy. *********************************************. *Jaká je přesně hypotéza? ...liší se ve střední hodnotě? *Varianta průměry implikuje t-test. *Předpoklady t-testu. *Intervalovost - check *Normalita?. EXAMINE VARIABLES=MONIT_M2 BY pohlavi /PLOT BOXPLOT HISTOGRAM NPPLOT SPREADLEVEL(1) /COMPARE GROUPS /STATISTICS DESCRIPTIVES /CINTERVAL 95 /MISSING LISTWISE /NOTOTAL. *Homoskedascita? Implicitně Check. *Jaký je tedy rozdíl. Podívejme se do popisných. *Spočítejme si velikost účinku. *Rozdíl není příliš patrný, ale můžeme ho formálně otestovat třeba t-testem. T-TEST GROUPS=pohlavi(1 2) /MISSING=ANALYSIS /VARIABLES=MONIT_M2 /CRITERIA=CI(.95). *Co Cohenovo d? Interval spolehlivosti? To si musíme spočítat ručně. *Nebo online. *Co kdybychom si mysleli, že nemůžeme věřit v robustnost t-testu vůči nenormalitě?. *Bootstrap. BOOTSTRAP /SAMPLING METHOD=SIMPLE /VARIABLES TARGET=MONIT_M2 INPUT=pohlavi /CRITERIA CILEVEL=95 CITYPE=BCA NSAMPLES=1000 /MISSING USERMISSING=EXCLUDE. T-TEST GROUPS=pohlavi(1 2) /MISSING=ANALYSIS /VARIABLES=MONIT_M2 /CRITERIA=CI(.95). *Můžeme použít Mann-Whitheyho U-test. NPAR TESTS /M-W= MONIT_M2 BY pohlavi(1 2) /MISSING ANALYSIS. * Jako velikost účinku doporučuji uvádět pravděpodobnost superiority, kterou lze vypočíst pomocí jako U/(n1 * n2), kde U je testová statistika a n1 a n2 velikosti skupin. ********************************************************************************* 5. Doplňkové analýzy. ************************************************************************. *Ale počkat, vždyť náš vzorek tvořily oddělené kohorty. GGRAPH /GRAPHDATASET NAME="graphdataset" VARIABLES=vekr kohorta MISSING=LISTWISE REPORTMISSING=NO /GRAPHSPEC SOURCE=INLINE. BEGIN GPL SOURCE: s=userSource(id("graphdataset")) DATA: vekr=col(source(s), name("vekr")) DATA: kohorta=col(source(s), name("kohorta"), unit.category()) GUIDE: axis(dim(1), label("vek v letech")) GUIDE: axis(dim(2), label("Frequency")) GUIDE: legend(aesthetic(aesthetic.color.interior), label("kohorta")) SCALE: cat(aesthetic(aesthetic.color.interior), include("6", "10")) ELEMENT: interval.stack(position(summary.count(bin.rect(vekr))), color.interior(kohorta), shape.interior(shape.square)) END GPL. *A věk by tu mohl hrát roli. GGRAPH /GRAPHDATASET NAME="graphdataset" VARIABLES=kohorta MONIT_M2 pohlavi MISSING=LISTWISE REPORTMISSING=NO /GRAPHSPEC SOURCE=INLINE. BEGIN GPL SOURCE: s=userSource(id("graphdataset")) DATA: kohorta=col(source(s), name("kohorta"), unit.category()) DATA: MONIT_M2=col(source(s), name("MONIT_M2")) DATA: pohlavi=col(source(s), name("pohlavi"), unit.category()) DATA: id=col(source(s), name("$CASENUM"), unit.category()) COORD: rect(dim(1,2), cluster(3,0)) GUIDE: axis(dim(3), label("kohorta")) GUIDE: axis(dim(2), label("MONIT_M2")) GUIDE: legend(aesthetic(aesthetic.color), label("pohlaví")) SCALE: cat(dim(3), include("6", "10")) SCALE: linear(dim(2), include(0)) SCALE: cat(aesthetic(aesthetic.color), include("1", "2")) SCALE: cat(dim(1), include("1", "2")) ELEMENT: schema(position(bin.quantile.letter(pohlavi*MONIT_M2*kohorta)), color(pohlavi), label(id)) END GPL. *Ano, hraje. Takže kdyby byl poměr mužů a žen v rámci kohort různý (což v těchto datech není), t-test ověřující rozdíly mezi muži a ženami by moc nedával smysl. * Můžeme ale i tak zkusit oddělenou analýzu kohort vymezených věkem (pro zjednodušení budeme ignorovat ty, kteří věk neuvedli). RECODE vekr (LOWEST THRU 15 = 1) (15.1 THRU 18=2) INTO kohorta_new. EXECUTE. VARIABLE LABELS kohorta_new "Kohorta (nová)". VALUE LABELS kohorta_new 1 "mladší: 11-14 let" 2 "starší: 15-17 let". SORT CASES BY kohorta_new. SPLIT FILE SEPARATE BY kohorta_new. *Například t-test. T-TEST GROUPS= pohlavi(1 2) /MISSING=ANALYSIS /VARIABLES=MONIT_S /CRITERIA=CI(.95). * Vypnout rozdělení souboru. SPLIT FILE OFF.