Graafikutele joonte lisamine - Tüüpolukordi


Paar sagedamini esinevat olukorda, kus tarvis võib minna täiendava joone lisamist olemasolevale graafikule:

Histogrammile teoreetilise jaotuse tihedusfunktsiooni lisamine

(Näiteks histogrammile normaaljaotuse tihedusfunktsiooni lisamine)

x=rnorm(60)

hist(x, probability=TRUE, 
	xlim=c(-4,4), ylim=c(0,0.4),
	main="Tihedusfunktsioon ja histogramm", 
	ylab="tihedus",
	col="gold", border="darkgoldenrod2")

# Hindame keskmise ja standardhälbe abil normaaljaotuse parameetrid
xkeskmine=mean(x)
xshalve=sd(x)

# Kasutame normaaljaotuse tihedusfunktsiooni dnorm abi:
xabi=seq(-4,4,0.1)
y=dnorm(xabi, mean=xkeskmine, sd=xshalve)

# Lisame tihedusfunktsiooni graafiku:
lines(xabi,y, lwd=3, col="darkgoldenrod3")

NB! märka probability=TRUE lisaparameetrit histogrammi joonistamisel!
   
 
 
 

Tihedusfunktsiooni hinnang ja histogramm



x=runif(60)

hist(x, probability=TRUE,
	xlim=c(-0.5,1.5), ylim=c(0,1.5),
	main="Hinnatud tihedusfunktsioon", 
	ylab="tihedus",
	col="gold", border="darkgoldenrod2")

lines(density(x), lwd=3, col="darkgoldenrod3")

   
 
 
 

Regressioonijoon andmete usaldatavuse piirkonnas teistsugune kui mujal


# Algandmete genereerimine
x=runif(60)*2
y=2+3*x+rnorm(60)

plot(x,y, col="gray80", xlim=c(-1,3), ylim=c(-5,15))

m1=lm(y~x)
xuus=seq(0,2,0.01)
yuus=predict(m1, data.frame(x=xuus))
lines(xuus, yuus, lwd=2)

xuus=seq(-3,5,0.01)
yuus=predict(m1, data.frame(x=xuus))
lines(xuus, yuus, lty=2, lwd=2)

   
 
 
 

Siluja lisamine hajuvusgraafikule


# Algandmete genereerimine
x=runif(200)*2
y=2+3*x+4*sin(2*x)+1.5*sqrt(x)+rnorm(200)

plot(x,y, col="gray75", xlim=c(0,2), ylim=c(0,15), 
	main="Siluja")

# Esimene siluja
lines(lowess(x,y))

# Veidi tundlikum joon (mida väiksem f-väärtus, 
# 			seda hüplikum on siluja joon)
lines(lowess(x,y, f=0.25), lty=2)

# Teisel tööpõhimõttel töötav siluja
lines(ksmooth(x,y), col="orange")

NB! Silumine on keeruline kunst, seda täielikult vallata on võimatu! R-is on ka palju teisi võimalusi juhuslikkust seose kirjeldusest "välja siluda"! Kaalu näiteks ka funktsioone lm, glm, loess.smooth, ksmooth, smooth.spline, ... .
   
 
 
 

Tõenäosuspaberile (QQ-plot) abijoone lisamine


# Algandmete genereerimine
x=rnorm(100)

# Tõenäosuspaberi joonistamine:
# normaaljaotuse korral peaksid punktid
# asetsema enam-vähem joonise diagonaali 
# läbival joonel
qqnorm(x, xlab="teoreetilised kvantiilid", 
    ylab="valimikvantiilid", 
    main="Tõenäosuspaber (QQ-plot)")

# lisame joonise diagonaali läbiva abijoone:
qqline(x, lwd=2)

   
NB! Kui soovitakse kontrollida, kas vaatlused võiksid olla pärit mõnest muust teoreetilisest jaotusest (näiteks t-jaotusest, df=2), saab graafiku joonistamisel kasutada järgmist programmi:

x=rnorm(100)
qqplot(qt(ppoints(length(x)), df=2), x)
qqline(x)

Teiste jaotuste puhul võib kasutada vastavaid kvantiilifunktsioone: qt, qchisq, qnorm, qunif, .... .

Kui soovitakse võrrelda, kas kahe valimi jaotus võiks olla sama, saab seda teha näiteks järgmise programmi abil:

x1=rnorm(100)
x2=rt(120, df=3)

qqplot(x1, x2)
qqline(x1)



Programm, mis genereeris pildid siia leheküljele.