Estimated simple regression equation
Seuraavassa esimerkissä käytetään R:n MASS kirjastosta löytyvää esimerkkidataa faithful. Tästä datasta lasketaan korrelaatio ja piirretään hajontakuvio sekä sovitettu lineaarinen suora.
# Lataa kirjasto
library(MASS)
# Näytä data taulukkona
View(faithful)
# Valitaan sarakkeet
eruptions = faithful$eruptions
waiting = faithful$waiting
# Korrelaatiokerroin
cor(eruptions, waiting)
## [1] 0.9008112
# Laske lineaarinen malli ja näytä suoran kertoimet
eruption.lm = lm(eruptions ~ waiting, data=faithful)
coeffs = coefficients(eruption.lm); coeffs
## (Intercept) waiting
## -1.87401599 0.07562795
# Piirrä hajontakuvio ja lisää parhaan suoran malli
plot(eruptions ~ waiting)
abline(coeffs, col="red")
# Nyt mallia voidaan käyttää tekemään arvioita
waiting = 80
duration = coeffs[1] + coeffs[2]*waiting
duration
## (Intercept)
## 4.17622
# Vaihtoehtoisesti voidaan käyttää predict-funktiota
newdata = data.frame(waiting=80) # wrap the parameter
predict(eruption.lm, newdata) # apply predict
## 1
## 4.17622
Korrelaatiokertoimen neliö \( r^ \) kuvaa selitysastetta eli kuinka monta prosenttia datan hajonnasta voidaan selittää mallin avulla.
eruption.lm = lm(eruptions ~ waiting, data=faithful)
summary(eruption.lm)$r.squared
## [1] 0.8114608
Significance Test for Linear Regression
Merkitsevyystaso eli riskitaso ilmoittaa, kuinka suuri riski on, että saatu ero tai riippuvuus johtuu sattumasta. Merkitsevyystasosta käytetään lyhenteitä \( p \) tai\( \alpha \) ja se mittaa tehdyn johtopäätöksen luotettavuutta (Heikkilä, s. 194).
Testatun eron tai riippuvuuden sanotaan olevan tilastollisesti
summary funktio palauttaa parametrien merkitsevyystason:
eruption.lm = lm(eruptions ~ waiting, data=faithful)
summary(eruption.lm)
##
## Call:
## lm(formula = eruptions ~ waiting, data = faithful)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.29917 -0.37689 0.03508 0.34909 1.19329
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.874016 0.160143 -11.70 <2e-16 ***
## waiting 0.075628 0.002219 34.09 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4965 on 270 degrees of freedom
## Multiple R-squared: 0.8115, Adjusted R-squared: 0.8108
## F-statistic: 1162 on 1 and 270 DF, p-value: < 2.2e-16
Chi-squared Test of Independence
Ristiintaulukointia käytettäessä halutaan usein selvittää, onko sarake- ja rivimuuttujan välillä riippuvuutta. Khiin neliön testiä voi käyttää kaikilla mitta-asteikoilla voidaan selvittää muuttujien välistä riippumattomuutta. Funktio laskee nollahypoteesin mukaiset odotetut frekvenssit ja näistä testisuureen, jonka arvo on sitä suurempi, mitä enemmän havainnot ja odotetut frekvenssit poikkeavat toisistaan. Testisuureen ja vapausasteen perusteella lasketaan lopuksi merkitsevyystaso, jkoka kertoo, kuinka suuri riski on, että riippuvuus johtuu sattumasta (Heikkilä, s. 212).
# Ladataan esimerkkikirjasto
library(MASS)
# Näytä taulukko
View(survey)
# Ristiintaulukoi kahden kategorisen muuttujan välillä
tbl = table(survey$Smoke, survey$Exer)
tbl
##
## Freq None Some
## Heavy 7 1 3
## Never 87 18 84
## Occas 12 3 4
## Regul 9 1 7
# Näytä tulokset myös pylväsdiagrammina
barplot(tbl,
ylim=c(0, 140),
col=rainbow(20),
legend.text = TRUE,
args.legend = list(x="top", horiz=TRUE))
# Testaa ovatko muuttujat riippumattomia
chisq.test(tbl)
## Warning in chisq.test(tbl): Chi-squared approximation may be incorrect
##
## Pearson's Chi-squared test
##
## data: tbl
## X-squared = 5.4885, df = 6, p-value = 0.4828
# Yhdistetään taulukossa kaksi saraketta
ctbl = cbind(tbl[,"Freq"], tbl[,"Some"] + tbl[,"None"])
# Nimeä sarakkeet uudelleen
colnames(ctbl) = c("Freq", "Some/None")
ctbl
## Freq Some/None
## Heavy 7 4
## Never 87 102
## Occas 12 7
## Regul 9 8
# Näytä myös tämä taulukko pylväsdiagrammina
barplot(ctbl, horiz = TRUE,
ylim = c(0, 3),
col = c("lightblue", "mistyrose",
"lightcyan", "lavender"),
legend.text = TRUE,
args.legend = list(y = 3, horiz=TRUE))
# Testaa uuden taulukon muuttujien riippumattomuus
chisq.test(ctbl)
##
## Pearson's Chi-squared test
##
## data: ctbl
## X-squared = 3.2328, df = 3, p-value = 0.3571