290, 300 hezké příklady vztahu t-testu, ANOVA a lm atd. Ukazatele t vycházejí zcela stejně. Též chi2 nezávislost.
36 grid.arrange
82,83 broom tidy glance
140 count() jako alternativa k table, pro více podskupin přehlednější výpis
86 centering, standardizing - jen zmínka, 98 příklad v R
91 log a exp + 96 příklad
Demonstrace TB: Poměry reakčních dob, transformace pomocí log(). Ukazuji 4 příklady různých poměrů časů. Vždy počítám několik možných koeficientů, které porovnávají jejich trvání. Logaritmování je určitě nejvhodnější. Z příkladů je snad zřejmý postup různých převodů včetně získání rozdílů v procentech a milisekundách. Důležité je rozumět, jak pro tu samou realitu vycházejí pochopitelně jiné koeficienty, které ovšem znamenají totéž.
Z příkladů 2 a 3 vyplývá, že log(t2) - log(t1) je lineární veličina vhodná pro původně poměrové veličiny.
# Př. 1: t1 = t2
t1 <- 0.100 # s
t2 <- 0.100 # s
t2 - t1 # 0 = stejné trvání, ale nelineární veličina, "rozdíl"
t2/t1 # 1 = stejné trvání, "poměr"
t2/t1 * 100 # "poměr v procentech", 100 = stejné trvání
log(t2) - log(t1) # 0 = stejné trvání, lineární veličina. "Logaritmus poměru = rozdíl logaritmů", doporučuji.
log(t2/t1) # totéž
exp(log(t2) - log(t1)) # 1 = už zase poměr, totéž co t2/t1 (zde ukazuji, jak z doporučené veličiny získat zpět poměr)
t2new <- t1 * exp(log(t2) - log(t1)) # totéž co t2, ale vypočteno na základě inverze rozdílu logaritmů
t2new - t1 # rozdíl v sekundách, 0 = stejné trvání, nelineární veličina
# Př. 2: t2 = 200 % t1
t1 <- 0.100 # s
t2 <- 0.200 # s
t2 - t1 # 0.1 => t2 trvá o 100 ms více
t2/t1 # 2 = dvojnásobné trvání, poměr
t2/t1 * 100 # poměr v procentech, 200 = dvojnásobné trvání, o 100 % víc než t1
log(t2) - log(t1) # 0.69 = kladné číslo znamená delší trvání, lineární veličina
log(t2/t1) # totéž
exp(log(t2) - log(t1)) # 2 = už zase poměr, totéž co t2/t1
t2new <- t1 * exp(log(t2) - log(t1)) # totéž co t2, ale vypočteno na základě inverze rozdílu logaritmů
t2new - t1 # rozdíl v sekundách, 0.1 => t2 trvá o 100 ms více, nelineární veličina
# Př. 3: t2 = 50 % t1
t1 <- 0.100 # s
t2 <- 0.050 # s
t2 - t1 # -0.05 => t2 je o 50 ms kratší
t2/t1 # 0.5 = poloviční trvání, poměr
t2/t1 * 100 # poměr v procentech, 50 = poloviční trvání, o 100 - 50 = 50 % kratší než t1
log(t2) - log(t1) # -0.69 = záporné číslo znamená kratší trvání, lineární veličina (srovnej viz předchozí příklad +0.69)
log(t2/t1) # totéž
exp(log(t2) - log(t1)) # 0.5 = už zase poměr, totéž co t2/t1
t2new <- t1 * exp(log(t2) - log(t1)) # totéž co t2, ale vypočteno na základě inverze rozdílu logaritmů
t2new - t1 # rozdíl v sekundách, -0.05 => t2 je o 50 ms kratší, nelineární veličina
# Př. 4: t2 je 80 % t1, tedy o 20 % kratší než t1
t1 <- 0.200 # s
t2 <- 0.160 # s
t2 - t1 # -0.04 => t2 je o 40 ms kratší
t2/t1 # 0.8 = poměr trvání
t2/t1 * 100 # poměr v procentech, t2 je 80 % t1, je tedy o 100 - 80 = 20 % kratší než t1
log(t2) - log(t1) # -0.22 = záporné číslo znamená kratší trvání, lineární veličina
log(t2/t1) # totéž
exp(log(t2) - log(t1)) # 0.8 = už zase poměr, totéž co t2/t1
t2new <- t1 * exp(log(t2) - log(t1)) # totéž co t2, ale vypočteno na základě inverze rozdílu logaritmů
t2new - t1 # rozdíl v sekundách, -0.04 => t2 je o 40 ms kratší, nelineární veličina
90 r2 = Pearsonova korelace na druhou
114 collinearity a vif() pro její detekci
122-123 elegantní automatická predikce středů pro jednotlivé hodnoty factor
124 relevel() pro změnu reference ve factor (intercept)
126 contrasts() a contr.sum() pro sum-coding (vystředění) - pro 2 hodnoty analogie k centering - smysl použít jen pro main effects (viz dále 142), ale i tam opatrně, protože mezi kategoriemi -1 a +1 je krok 2. Rozhodně člověk zvládne main effects i bez sum-coding. Tak i tak, musí se přemýšlet a dávat pozor.
134 interakce kategorická * spojitá 137 Už nelze interpretovat samostatné intercepts. Centrování se vyplatí - koeficient ukazuje rozdíl pro průměrné hodnoty, nikoliv pro 0.
149 interakce kategorická * kategorická
142 simple effects vs main effects
146 interakce spojitá * spojitá 147 připomenutí: každý koeficient je pro nulové ostatní koeficienty. Centrováním získáme efekty pro průměrné hodnoty ostatních veličin. A standardizací srovnáme metriky proměnných. Užitečný obrázek 8.4a. Domyslet rovnici.
153 nelineární - parabolická regrese. Centrovaný prediktor i ten samý na druhou jako vstup.
159 Cohenovo d - effect size mezi dvěma středy
162 effsize, cohen.d vč. conf. int.
182-183 graf intervalových odhadů regresních koeficientů
184-187 post-hoc párové testy pomoci emmeans
188-194 graf nejistoty kategoriálních prediktorů
194-197 nejistota kontinuálních prediktorů, dvě tabulky v jednom grafu
235 fig 14.1 varying intercepts vs. int. + slopes a 237 fig 14.2
Pozn. v této knize B. Winter preferuje termín “varying” intercept či slope oproti běžnějšímu “random” intercept či slope. Jedná se ale o totéž.
236 fixed effects - vše, co bylo doteď. Opakovatelné při nových verzích experimentu, jejich vliv se předpokládá konstantní napříč těmito experimenty. Mohou být kategoriální i spojité. Random effects vždy jen kategoriální, často participant a item. Většinou nekonečně možností, je to vzorek z populace, zajímá nás spíše jen variabilita.
238-239 vysvětlení výstupů lme4 pro fixed i random effects effects (intercept a slope variation mezi účastníky). A též random effect correlations: trial -0.38 znamená, že vyšší intercepty mívají nižší trial slopes (trial zde znamená index opakovaných pokusů, kde ve fixed obecně vyšlo, že s dalšími pokusy se čas zkracuje), tedy kdo začne na začátku pomalu (vyšší čas interceptu) má větší možnost později zrychlit (snížit čas). Tato korelace interceptu se slopes je dalším parametrem, který je v modelu odhadován a obsahuje užitečnou informaci, proto by neměla být normálně vynechávána (může ukázat tzv. ceiling effect - saturaci - když je pro někoho úkol příliš lehký, je pak málo prostoru pro objevení vlivu nějakého efektu, viz 240 fig 14.3).
241 tab 14.1 syntaxe lme4, jak se případně vyhnout slope/intercept korelaci
Pro které proměnné modelovat varying slopes (jiné označení termínu “random slopes”)?
Obecně vynechání důležitých věcí z modelu, tedy např. varying slopes, vede na příliš optimistické p-hodnoty a je to tedy chyba.
Ne vše lze ale z našich dat odhadnout a krédo “keep it maximal” není vždy reálné.
Příklad - má trénování vliv na reakční dobu? Podmínka pro srovnání je tedy “před” a “po”.
Náhled začátku dat
Výzkumník se rozhodl modelovat vztahem
RT ~ condition + age + (1 + condition|participant) + (1|item)
Zásadní otázka: mění se v mých datech konkrétní proměnná napříč jednotlivci?
Zde: condition - účastníci byli vystavěni oběma podmínkám -> můžeme modelovat varying slopes.
A dává to teoreticky smysl? Lidé jsou různí a je velmi pravděpodobné, že na každého to bude působit jinak -> ano, dává to smysl.
Age - mění se v rámci účastníka? Ne. Zde varying slopes nepůjdou. Kdybychom ale měli longitudinální (dlouhodobou) studii, kde by účastníci stárli a my to měli zaznamenané, tak je to jiná situace.
Item - položky opakované napříč účastníky -> závislost, něco unikátního v rámci položky může ovlivnit reakce napříč účastníky. Varying intercepts tedy určitě ano. A co varying slopes? Pro podmínku “před” a “po” byly využité jiné položky (tzv. between-items design na rozdíl od within-items design), tudíž se condition napříč items nemění a varying slopes nelze modelovat.
Age napříč items se mění, takže varying slope (1+age|item) lze modelovat. Ale dává to teoreticky smysl? To bude závislet na konkrétním studii, kterou provádíme. Takováto rozhodnutí by rozhodně měla být prováděna dopředu, ideálně ještě před sběrem dat (aby jich případně bylo dost), rozhodně alespoň před tím, než je začneme analyzovat (pak třeba dostaneme odpověď, že z daných dat něco zjistit nelze a máme pořídit nová data). Rozhodně je nesmysl vymýšlet otázky na základě toho, co data dovolí. Otázky by měly být dány předem a musíme se pak smířit s tím, že model občas řekne, že na něco odpovědět nelze.
Dopředu víme správné výsledky. Opět můžeme vyhodnocovat funkčnost výpočtu p-hodnoty v souvislosti s hladinou významnosti a schopnost modelu odhalit hypotézy, podobně jako u konfidenčních intervalů a testování hypotéz na začátku semestru.
Navíc pochopení vztahu mezi procesem generování umělých dat a následnou konstrukcí vzorce pro model je nezbytné pro uvědomění si toho, co je schopen model s daným předpisem v datech modelovat.
Vowel durations v závislosti na word frequency. Očekáváme, že běžnější slova budou mít kratší samohlásky. 6 participants x 20 items (stejné položky napříč účastníky)
logfreqs - logaritmus frekvence = transformace linearizující poměrovou veličinu. Násobení *5 je jen z důvodu, aby čísla připomínala běžně se vyskytující hodnoty, není to jinak nic zásadního.
# 15.2. Simulating vowel durations for a mixed model analysis:
library(tidyverse)
set.seed(666) # Set random seed value
ppt_ids <- gl(6, 20) # Generate participant identifiers for 6 participants & 20 items
it_ids <- gl(20, 1) # 20 item identifiers
it_ids <- rep(it_ids, 6) # Repeat each 6 times for participant numbers
logfreqs <- round(rexp(20) * 5 , 2) # Create predictor values (simulated frequencies)
logfreqs <- rep(logfreqs, 6) # Repeat for 6 participants
xdata <- tibble(ppt = ppt_ids, item = it_ids, freq = logfreqs) # Put predictors into tibble
Intercept for vowel duration: 300 ms, napříč účastníky sd = 40 ms normálně rozdělené. Položky mají také každá svoji odchylku, sd = 20 ms. A náhodný šum (zbytková chyba) sd = 20 ms.
Frequency effect: s růstem log frekvence o +1 se změní vowel duration o -5 ms.
Dur je součtem všech těchto dílčích složek, které budeme chtít později v modelu odhalit.
xdata$int <- 300 # Add intercept
ppt_ints <- rnorm(6, sd = 40) # Create participant deviation scores
xdata$ppt_ints <- rep(ppt_ints, each = 20) # Add them, each repeat 20 times to main tibble
item_ints <- rnorm(20, sd = 20) # Same for items
item_ints <- rep(item_ints, times = 6)
xdata$item_ints <- item_ints # Add to tibble
xdata$error <- rnorm(120, sd = 20) # Add general error term
xdata$effect <- -5 * xdata$freq # Add effect
# Put all the different effects into the main response:
xdata <- mutate(xdata,
dur = int + ppt_ints + item_ints +
error + effect)
# For pedagogical purposes, get rid of what's been used to create stuff:
xreal <- dplyr::select(xdata, -(int:effect))
# This is what you would have as the researcher:
xreal
xreal[1:6, ]
## # A tibble: 6 × 4
## ppt item freq dur
## <fct> <fct> <dbl> <dbl>
## 1 1 1 2.74 314.
## 2 1 2 9.82 238.
## 3 1 3 0.7 366.
## 4 1 4 0.05 245.
## 5 1 5 2.76 304.
## 6 1 6 17.6 198.
xreal[21:26, ]
## # A tibble: 6 × 4
## ppt item freq dur
## <fct> <fct> <dbl> <dbl>
## 1 2 1 2.74 306.
## 2 2 2 9.82 209.
## 3 2 3 0.7 317.
## 4 2 4 0.05 276.
## 5 2 5 2.76 332.
## 6 2 6 17.6 215.
Intercept int a effect -5*freq (v generujícím modelu) jsou systematické složky (fixed) - ty, co jsme doposud zkoumali pomocí lm(). Ostatní jsou náhodné (random). Mimochodem: freq je spojitá proměnná a náhodné efekty jsou vždy faktorové.
# --------------------------------------------------------
# 15.3. Analyzing the simulated vowel durations with mixed models:
library(lme4)
# Create varying intercept model:
xmdl <- lmer(dur ~ freq + (1|ppt) + (1|item),
data = xreal, REML = FALSE)
# REML = FALSE přepíná model do nastavení pro maximum likelihood estimation.
# Inspect:
summary(xmdl)
## Linear mixed model fit by maximum likelihood ['lmerMod']
## Formula: dur ~ freq + (1 | ppt) + (1 | item)
## Data: xreal
##
## AIC BIC logLik deviance df.resid
## 1105.1 1119.0 -547.5 1095.1 115
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.09699 -0.60947 0.06482 0.60761 2.39757
##
## Random effects:
## Groups Name Variance Std.Dev.
## item (Intercept) 589.3 24.28
## ppt (Intercept) 1296.5 36.01
## Residual 284.0 16.85
## Number of obs: 120, groups: item, 20; ppt, 6
##
## Fixed effects:
## Estimate Std. Error t value
## (Intercept) 337.973 16.735 20.196
## freq -5.460 1.004 -5.438
##
## Correlation of Fixed Effects:
## (Intr)
## freq -0.339
Model skutečně odpovídá přesně tomu, co jsme generovali. Fixní itercept = 338, freq = -5.46. Random ppt = 36, item = 24, residual = 17 (Std.Dev.). Docela podobné našim číslům (nemůžeme očekávat zázraky ze 6 účastníků). Samozřejmě coef(model) neobsahuje varying slopes, ty jsme negenerovali ani nemodelovali.
# --------------------------------------------------------
# 15.4. Extracting information out of lme4 objects:
# Fixed effects coefficients:
fixef(xmdl)
# Works as usual, e.g., extract slope:
fixef(xmdl)[2]
# Retrieve coefficient table:
summary(xmdl)$coefficients
# Random effects coefficients:
coef(xmdl)
# Participant random effects:
coef(xmdl)$ppt
# Participant deviation scores:
ranef(xmdl)$ppt
# --------------------------------------------------------
# 15.5. Messing up the model:
# Dropping item random intercepts:
xmdl_bad <- lmer(dur ~ freq + (1|ppt),
data = xdata, REML = FALSE)
summary(xmdl_bad)
## Linear mixed model fit by maximum likelihood ['lmerMod']
## Formula: dur ~ freq + (1 | ppt)
## Data: xdata
##
## AIC BIC logLik deviance df.resid
## 1182.1 1193.2 -587.0 1174.1 116
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -2.6270 -0.6397 0.1089 0.7462 1.9778
##
## Random effects:
## Groups Name Variance Std.Dev.
## ppt (Intercept) 1240.8 35.23
## Residual 877.6 29.62
## Number of obs: 120, groups: ppt, 6
##
## Fixed effects:
## Estimate Std. Error t value
## (Intercept) 337.9730 14.8829 22.71
## freq -5.4601 0.4813 -11.34
##
## Correlation of Fixed Effects:
## (Intr)
## freq -0.183
Residual se skoro zdvojnásobil ze 16.85 na 29.62. Std. Error u freq je poloviční (0.48 vs. 1), což vypadá sice dobře, ale v tom je právě ten problém - ona to totiž není pravda. Model neví o důležitém zdroji rozptylu a je více anti-conservative, tedy přehnaně optimistický.
# Adding random slopes even though we didn't generate them:
xmdl_slope <- lmer(dur ~ freq + (1 + freq|ppt) + (1|item),
data = xdata, REML = FALSE)
## boundary (singular) fit: see help('isSingular')
summary(xmdl_slope)$varcor
## Groups Name Std.Dev. Corr
## item (Intercept) 24.27780
## ppt (Intercept) 35.32440
## freq 0.12079 1.000
## Residual 16.83644
# Extract participant slopes:
coef(xmdl_slope)$ppt
## (Intercept) freq
## 1 315.7902 -5.535971
## 2 302.3449 -5.581948
## 3 362.9170 -5.374818
## 4 318.3843 -5.527100
## 5 324.7279 -5.505408
## 6 403.6741 -5.235448
Varování boundary (singular) fit: problém - modelu nelze věřit. Std.Dev napříč varying slopes pro freq (0.12079) je velmi malá. Vysvětlení: v umělých datech jsme nic takového nevytvářeli, mělo by to být 0. Další nápověda průšvihu: Corr varying slope / intercept je přesně rovna 1. Perfektní korelace v lingvistice nejsou. Interpretovali bychom to takto: větší intercept jde přesně beze zbytku s vyšší frekvencí; jenže díky tomu, že je to singular fit, tak to vůbec interpretovat nemáme.
# De-correlate random effects structure:
xmdl_slope_nocorr <- lmer(dur ~ freq +
(1|ppt) + (1|item) +
(0 + freq|ppt),
data = xdata, REML = FALSE)
## boundary (singular) fit: see help('isSingular')
summary(xmdl_slope_nocorr)$varcor
## Groups Name Std.Dev.
## item (Intercept) 24.276
## ppt freq 0.000
## ppt.1 (Intercept) 36.006
## Residual 16.853
# Notice that the random slopes are all the same:
coef(xmdl_slope_nocorr)$ppt
## (Intercept) freq
## 1 315.3049 -5.460115
## 2 301.6253 -5.460115
## 3 363.4343 -5.460115
## 4 318.0924 -5.460115
## 5 324.4672 -5.460115
## 6 404.9142 -5.460115
Boundary (singular) fit, lme4() neodhalilo žádné varying slopes napříč participants. Pokud bychom se detailně nepodívali na random strukturu, neodhalili bychom to. Klidně by to někdo publikoval jako random slope model (což vypadá hezky), ovšem random slopes vůbec nebyly odhadnuty.
260 Probability = pravděpodobnost výsledku (outcome) při nějaké hodnotě parametrů. Likelihood = věrohodnost, jak věrohodné jsou určité parametry pro pozorovaný outcome. Maximum likelihood estimation = hledání nejvěrohodnějších parametrů modelu pro pozorovaná data.
261 likelihood ratio test pro model s 1 fixním modelem: porovnání anova s modelem jen s interceptem
262 jak referovat o p-hodnotě v textu
262 p-hodnota pro významnost random effect
263 p-hodnoty pro mnoho fixed effects library(afex), mixed(…, method = “LRT”)
264 R2 pro smíšené a generalizované modely
264 konfidenční intervaly pro predikce - jen odkaz
265-267 problémy s konvergencí. Naprosto nutné kontrolovat strukturu random effects, random effects correlation nesmí být přesně 0, 1 nebo -1. Dobrý zdroj informací je ?convergence
argument lmerControl může něco vyřešit, ?lmerControl vysvětluje ledasco
library(afex) all_fit(proměnná_s_lmer_modelem) zkusí různé optimalizační algoritmy a řekne, které konvergují. A vždy domyslet, zda má vůbec model v datech k dispozici dané kombinace hodnot efektů, aby se měl čeho chytit, viz Příklad 1 (242) výše.
# --------------------------------------------------------
# 15.6. Likelihood ratio tests:
# Construct null model without fixed effect:
xmdl_nofreq <- lmer(dur ~ 1 + (1|ppt) + (1|item),
data = xreal, REML = FALSE)
# Model comparison:
anova(xmdl_nofreq, xmdl, test = 'Chisq')
## Data: xreal
## Models:
## xmdl_nofreq: dur ~ 1 + (1 | ppt) + (1 | item)
## xmdl: dur ~ freq + (1 | ppt) + (1 | item)
## npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
## xmdl_nofreq 4 1121.0 1132.2 -556.51 1113.0
## xmdl 5 1105.1 1119.0 -547.55 1095.1 17.933 1 2.288e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Full model:
x_REML <- lmer(dur ~ freq + (1|ppt) + (1|item),
data = xdata, REML = TRUE)
# Reduced model (no item random intercepts):
x_red <- lmer(dur ~ freq + (1|ppt),
data = xdata, REML = TRUE)
anova(x_red, x_REML, test = 'Chisq', refit = FALSE)
## Data: xdata
## Models:
## x_red: dur ~ freq + (1 | ppt)
## x_REML: dur ~ freq + (1 | ppt) + (1 | item)
## npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
## x_red 4 1174.4 1185.5 -583.2 1166.4
## x_REML 5 1095.8 1109.7 -542.9 1085.8 80.608 1 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Use afex for testing fixed effects:
library(afex)
xmdl_afex <- mixed(dur ~ freq + (1|ppt) + (1|item),
data = xdata, method = 'LRT')
xmdl_afex
## Mixed Model Anova Table (Type 3 tests, LRT-method)
##
## Model: dur ~ freq + (1 | ppt) + (1 | item)
## Data: xdata
## Df full model: 5
## Effect df Chisq p.value
## 1 freq 1 17.93 *** <.001
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '+' 0.1 ' ' 1
fixef(xmdl_afex$full_model)
## (Intercept) freq
## 337.973044 -5.460115
271 fig 15.1 shrinkage effect lmer oproti individuálním modelům - lmer vidí věci dohromady a může si dovolit snížit rozptyl odhadů, i když dovolíme individuální intercept a slope random effects
272 poslední odstavec 15.9 random effect structure mohou občas obsahovat skoro zajímavější závěry než fixed effects, vyplatí se neignorovat, jak mnoho lidí činí
275 exploratorní analýza generuje hypotézy, confirmatory statistics je testuje. Není správné dělat obojí na stejných datech, obdobně jako u klasifikátorů rozdělujeme data na trénovací a testovací, jinak hrozí přetrénování a ztráta generalizace - příliš se soustředíme na VS a je vyšší riziko chyb 1. druhu. Stejnou chybou je “ladění” modelu, tj. přidávání či ubírání prediktorů, dokud nevyjde hezké p. Pokud se neúspěšné modely nereportují, tak je to klasický postup hledání chyby 1. druhu (dokud ji nenajdu, hledám dál - tak dlouho budu generovat rnorm se středem 0, až mi jednou vyjde, že to může mít střed 12… A to jediné pak opublikuji) a hladina významnosti přestává dávat smysl. Hypotézy i rovnice modelu mají být dány před pořízením dat. Rovnice a hladina významnosti určuje, jak mají data vypadat (kolik od čeho). V seriozním výzkumu (medicína) by se měly tyto informace předregistrovat, aby bylo transparentní, kolikrát se co povedlo a kolikrát ne. A pozor, skoro každý matematický výsledek dokáže vědec zdůvodnit. Jeden i druhý se zcela opačným závěrem. Takže ani na “teoretické předpoklady” nelze spoléhat.
276 odstavec When following this cookbook approach…
278 poslední odstavec - ve studii by mělo být jednoznačně řečeno, jestli je to exploratory nebo confirmatory. Obojí je velmi důležité, ale nelze to vágně míchat - dělat jedno a tvářit se, že je to v podstatě i to druhé.
198 logistická regrese, 199 fig 12.1
201 plogis() převod přímky (-oo -> -oo, 0 -> 0, +oo -> +oo) na logistickou s-křivku od 0 do 1 (-oo -> 0, 0 -> 0.5, +oo -> +1), viz 202 fig 12.4
202 log odds (logit) = log(p / (1-p) ), kde log je přirozený. Odds = šance, je to poměr pravděpodobnosti, že věc nastane, ku pravděpodobnosti, že nenastane. Padesát na padesát (p=0.5) => 1, log odds = 0. p=0.1 => 0.11 (1/9), log = -2.2. p=0.9 => 9, log = +2.2. Log odds je kontinuální škála od -oo do +oo, pro naše účely (odds je poměr) krásně symetrická. Přehledně: 0 odpovídá p=0.5, kladné odpovídá p>0.5, záporné p<0.5. Převod p na kontinuální lineární škálu umožní napasování úlohy na lm… Logistická funkce plogis() fig 12.4 je inverze k log odds - vstupem log odds, dostáváme p. A logit() je inverze k plogis() - převod p na log odds.
204 jasný příklad od začátku do konce (výstup binární kategorie, vstup kontinuální) včetně tvorby fig 12.1. Ke koeficientům a jejich SE, z a p se dostane přes tidy(model), viz 205
207 příklad (vstup je binární kategoriální proměnná)
210 příklad (vstup je diskrétní intervalová 9bodová škála). A predikce pravděpodobností včetně confint pro tuto škálu. Ovšem dělá to přes +-1.96*SE, neumí predict kromě SE vrátit rovnou i confint?
267 příklad na smíšený model glmer logistický včetně automaticky nalezeného optimizer
220 glm Poisson pro modelování počtů u procesů vznikajících dle Poissonova rozdělení (rozptyl je rovný střední hodnotě)
225 přidání exposure variable, která má vliv a je asi přímo úměrná modelované četnostní veličině
227 Negative binomial regression: pro počty neřídící se Poissonovým rozdělením (většinou: rozptyl je větší než očekávaný - overdispersion). Zde není nutná rovnost rozptylu se střední hodnotou.
228 test, zda je nutný glm.nb oproti Poisson