R bevezető

  • RStudio-t használunk, ami egy grafikus felület az R-hez
  • Az egyszerű dolgokat a konzolban (Console) végezzük.
  • A konzol számológépként is használható:
In [114]:
# számológép:
1+10+100
1^2+2^2+3^2
3*(3+1)*(2*3+1)/6
111
14
14
  • matematikailag értelmes kifejezéseket adhatunk meg, melyek kiértékelődnek
  • a számolások eredményeihez neveket rendelhetünk -> változó
In [122]:
# skalár változók:
a=3
b=4
c=a^2+b^2
c==5^2
TRUE
  • a c() szerkezettel vektorokat hozhatunk létre
  • a vektorokkal elemenkénti műveletek egyszerre hajthatók végre
In [138]:
# vektorok
v=c(a,b,c)
v
w=c(a,b,sqrt(c))
w
w2=w^2
w2
# logikai eredményt ad, összehasonlító operátor
w2[3]==w2[1]+w2[2]
  1. 3
  2. 4
  3. 25
  1. 3
  2. 4
  3. 5
  1. 9
  2. 16
  3. 25
TRUE
  • néhány fontos konstans (pl.pi) előre definiált
  • a beépített függvények nem csak skalárokra használhatók
In [140]:
# beépített fv-ek, konstansok
pi
sin(pi)
cos(pi*w)
exp(c(-1,0,1))
3.14159265358979
1.22464679914735e-16
  1. -1
  2. 1
  3. -1
  1. 0.367879441171442
  2. 1
  3. 2.71828182845905
  • szabályos számsorozatokat generálhatunk a seq-el és a : szerkezettel
  • a seq-nél a lépeköz is megadható
In [ ]:
# vektorok létrehozása
v=seq(1,10)
v2=v^2
sum(v2)
w=1:10
w2=w^2
sum(w2)
x=seq(0,1,by=0.1)
x
  • közelítsük 01x2dx-et 10,100,1000,10000-részre osztva az intervallumot.
  • ciklus megadása
In [147]:
for(h in c(0.1,0.01,0.001,0.0001)){
    v=seq(0,1,by=h)
    print(sum(h*v^2))
}
[1] 0.385
[1] 0.33835
[1] 0.3338335
[1] 0.3333833
  • sum, mean,sd
  • elemek elérése, kiválasztása
  • mean az átlag:
    • mean(X)=X¯=k=1nXkn
  • sd a korrigált tapasztalati szórás:
    • sd(X)=k=1n(XkX¯)2n1
In [151]:
X=seq(10,1,by=-1)
mean(X)
sd(X)
# az indexelés 1-bázisú
X[1]
X[3:5]
X>5
X[X>5]
# sd kiszámolása kézzel (csak példa, nem javasolt így számolni):
sqrt(sum((X-mean(X))^2)/9)
5.5
3.02765035409749
10
  1. 8
  2. 7
  3. 6
  1. TRUE
  2. TRUE
  3. TRUE
  4. TRUE
  5. TRUE
  6. FALSE
  7. FALSE
  8. FALSE
  9. FALSE
  10. FALSE
  1. 10
  2. 9
  3. 8
  4. 7
  5. 6
3.02765035409749
  • quantile, sokféleképpen számolható
    • adott p[0,1]-hez keresünk egy qR-t, melyre
      P(Xq)p és P(Xq)1p
  • help -> 7-es az alapértelmezett mód
  • kvantilis a wikin
  • summary
In [163]:
quantile(X)
# help(quantile)
summary(X,type=8)
0%
1
25%
3.25
50%
5.5
75%
7.75
100%
10
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   1.00    3.25    5.50    5.50    7.75   10.00 
  • a plot-tal rajzolhatunk egyedi pontokat
  • a lines összeköti a megadott pontokat, így folytonosnak látszik
In [167]:
x=seq(0,2*pi,by=0.3)
plot(x,sin(x))
x2=seq(0,2*pi,by=0.05)
lines(x2,sin(x2))
  • véletlenszámok:
    • rnorm N(0,1)
    • runif U(0,1)
  • hist, a sűrűségfv. analógja
In [178]:
# alapértelmezetten gyakoriság magasságú téglalapokat rajzol
hist(rnorm(1000))
hist(rnorm(1000),freq=F)
hist(runif(1000),freq=F)
  • tapasztalati eloszlás-függvény
  • ecdf
  • maga az ecdf nem rajzol, visszadja a függvényt
In [177]:
plot(ecdf(rnorm(100)))
plot(ecdf(runif(100)))
  • dobozábra - boxplot
  • a range paraméter szabályozza hogy mi számítson kilógó adatnak -> range*IQR-től nagyobb távolság az alsó és felső kvartilistől.
  • IQR=Q3-Q1 interkvartilis rang (távolság)
  • boxplot a wikin
In [185]:
x=c(-10, -3,1,2,3,4,5,7, 20)
boxplot(x)
boxplot(x,range=0.5)
  • illeszkedés grafikus ellenőrzése - qqplot
  • qqplot a wikin
  • qqnorm normalitás
In [188]:
qqnorm(runif(1000))
qqnorm(rnorm(1000))
qqnorm(rexp(1000))
  • táblázatok, két-dimenziós adathalmazok
    • matrix
    • data.frame - speciális attribútumokkal feldíszíthető táblázatok
In [205]:
# vektor átszabása, alapból oszlopfolytonosan
A=matrix(c(1,2,3,4),nrow = 2)
A=matrix(c(1,2,3,4),nrow = 2, byrow = T)
A
B=1:16
dim(B)<-c(4,4)
B
A matrix: 2 × 2 of type dbl
12
34
A matrix: 4 × 4 of type int
15 913
261014
371115
481216
In [247]:
# dataframe
nevek=c('Alice','Bob',"Cecil","D")
korok=c(12,13.5,11,12)
sulyok=c(33,33.5,33,34)

A=data.frame(nev=nevek,kor=korok,suly=sulyok)
A
A[,"kor"]
A[,"nev"]
rownames(A)=nevek
A["Cecil",]
all(A$"kor"==A[,"kor"]) # minden elem TRUE?
A data.frame: 4 × 3
nevkorsuly
<fct><dbl><dbl>
Alice12.033.0
Bob 13.533.5
Cecil11.033.0
D 12.034.0
  1. 12
  2. 13.5
  3. 11
  4. 12
  1. Alice
  2. Bob
  3. Cecil
  4. D
Levels:
  1. 'Alice'
  2. 'Bob'
  3. 'Cecil'
  4. 'D'
A data.frame: 1 × 3
nevkorsuly
<fct><dbl><dbl>
CecilCecil1133
TRUE
  • "külső" adatok olvasása
  • MASS leírás a CRAN-on
In [236]:
library(MASS)
adat=abbey # egy vektor nikkeltartalom mérési adatok
adat
  1. 5.2
  2. 6.5
  3. 6.9
  4. 7
  5. 7
  6. 7
  7. 7.4
  8. 8
  9. 8
  10. 8
  11. 8
  12. 8.5
  13. 9
  14. 9
  15. 10
  16. 11
  17. 11
  18. 12
  19. 12
  20. 13.7
  21. 14
  22. 14
  23. 14
  24. 16
  25. 17
  26. 17
  27. 18
  28. 24
  29. 28
  30. 34
  31. 125
In [253]:
summary(adat)
s=sd(adat)
mu=mean(adat)
boxplot(adat)
hist(adat,freq = F)
qqnorm(adat)
qqnorm((adat-mu)/s)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   5.20    8.00   11.00   16.01   15.00  125.00