Viimases praktikumis tutvutasin Markdowni kasutamist ja paari uut paketti. Markdown võimaldab teha R’is teistele arusaadavaid dokumente. Kõik praktikumijuhendid (k.a. antud juhend) on koostatud Markdownis. Selle saab avada RStudios alamenüüst File (File - > New File -> R Markdown). Markdownist tehtuid dokumente saab salvestada enda arvutisse (pdf või doc formaadis) või “avaldada” netis (selleks on R’i meeskond loonud Rpubs.com lehekülje).
Kasutan selles konspektis kahte andmestikku.
1. R’is saab netis olevaid andmed otse enda töökeskkonnale salvestada:
datafilename = "http://personality-project.org/r/datasets/R.appendix2.data" # aadress
data.ex=read.table(datafilename,header=T) # loeb andmed tabelisse
head(data.ex) #näitab esimesi ridu
## Observation Gender Dosage Alertness
## 1 1 m a 8
## 2 2 m a 12
## 3 3 m a 13
## 4 4 m a 12
## 5 5 m b 6
## 6 6 m b 7
library(ez)
data(ANT)
head(ANT)
## subnum group block trial cue flank location direction
## 1 1 Treatment 1 1 None Neutral up left
## 2 1 Treatment 1 2 Center Neutral up left
## 3 1 Treatment 1 3 Double Neutral up left
## 4 1 Treatment 1 4 Spatial Neutral up left
## 5 1 Treatment 1 5 None Congruent up left
## 6 1 Treatment 1 6 Center Congruent up left
## rt error
## 1 398.6773 0
## 2 389.1822 0
## 3 333.2186 0
## 4 419.7640 0
## 5 446.4754 0
## 6 338.9766 0
# Kui tahame arvutada uue muutuja juba olemasoleva muutuja põhjal
ANT$uusmuutuja <- ANT$rt/100 #jagan rt veeru sajaga ja lisan väärtused andmestikku veergu "uusmuutuja"
# Kui tahame arvutamisel arvestada erinevate veergude väärtustega - nt uue kategoriseeriva tunnuse loomine. lisame ANT tabelisse uue veeru, mis põhine veergude "group" ja "cue" väärtustel.
#1. Lisan tabelisse ANT uue kategoriseeriva tunnuse nimega "kat"
ANT$kat <- NA # annan alguses selle veeru väärtusteks NA - nii on lihtsam sinna hiljem järk-järgult väärtusi juurde lisada
#2. Kontrollin oluliste veergude väärtusi ja täiendan vastavalt nendele väärtustele veergu "kat"
ANT[ANT$group =="Treatment" & ANT$cue == "Center", "kat"] <- 1
# sarnaselt peaks läbi tegema kõik kombinatsioonid
ANT[ANT$group =="Treatment" & ANT$cue == "Spatial", "kat"] <- 2
#jne
# PLYR pakett
library(plyr)
ddply(data.ex, .(Gender,Dosage), summarise, keskmine = mean(Alertness)) #arvutan keskmise tulemuse soo ja saadud doosi põhjal
## Gender Dosage keskmine
## 1 f a 15.75
## 2 f b 16.75
## 3 m a 11.25
## 4 m b 12.50
library(dplyr)
filter(data.ex, Gender == "m", Dosage == "a")
## Observation Gender Dosage Alertness
## 1 1 m a 8
## 2 2 m a 12
## 3 3 m a 13
## 4 4 m a 12
data.ex[data.ex$Gender == "m" & data.ex$Dosage == "a", ]
## Observation Gender Dosage Alertness
## 1 1 m a 8
## 2 2 m a 12
## 3 3 m a 13
## 4 4 m a 12
#veergude ümberpaigutamine:
arrange(data.ex, Observation, Dosage, Gender, Alertness)
## Observation Gender Dosage Alertness
## 1 1 m a 8
## 2 2 m a 12
## 3 3 m a 13
## 4 4 m a 12
## 5 5 m b 6
## 6 6 m b 7
## 7 7 m b 23
## 8 8 m b 14
## 9 9 f a 15
## 10 10 f a 12
## 11 11 f a 22
## 12 12 f a 14
## 13 13 f b 15
## 14 14 f b 12
## 15 15 f b 18
## 16 16 f b 22
#sorteerimine:
arrange(data.ex, desc(Alertness))
## Observation Gender Dosage Alertness
## 1 7 m b 23
## 2 11 f a 22
## 3 16 f b 22
## 4 15 f b 18
## 5 9 f a 15
## 6 13 f b 15
## 7 8 m b 14
## 8 12 f a 14
## 9 3 m a 13
## 10 2 m a 12
## 11 4 m a 12
## 12 10 f a 12
## 13 14 f b 12
## 14 1 m a 8
## 15 6 m b 7
## 16 5 m b 6
data.ex[order(-data.ex$Alertness), ]
## Observation Gender Dosage Alertness
## 7 7 m b 23
## 11 11 f a 22
## 16 16 f b 22
## 15 15 f b 18
## 9 9 f a 15
## 13 13 f b 15
## 8 8 m b 14
## 12 12 f a 14
## 3 3 m a 13
## 2 2 m a 12
## 4 4 m a 12
## 10 10 f a 12
## 14 14 f b 12
## 1 1 m a 8
## 6 6 m b 7
## 5 5 m b 6
#Veergude valimine:
select(data.ex, Gender, Alertness)
## Gender Alertness
## 1 m 8
## 2 m 12
## 3 m 13
## 4 m 12
## 5 m 6
## 6 m 7
## 7 m 23
## 8 m 14
## 9 f 15
## 10 f 12
## 11 f 22
## 12 f 14
## 13 f 15
## 14 f 12
## 15 f 18
## 16 f 22
# tapply'iga saab teha kategooriate kaupa arvutusi (sarnaselt ddply() funktsiooniga)
tapply(ANT$rt, ANT$cue,mean)
## None Center Double Spatial
## 451.3324 409.3842 402.9237 364.0087
#apply funktsioon
m <- matrix(data=cbind(rnorm(30, 0), rnorm(30, 2), rnorm(30, 5)), nrow=30, ncol=3)
head(m)# maatrikis esimesed 6 rida
## [,1] [,2] [,3]
## [1,] -0.9332115 2.2251936 6.273383
## [2,] -0.9479844 3.2282671 3.719649
## [3,] -1.4868620 1.7146093 7.184025
## [4,] 1.8064514 1.9910130 6.002359
## [5,] 1.1492593 3.6893281 5.068190
## [6,] 0.2493283 0.4307898 3.576568
apply(m, 2, mean) #veergude alusel
## [1] -0.02529204 1.86653050 4.92650229
apply(m, 1, mean) #ridade alusel
## [1] 2.521788 1.999977 2.470591 3.266608 3.302259 1.418895 2.520839
## [8] 2.283148 2.448580 1.508209 3.412485 1.440043 2.403446 2.957014
## [15] 1.467636 2.248873 2.268178 3.192155 1.592748 1.805745 1.888928
## [22] 2.327724 2.731798 2.172173 1.469959 2.265227 2.146056 2.571949
## [29] 1.970461 1.603916
# Enda funktsiooni kasutamine:
apply(m, 2, function(x) mean(x[x>0]))#ainult positiivsete väärtuste keskmine
## [1] 0.8962084 2.0146334 4.9265023
apply(m, 2, function(x) length(x[x<0])) #kui palju negatiivseid väärtusi on igas veerus
## [1] 16 2 0
ANOVA’t saab teha ka funktsiooniga aov().
Lühike ülevaade aov() funktsiooni kasutamisest - https://rpubs.com/kolnesm/anova
library(ez)
?ezANOVA
#Read in the ANT data (see ?ANT).
data(ANT)
?ANT
head(ANT)
## subnum group block trial cue flank location direction
## 1 1 Treatment 1 1 None Neutral up left
## 2 1 Treatment 1 2 Center Neutral up left
## 3 1 Treatment 1 3 Double Neutral up left
## 4 1 Treatment 1 4 Spatial Neutral up left
## 5 1 Treatment 1 5 None Congruent up left
## 6 1 Treatment 1 6 Center Congruent up left
## rt error
## 1 398.6773 0
## 2 389.1822 0
## 3 333.2186 0
## 4 419.7640 0
## 5 446.4754 0
## 6 338.9766 0
ezPrecis(ANT)
## Data frame dimensions: 5760 rows, 10 columns
## type missing values min max
## subnum factor 0 20 1 20
## group factor 0 2 Control Treatment
## block numeric 0 6 1 6
## trial numeric 0 48 1 48
## cue factor 0 4 None Spatial
## flank factor 0 3 Neutral Incongruent
## location factor 0 2 down up
## direction factor 0 2 left right
## rt numeric 0 5760 179.5972 657.6986
## error numeric 0 2 0 1
#Run an ANOVA on the mean correct RT data.
rt_anova = ezANOVA(
data = ANT[ANT$error==0,]
, dv = rt
, wid = subnum #katseisik
, within = .(cue,flank) #katseisikusisene muutuja
, between = group #katseisikute vaheline muutuja
)
#Show the ANOVA and assumption tests.
print(rt_anova)
## $ANOVA
## Effect DFn DFd F p p<.05 ges
## 2 group 1 18 18.430592 4.377562e-04 * 0.07633358
## 3 cue 3 54 516.605213 1.005518e-39 * 0.89662286
## 5 flank 2 36 1350.598810 1.386546e-34 * 0.92710583
## 4 group:cue 3 54 2.553236 6.497492e-02 0.04110445
## 6 group:flank 2 36 8.768499 7.900829e-04 * 0.07627434
## 7 cue:flank 6 108 5.193357 9.938494e-05 * 0.11436699
## 8 group:cue:flank 6 108 6.377225 9.012515e-06 * 0.13686958
##
## $`Mauchly's Test for Sphericity`
## Effect W p p<.05
## 3 cue 0.7828347 0.5366835
## 4 group:cue 0.7828347 0.5366835
## 5 flank 0.8812738 0.3415406
## 6 group:flank 0.8812738 0.3415406
## 7 cue:flank 0.1737053 0.1254796
## 8 group:cue:flank 0.1737053 0.1254796
##
## $`Sphericity Corrections`
## Effect GGe p[GG] p[GG]<.05 HFe p[HF]
## 3 cue 0.8652559 1.115029e-34 * 1.0239520 1.005518e-39
## 4 group:cue 0.8652559 7.472046e-02 1.0239520 6.497492e-02
## 5 flank 0.8938738 3.763312e-31 * 0.9858964 3.964046e-34
## 6 group:flank 0.8938738 1.297752e-03 * 0.9858964 8.438369e-04
## 7 cue:flank 0.6022111 1.546166e-03 * 0.7721473 4.745714e-04
## 8 group:cue:flank 0.6022111 3.424499e-04 * 0.7721473 7.170939e-05
## p[HF]<.05
## 3 *
## 4
## 5 *
## 6 *
## 7 *
## 8 *