์ฐ์ ๋
- scatter plot
- 2๊ฐ์ ๋ณ์๋ก ๊ตฌ์ฑ๋ ์๋ฃ์ ๋ถํฌ๋ฅผ ์์๋ณด๋ ๊ทธ๋ํ
- ๊ด์ธก๊ฐ๋ค์ ๋ถํฌ๋ฅผ ํตํด 2๊ฐ์ ๋ณ์ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ํ์ ํ ์ ์๋ ๊ธฐ๋ฒ
wt <- mtcars$wt
mpg <- mtcars$mpg
plot(wt, mpg, # 2๊ฐ ๋ณ์(x์ถ, y์ถ)
main="์ค๋-์ฐ๋น ๊ทธ๋ํ", #์ ๋ชฉ
xlab="์ค๋", # x์ถ ๋ ์ด๋ธ
ylab="์ฐ๋น(MPG)", # y์ถ ๋ ์ด๋ธ
col="red", # point์ ์
pch=19) # point์ ์ข
๋ฅ๋ฅ
- pch๊ฐ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ ์ ๋ชจ์์ ์ ํํ ์ ์์
- ๊ทธ๋ํ๋ฅผ ๋ณด๋ฉด ์ค๋์ด ์ฆ๊ฐํ ์๋ก ์ฐ๋น๋ ๊ฐ์ํ๋ ๊ฒฝํฅ์ ํ์ธ ๊ฐ๋ฅ
plotํจ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์๋ ์์
plot(mtcars$wt, mtcars$mpg,
...)
plot(mtcars[,c('wt', 'mpg')].
...)
plot(mpg~wt, data=mtcars,
...)
vars <- c('mpg','disp','drat','wt') # ๋์ ๋ณ์
target <- mtcars[,vars]
head(target)
pairs(target, # ๋์ ๋ฐ์ดํฐํฐ
main="Multi Plots")
- ๋ค์ค ์ฐ์ ๋๋ ๋๊ฐ์ ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฅธ์ชฝ ์์ ์ฐ์ ๋๋ค๊ณผ ์ผ์ชฝ ์๋์ ์ฐ์ ๋๋ค์ด ๋์นญ์ ์ด๋ฃธ
- disp, wt ์ฐ์ ๋๋ ํ์ชฝ์ด ์ฆ๊ฐํ๋ฉด ๋ค๋ฅธ ์ชฝ๋ ์ฆ๊ฐ
- drat, wt ์ฐ์ ๋๋ ํ ์ชฝ์ด ์ฆ๊ฐํ๋ฉด ๋ค๋ฅธ ์ชฝ์ด ๊ฐ์
- ๋ ๋ณ์ ๊ฐ์ ๊ด๊ณ๋ฟ๋ง ์๋๋ผ ๊ทธ๋ฃน ๊ฐ์ ๊ด๊ณ๋ ํ์ ํ ์ ์์
iris.2 <- iris[,3:4] # ๋ฐ์ดํฐ ์ค๋น
point <- as.numeric(iris$Species) # ์ ์ ๋ชจ์
point
color <- c('red','green','blue')
plot(iris.2,
main="Iris plot",
pch=c(point),
col=color[point])
iris.2 <- iris[,3:4] # ๋ฐ์ดํฐ ์ค๋น
> point <- as.numeric(iris$Species) # ์ ์ ๋ชจ์
> point
[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
[31] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2
[61] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
[91] 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
[121] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
์ค๋ช
- ํ์ข ๋ณ๋ก ์ ์ ๋ชจ์์ ์ง์ ํ๊ธฐ ์ํด pch๋ฅผ ๋ฐ๋ก ์ง์
as.numeric(iris$Species)
๋ ํฉํฐ ํ์ ์ผ๋ก ๋์ด ์๋ iris$Species๋ฅผ ์ซ์๋ก ๋ฐ๊พธ๋ ์ญํ- ๊ฝ์์ ๊ธธ์ด๊ฐ ๊ธธ์๋ก ๊ฝ์์ ํญ๋ ์ปค์ง
- setosa ํ์ข ์ ๋ค๋ฅธ ๋ ํ์ข ์ ๋นํด ๊ฝ์์ ๊ธธ์ด์ ํญ์ด ํ์ฐํ ์์
- virginica ํ์ข ์ ๋ค๋ฅธ ๋ ํ์ข ์ ๋นํด ๊ฝ์์ ๊ธธ์ด์ ํญ์ด ์ ์ผ ํผ
- ์ถ์ธ์ ๋ชจ์์ด ์ ์ด๋ฉด ์ ํ์ ๊ด๊ณ์ ์๋ค๊ณ ํํ
- ์ ํ์ ๊ด๊ณ์๋ ๊ฐํ ์ ํ์ ๊ด๊ณ๊ฐ ์๊ณ ์ฝํ ์ ํ์ ๊ด๊ณ๊ฐ ์์
- ์ผ๋ง๋ ์ ํ์ฑ์ ๋ณด์ด๋์ง ์์น์์ผ๋ก ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ด ์๊ด๋ถ์
์๊ด๊ณ์
- -1 <= r <= 1
- r > 0: ์์ ์๊ด๊ด๊ณ (x๊ฐ ์ฆ๊ฐํ๋ฉด y๋ ์ฆ๊ฐ)
- r < 0: ์์ ์๊ด๊ด๊ณ (x๊ฐ ์ฆ๊ฐํ๋ฉด y๋ ๊ฐ์)
- r์ด 1์ด๋ -1์ ๊ฐ๊น์ธ์๋ก x, y์ ์๊ด์ฑ์ด ๋์
beers <- c(5,2,9,8,3,7,3,5,3,5)
bal <- c(0.1,0.03,0.19,0.12,0.04,0.0095,0.07,0.06,0.02,0.05)
tbl <- data.frame(beers,bal)
tbl
plot(bal~beers,data=tbl)
res <- lm(bal~beers,data=tbl) # ํ๊ท์ ๋์ถ
abline(res) # ํ๊ท์ ๊ทธ๋ฆฌ๊ธฐ
cor(beers,bal) # ์๊ด๊ณ์ ๊ณ์ฐ
> beers <- c(5,2,9,8,3,7,3,5,3,5)
> bal <- c(0.1,0.03,0.19,0.12,0.04,0.0095,0.07,0.06,0.02,0.05)
> tbl <- data.frame(beers,bal)
> tbl
beers bal
1 5 0.1000
2 2 0.0300
3 9 0.1900
4 8 0.1200
5 3 0.0400
6 7 0.0095
7 3 0.0700
8 5 0.0600
9 3 0.0200
10 5 0.0500
> plot(bal~beers,data=tbl)
> res <- lm(bal~beers,data=tbl) # ํ๊ท์ ๋์ถ
> abline(res) # ํ๊ท์ ๊ทธ๋ฆฌ๊ธฐ
> cor(beers,bal) # ์๊ด๊ณ์ ๊ณ์ฐ
[1] 0.6797025
์ค๋ช
- ์์ฃผ์ ๋๊ฐ ๋์ผ๋ฉด ํ์ค์์ฝ๋๋๋ ๋์์ง๋ ์ถ์ธ
- lm()์ ๋ ๋ณ์์ ์ ํ๊ด๊ณ๋ฅผ ๊ฐ์ฅ ์ ๋ํ๋ผ ์ ์๋ ์ ์ ์(ํ๊ท์)์ ์๋์ผ๋ก ์ฐพ๋ ์ญํ
- abline()์ ํ๊ท์์ผ๋ก ํ๊ท์ ์ ๊ทธ๋ฆฌ๋ ์ญํ
- cor()์ ์๊ด๊ณ์๋ฅผ ๊ตฌํ๋ ์ญํ
- ์๊ด๊ณ์๊ฐ์ ์ฝ 0.68๋ก ๋์ ์๊ด์ฑ์ ๋ณด์
- cor()์ ์ฌ๋ฌ ๊ฐ์ ๋ณ์๋ฅผ ์ ๋ ฅํ๋ฉด ์ฌ๋ฌ ๊ฐ์ ๋ณ์ ์ฌ์ด์ ์๊ด๊ณ์๊ฐ์ ํ ์ด๋ธ ํํ๋ก ๋ํ๋
cor(iris[,1:4])
> cor(iris[,1:4])
Sepal.Length Sepal.Width Petal.Length Petal.Width
Sepal.Length 1.0000000 -0.1175698 0.8717538 0.8179411
Sepal.Width -0.1175698 1.0000000 -0.4284401 -0.3661259
Petal.Length 0.8717538 -0.4284401 1.0000000 0.9628654
Petal.Width 0.8179411 -0.3661259 0.9628654 1.0000000
์๊ณ์ด ์๋ฃ
- ์๊ฐ์ ๋ณํ์ ๋ฐ๋ผ ์๋ฃ๋ฅผ ์์งํ ๊ฒฝ์ฐ
month <- 1:12
late <- c(5,8,7,9,4,6,12,13,8,6,6,4)
plot(month, # x data
late, # y data
main="์ง๊ฐ์ ํต๊ณ",
type="l", # ๊ทธ๋ํ์ ์ข
๋ฅ ์ ํ
lty=1, # ์ ์ ์ข
๋ฅ ์ ํ
lwd=1, # ์ ์ ๊ตต๊ธฐ๊ธฐ
xlab="Month",
ylab="Late cnt")
์ค๋ช
- type์ ๋ค๋ฅด๊ฒํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ด
- lty๋ 1~6๊น์ง๋ก ์ง์ ํ ์ ์์
- ์ง๊ฐ์ ์๊ฐ 5์์ ๊ธ๊ฐํ๋ค๊ฐ 7, 8์์ ๊ธ์ฆํ๋ ๊ฒ์ ์ ์ ์์
month <- 1:12
late1 <- c(5,8,7,9,4,6,12,13,8,6,6,4)
late2 <- c(4,6,5,8,7,8,10,11,6,5,7,3)
plot(month,
late1,
main="Late Students",
type="b",
lty=1,
col="red",
xlab="Month",
ylab="Late cnt",
ylim=c(1,15)) # y์ถ ๊ฐ์ (ํํ, ์ํ)
lines(month,
late2,
type="b",
col="blue")
์ค๋ช
- lines()๋ plot()์ผ๋ก ์์ฑํ ๊ทธ๋ํ ์์ ์ ์ ๊ฒน์ณ์ ๊ทธ๋ฆฌ๋ ์ญํ
- ๋ฏธ๊ตญ ๋ณด์คํด ์ง์ญ์ ์ฃผํ ๊ฐ๊ฒฉ ์ ๋ณด์ ์ฃผํ ๊ฐ๊ฒฉ์ ์ํฅ์ ๋ฏธ์น๋ ์ฌ๋ฌ ์์๋ค์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์
- ์ด 14๊ฐ์ ๋ณ์๋ก ๊ตฌ์ฑ
- ์ฌ๊ธฐ์๋ 5๊ฐ๋ง ์ฌ์ฉ
- crim: ์ง์ญ์ 1์ธ๋น ๋ฒ์ฃ์จ
- rm: ์ฃผํ 1๊ฐ๊ตฌ๋น ๋ฐฉ์ ๊ฐ์
- dis: ๋ณด์คํด์ 5๊ฐ ์ง์ ์ผํฐ๊น์ง์ ๊ฑฐ๋ฆฌ
- tax: ์ฌ์ฐ์ธ์จ
- medv: ์ฃผํ ๊ฐ๊ฒฉ
library(mlbench)
data("BostonHousing")
myds <- BostonHousing[,c("crim","rm","dis","tax","medv")]
- myds๊ฐ ์์ผ๋ก ํ์ํ ๋ฐ์ดํฐ์
- grp๋ ์ฃผํ ๊ฐ๊ฒฉ์ ์(H), ์ค(M), ํ(L)๋ก ๋ถ๋ฅํ ๊ฒ
- 25.0 ์ด์์ด๋ฉด ์, 17.0 ์ดํ์ด๋ฉด ํ, ๋๋จธ์ง๋ ์ค์ผ๋ก ๋ถ๋ฅ
grp <- c()
for (i in 1:nrow(myds)) { # medv ๊ฐ์ ๋ฐ๋ผ ๋ถ๋ฅ
if (myds$medv[i] >= 25.0) {
grp[i] <- "H"
} else if (myds$medv[i] <= 17.0) {
grp[i] <- "L"
} else {
grp[i] <- "M"
}
}
grp <- factor(grp) # ๋ฌธ์ ๋ฒกํฐ๋ฅผ ํฉํฐ ํ์
์ผ๋ก ๋ณ๊ฒฝ
grp <- factor(grp,levels=c("H","M","L")) # ๋ ๋ฒจ์ ์์๋ฅผ H,L,M์์ H,M,L๋ก ๋ณ๊ฒฝ
myds <- data.frame(myds, grp) # myds์ grp ์ด ์ถ๊ฐ
- myds๋ ๋ฐ์ดํฐํ๋ ์์ด๊ณ , 506๊ฐ์ ์ฃผํ์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ผ๋ฉฐ 6๊ฐ์ ๋ณ์๋ก ๊ตฌ์ฑ
- grp๋ง ํฉํฐ ํ์ ์ด๊ณ ๋๋จธ์ง๋ ์ซ์ ํ์ ๋ณ์
- table์ ํตํด H๊ฐ 132์ฑ, M์ด 247์ฑ, L์ด 127์ฑ ์์์ ์ ์ ์์
str(myds)
head(myds)
table(myds$grp) # ์ฃผํ ๊ฐ๊ฒฉ ๊ทธ๋ฃน๋ณ ๋ถํฌํฌ
> str(myds)
'data.frame': 506 obs. of 6 variables:
$ crim: num 0.00632 0.02731 0.02729 0.03237 0.06905 ...
$ rm : num 6.58 6.42 7.18 7 7.15 ...
$ dis : num 4.09 4.97 4.97 6.06 6.06 ...
$ tax : num 296 242 242 222 222 222 311 311 311 311 ...
$ medv: num 24 21.6 34.7 33.4 36.2 28.7 22.9 27.1 16.5 18.9 ...
$ grp : Factor w/ 3 levels "H","M","L": 2 2 1 1 1 1 2 1 3 2 ...
> head(myds)
crim rm dis tax medv grp
1 0.00632 6.575 4.0900 296 24.0 M
2 0.02731 6.421 4.9671 242 21.6 M
3 0.02729 7.185 4.9671 242 34.7 H
4 0.03237 6.998 6.0622 222 33.4 H
5 0.06905 7.147 6.0622 222 36.2 H
6 0.02985 6.430 6.0622 222 28.7 H
> table(myds$grp) # ์ฃผํ ๊ฐ๊ฒฉ ๊ทธ๋ฃน๋ณ ๋ถํฌํฌ
H M L
132 247 127
- ๊ทธ๋ฃน ์ ๋ณด์ธ grp๋ ์ ์ธ
- rm, mdev๋ง ์ ๊ท๋ถํฌ์ ๊ฐ๊น๊ณ , crim, dis๋ ๊ด์ธก๊ฐ๋ค์ด ํ์ชฝ์ผ๋ก ์ ๋ ค์ ๋ถํฌ
- tax๋ ์ค๊ฐ์ ๊ด์ธก๊ฐ์ด ์๋ ๋น ๊ตฌ๊ฐ์ด ์กด์ฌํ๋ ํน์ง์ ๋ณด์
- ๊ด์ธก๊ฐ๋ค์ ๋ถํฌ๊ฐ ์ ๊ท๋ถํฌ๊ฐ ์๋๋ฉด ๋ถํฌ์ ๋ํ ํด์์ด ํ์
par(mfrow=c(2,3))
for(i in 1:5) {
hist(myds[,i], main=colnames(myds)[i], col="yellow")
}
par(mfrow=c(1,1))
- crim์ ๊ด์ธก๊ฐ๋ค์ด ์ข์ ์ง์ญ์ ๋ฐ์ง๋์ด ์๋ ๊ฒ(๊ด์ธก๊ฐ๋ค์ ํธ์ฐจ๊ฐ ์์)์ ํ์ธ ๊ฐ๋ฅ
- tax๋ ๋๊ฒ ํผ์ ธ ์๋ ๊ฒ(๊ด์ธก๊ฐ๋ค์ ํธ์ฐจ๊ฐ ๋น๊ต์ ํผ)์ ํ์ธ ๊ฐ๋ฅ
par(mfrow=c(2,3))
for(i in 1:5) {
boxplot(myds[,i], main=colnames(myds)[i])
}
par(mfrow=c(1,1))
- ์ฃผํ ๊ฐ๊ฒฉ์ด ๋์ ์ง์ญ์ด๋ ์ค๊ฐ ์ง์ญ์ ๋ฒ์ฃ์จ์ ๋ฎ๊ณ , ์ฃผํ ๊ฐ๊ฒฉ์ด ๋ฎ์ ์ง์ญ์ ๋ฒ์ฃ์จ์ด ๋๊ฒ ๋ํ๋จ
- ์ฃผํ ๊ฐ๊ฒฉ์ด ๋์ผ๋ฉด ๋ฐฉ์ ๊ฐ์๋ ๋ง์
- ์ค๊ฐ ๊ทธ๋ฃน์ ๋ฐฉ์ ๊ฐ์๊ฐ 5.2~6.8 ์ฌ์ด๋ก ๋น๊ต์ ๊ท ์ผ
- ํ์ ๊ทธ๋ฃน์ ๋ฐฉ ๊ฐ์๋ 4.5~7.2 ์ฌ์ด๋ก ๋๊ฒ ํผ์ ธ ์์
- ํ์ ๊ทธ๋ฃน์ ์ฌ์ฐ์ธ์จ์ ๋๊ฒ ๋ถํฌํ๊ณ ์์
- ์ฌ์ฐ์ธ์จ์ ์์์์ ํ์๋ก ๊ฐ ์๋ก ๋์์ง
boxplot(myds$crim~myds$grp, main="1์ธ๋น ๋ฒ์ฃ์จ")
boxplot(myds$rm~myds$grp,main="๋ฐฉ์ ๊ฐ์")
par(mfrow=c(1,3))
boxplot(myds$dis~myds$grp,main="dis")
boxplot(myds$tax~myds$grp,main="tax")
boxplot(myds$medv~myds$grp,main="medv")
par(mfrow=c(1,1))
- medv์ rm์ ์์ ์๊ด์ฑ์ด ์๋ ๊ฒ์ผ๋ก ๋ณด์
- crim์ medv์ ์์ ์๊ด์ฑ์ด ์๋ ๊ฒ์ผ๋ก ๋ณด์
pairs(myds[,-6])
- (crim-medv), (rm-medv), (dis-medv), (tax-medv) ์ฐ์ ๋์์ ๊ทธ๋ฃน๋ณ๋ก ๋ถํฌ ์์น๊ฐ ๋๋ ทํ๊ฒ ๊ตฌ๋ถ๋๋ ๊ฒ์ ์ ์ ์์
- ์ค๊ฐ ๊ทธ๋ฃน์ ์์ ๊ทธ๋ฃน๊ณผ ํ์ ๊ทธ๋ฃน์ ๋นํด ์ฃผํ ๊ฐ๊ฒฉ์ ๋ณ๋ํญ์ด ์ข์
point <- as.integer(myds$grp)
color <- c("red","green","blue")
pairs(myds[,-6],pch=point,col=color[point])
- medv ๊ธฐ์ค์ผ๋ก ๋ณผ ๋ ์๊ด๊ณ์๊ฐ ๊ฐ์ฅ ๋์ ๊ฒ์ rm
- ์ฐ์ ๋ ์์ผ๋ก ์์ ์๊ด์ฑ์ด ๋์ ๊ฒ์ผ๋ก ๋ณด์๋ crim์ ์ค์ ๋ก๋ ๊ทธ๋ ์ง ์์ ๊ฒ์ ์ ์ ์์
cor(myds[,-6])
> cor(myds[,-6])
crim rm dis tax medv
crim 1.0000000 -0.2192467 -0.3796701 0.5827643 -0.3883046
rm -0.2192467 1.0000000 0.2052462 -0.2920478 0.6953599
dis -0.3796701 0.2052462 1.0000000 -0.5344316 0.2499287
tax 0.5827643 -0.2920478 -0.5344316 1.0000000 -0.4685359
medv -0.3883046 0.6953599 0.2499287 -0.4685359 1.0000000