-
Notifications
You must be signed in to change notification settings - Fork 0
/
03-taulkuv1.Rmd
142 lines (92 loc) · 5.85 KB
/
03-taulkuv1.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# Taulukot ja kuvat
Tähän taulukoita ja kuvia, esimerkkiaineistoilla.
Kirjallisuutta on myös [@RefWorks:68], ja [@RefWorks:57] esittelee geometrisen tulkinnan peruskäsitteet yksinkertaisen kahden luokittelumuuttujan korrespondenssianalyysin avaulla. Mitenköhän skandit toimivat lähteissä, bib-tiedostossa on niitä myös escape-muodossa (katso esim. [@RefWorks:100], kritiikkiä on esittänyt [@RefWorks:110])
Viitteet saa tulostusasetuksilla yhdelle sivulle, oletuksena on viitteiden esittäminen jokaisen sivun alareunassa.
## Taulukoita
Tästä poistettu koodilohko data_1, ei tarvita jos ca-paketti on ladattu. Ja alaviiva on aikanakin ref-labeleissa kielletty. Koodilohkojen nimissä taitaa olla sallittu?
Taulukot tulostetaan funktiolla knitr::kable(). Taulukko numeroidaan ja se saa automaattisesti labelin etutunnisteella 'tab', ja siihen liitetään chunk-label (esim alla tab:smoketable1).
Tämä koodipätkä ei antaa yhden kappaleen esikatselussa virheilmoituksen, "smoke"-dataa ei löydy.
```{r smoketable1}
knitr::kable(smoke[,1:4], booktabs = TRUE,
caption = 'CA-paketin smoke-data (keinotekoinen)'
)
# Taulukkoon viittaaminen tekstissä \@ref(label)
```
Taulukossa \@ref(tab:smoketable1) on kahden luokittelumuuttujan keinotekoinen esimerkkiaineisto tupakonnin määrästä henkilöstöryhmittäin (SM = senior managemet, JM = junior management, SE ja JE vastaavasti ryhmälle employee, SC = secretary).
Useampi taulukko saadaan taulukkoympäristöön (table environment) yhdistämällä data-objektit listaksi.
```{r smoketable2}
# riviprofiilit
smoke.rpro <- smoke / rowSums (smoke)
# keskiarvoprofiili
smoke.avrpro <- colSums(smoke) / sum(smoke)
knitr::kable(
list(smoke.rpro, t(smoke.avrpro) ), digits = 3,
caption = 'Riviprofiilit ja keskiarvoprofiili', booktabs = TRUE
)
```
Taulukossa \@ref(tab:smoketable2) on laskettu jokaisen rivin riviprofiilit. Ne saadan kun rivin luvut jaetaan rivin summalla. Yhden rivin taulukossa on esitetty riviprofiilien keskikarvo, sarakesummat jaettuna koko taulukon havaintojen lukumäärällä. Sen prosenttiluvut kertovat tupakoititapojen jakauman koko henkilöstössä.
Jos PDF-tulostuksessa ei haluta ns. kelluvaa taulukkoa (float), voi kable-funktiossa käyttää LaTeXin pakettia longtable. Silloin on myös muistettava ottaa paketti käyttöön (usepackage{}) LaTeX - pohjatiedostossa (preamble).
Pandoc tukee monia Markdownin taulukkotyyppejä. Viittaaminen vaaati labeloidun otsikon, ja sen on oltava otsikkotestin alussa määrämuotoisena (esim. ab:hienotaulu). Tämä vaatii tarkkuutta, jos taulukon pitää toimia html- ja LaTex-outputissa. kable-funktiota kannattaa käyttää!
## Korrespondenssianalyysin numeeriset tulokset taulukoina
Korrespondenssianalyysin idea on vähentää aineiston dimensioita, ja esittää taulukon rivien ja sarakkeiden riippuvuudet yleensä kaksiulotteisena karttana.
Numeeriset tulokset ovat tärkeitä diagnostiikassa ja kartan laadun varmistuksessa. Niistä näkee myös täsmällisesti, mitkä rivit ja sarakkeet määrittävät koordinaatiston.
```{r simpleCA}
smokeCA <- ca(smoke)
#temp1 <- smokeCA tämä kai tarpeeton ? (4.12.2018)
numres1CA1 <- summary(smokeCA)
#str(smokeCA)
#knitr::kable( smokeCA,
# digits = 3,
# caption = 'Riviprofiilit ja keskiarvoprofiili', booktabs = TRUE
#)
#str(temp1)
#stargazer(temp2$rows, type = "text", title = "CA-tuloksia")
# LateX-tulostuksessa float vaatii jotain tällaista:Table: (\#tab:cataul1)
#str(temp2)
#str(temp2$scree)
#temp2$scree
numres1CA1
```
Taulukot ovatkin aika vaikeita, tulostiedoista! Stargazer toki tekee monenlaista, mutta kun kyse on hyvin yksinkertaisista tulostaulukoista kablen pitäisi toimia.
Kokeillaan summary(smokeCA) - listan dataframe-olioden tulostusta kablella. Voisi harkita funktiota, joka poimii CA:n tuloslistasta sopivat objektit kable-funktiolle? Stargazer taas vaatisi (luultavasti) jonkun ehdollisen tulostuksen (PDF ja html)?
```{r simpleCAtab1}
knitr::kable( numres1CA1$rows,
digits = 3,
caption = 'Korrespondenssianalyysin diagnostiikkaa - rivit', booktabs = TRUE
)
```
Rivien ja sarakkeiden diagnotiikkataulukot eivät mahdu rinnakkain, siksi ne tulostetaan erikseen.
```{r simpleCAtab2}
knitr::kable( numres1CA1$columns,
digits = 3,
caption = 'Korrespondenssianalyysin diagnostiikkaa - sarakkeet', booktabs = TRUE
)
```
Taulukoiden \@ref(tab:simpleCAtab1) ja \@ref(tab:simpleCAtab2) luvut on kerrottu tuhannella ("per milles").
Dimensioiden ominaisarvot (eli niiden osuus kokonaisinertiasta) saadaan ca-funktion tuloslistasta taulukoksi. Se esitetään joskus myös ns. scree - kuvana, jos dimensoita on paljon ja joudutaan pohtimaan kuinka monta valitaan (vaikea kysymys!).
```{r simpleCAscree}
knitr::kable( numres1CA1$scree,
digits = 3,
caption = 'Korrespondenssianalyysin diagnostiikkaa - ominaisarvot', booktabs = TRUE
)
```
Taulukko \@ref(tab:simpleCAscree) vaatii selityksen, mutta kuvaa ei tässä tapauksessa tarvita.
## Kuvat
**chunk-optiot**
fig.cap: R plot - kuvat figure-ympäristöön, automaattiset labelit (fig: + koodipätkän label) ja niihin voi viitata.
fig.asp oikeaan arvoon 1.
```{r CAmap1, fig.cap="CA-kartta", fig.asp= 1 }
plot(smokeCA)
```
Kuviin (kuten \@ref(fig:CAmap1)) ja taulukoihin voi viitata tekstissä. Kuvan otsikko tulostuu kuvan alapuolelle, ehkä vähän huono idea?
Näköjään stargazer-kokeilu tulostusoptiolla "html" loi R-projektihakemistoon kansion ja sinne png-kuvan.
finnish.ldf tiedoston muokkaus MikTeX:ssä tehty, mutta se ei vaikuta html-viiteotsikkoon. Korjattu "ehdollisessa viitesivussa" viitteet.Rmd jossa html-viiteluettelon otsikko annetaan.
Saisiko numeeristen tulosten scree-kuvan samalla tavalla kuvaksi?
```{r screeplot1, eval=FALSE, fig.cap="Dimensioiden ominaisarvot", include=FALSE}
str(numres1CA1$scree)
test2 <- as.table(numres1CA1$scree)
#str(test1$V1)
str(test2)
test2[[dimnames]]
# Vielä kokeilua!
```