T ๋ถํฌ?
ํ๋ณธ์๊ฐ ์์ ๊ฒฝ์ฐ(30๊ฐ ๋ฏธ๋ง) ์ ๊ท๋ถํฌ ๋์ ์ฌ์ฉํ๋ ํ๋ฅ ๋ถํฌ
์ ๊ท๋ถํฌ ๊ฐ์ : ํ๋ณธ ํฌ๊ธฐ๊ฐ ํด ์๋ก ์ ๊ท๋ถํฌ ๋ชจ์์ด ๋น์ท
* ์์ ๋(df)๊ฐ ํด ์๋ก ์ ๊ท๋ถํฌ์ ๋น์ทํด์ง
* Z๋ถํฌ : ํ๋ณธ์ ํฌ๊ธฐ๊ฐ ์ถฉ๋ถํ ํฐ(n > 30)๊ฒฝ์ฐ, ์ ๊ท๋ถํฌ ๋ชจ์์ ๊ฐ๋ ํ๋ฅ ๋ถํฌ
T ๊ฒ์
๋ชจ์ง๋จ์ด ์ ๊ท๋ถํฌ์ด๊ณ , ๋ชจ์ง๋จ์ ๋ถ์ฐ(σ2)์ด ์๋ ค์ง์ง ์์ ๊ฒฝ์ฐ
ํ๋ณธ์ ํ์คํธ์ฐจ ์ด์ฉํ์ฌ ๋ชจํ๊ท ์ถ์ /๊ฒ์ (T๋ถํฌํ ์ด์ฉ)
๊ธฐ๋ณธ ๊ฐ์ : ์ ๊ท์ฑ, ๋ฑ๋ถ์ฐ์ฑ(๋ชจ์ or ๋น๋ชจ์ ๋ฐฉ๋ฒ ๊ฒฐ์ )
๋ฐฉ๋ฒ : ๋จ์ผํ๋ณธ t๊ฒ์ , ๋ ๋ฆฝํ๋ณธ t๊ฒ์ , ๋์ํ๋ณธ t๊ฒ์
๋ชจ์๊ฒ์ (์ ๊ท๋ถํฌ) | ๊ธฐ๋ณธ๊ฐ์ | ๋น๋ชจ์๊ฒ์ (๋น์ ๊ท๋ถํฌ) |
๋จ์ผํ๋ณธ t๊ฒ์ | ์ ๊ท์ฑ | Wilcoxon signed rank test |
๋ ๋ฆฝํ๋ณธ t๊ฒ์ | ๋ฑ๋ถ์ฐ์ฑ | Wilcoxon rank sum test, Mann-Whitney U-test |
๋์ํ๋ณธ t๊ฒ์ | ์ ๊ท์ฑ | Wilcoxon signed rank test |
* ๋น๋ชจ์๊ฒ์ : ๊ธฐ๋ณธ ๊ฐ์ ์ ๋ง์กฑํ์ง ๋ชปํ๊ฑฐ๋ ์๋ฃ๊ฐ ์ ์ ๊ฒฝ์ฐ ์ฌ์ฉ๋๋ ๊ฒ์ ๋ฐฉ๋ฒ.
* R์์๋ ๋ชจ๋ wilcox.test() ํจ์ ์ด์ฉ
T๊ฒ์ ํต๊ณ๋
T๋ถํฌํ
* ๋จ์ธก๊ฒ์ : tํต๊ณ๋(์ ๋๊ฐ) > ์๊ณ๊ฐ : ๊ท๋ฌด๊ฐ์ค ๊ธฐ๊ฐ
์์ธก๊ฒ์ ?
์์ธก๊ฒ์ ์๊ณ๊ฐ : = ๐ถ/2 = 0.025(2.5%) , df = n – 1 ์ด์ฉ(์ ๊ท๋ถํฌ์ธ ๊ฒฝ์ฐ)
์์ธก๊ฒ์ ์์ ๊ฒ์ ํต๊ณ๋ t์ ์ ๋๊ฐ์ด ์๊ณ๊ฐ๋ณด๋ค ํฌ๋ฉด ๊ท๋ฌด๊ฐ์ค ๊ธฐ๊ฐ
ex.ํ๋ณธ ์ n = 10, ์ ์์์ค(α) = 0.05 ์ผ ๋ ์์ธก๊ฒ์ ์ ์๊ณ๊ฐ๊ณผ ๊ฐ์ค๊ฒ์ ์?
๊ฒ์ ํต๊ณ๋ : t = 2.4154, df = 9 (T๋ถํฌํ : ์๊ณ๊ฐ =2.262)
* ๊ฐ์ค๊ฒ์ : t๊ฐ(2.4154) > ์๊ณ๊ฐ(2.262) : ๊ท๋ฌด๊ฐ์ค ๊ธฐ๊ฐ
02. ๋จ์ผํ๋ณธ T ๊ฒ์ ?
๋ชจ์ง๋จ์ ๋ชจํ๊ท (๐๐)๊ณผ ํ๋ณธ์ ํ๊ท ๊ฐ์ ์ฐจ์ด๊ฐ ์๋์ง๋ฅผ ๊ฒ์
๊ธฐ๋ณธ ๊ฐ์ : ์ ๊ท๋ถํฌ(์ ๊ท์ฑ ๊ฒ์ )
๊ธฐ๋ณธ ๊ฐ์ค : ๋ชจํ๊ท ๊ณผ ์ฐจ์ด๊ฐ ์๋ค
๋จ์ผํ๋ณธ T ๊ฒ์ ์ ๋ชฉ์
ํ๋ณธ์ ํฌ๊ธฐ๊ฐ 30๊ฐ ๋ฏธ๋ง์ด๊ณ , ๋ชจํ๊ท ์ ์๊ณ ์์ง๋ง, ๋ชจ๋ถ์ฐ์ ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ ํ๋ณธ์ผ๋ก ๋ชจํ๊ท ์ ๊ฒ์ ํ๋ ์ํด์ ์ฌ์ฉ๋๋ค. ํ๋ณธ ์๊ฐ 30๊ฐ ์ด์์ด๋ฉด ์ค์ฌ๊ทนํ์ ๋ฆฌ์ ์ํด์ ์ ๊ท์ฑ์ ๋ง์กฑํ์ง๋ง, 30๊ฐ ๋ฏธ๋ง์ด๋ฉด ํ๋ณธ์ด ์ ๊ท์ฑ์ ๋ง์กฑํ๋์ง ํ์ธํ๊ธฐ ์ํด์ ์ ๊ท์ฑ์ ๊ฒ์ ํ๋ค. ์ ๊ท์ฑ์ ๋ง์กฑํ๋ฉด ๋ชจ์ ๊ฒ์ ๋ง์กฑํ์ง ์์ผ๋ฉด ๋น๋ชจ์ ๊ฒ์ ์ ํ๋ค
๋จ์ผํ๋ณธ T๊ฒ์ ๋ถ์์ ์ฐจ
์ค์ตํ์ผ ๊ฐ์ ธ์ค๊ธฐ > ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ > ๊ธฐ์ ํต๊ณ๋(ํ๊ท ) > ์ ๊ท๋ถํฌ (๊ธฐ๋ณธ๊ฐ์ : ์ ๊ท์ฑ ๊ฒ์ )
> YES : t.test() / NO : wilcox.text() > ๊ฒ์ ํต๊ณ๋ ๋ถ์
๋จ์ผํ๋ณธ T๊ฒ์ ๊ฐ์ค
<์ฐ๊ตฌ๊ฐ์ค>
์ฐ๊ตฌ๊ฐ์ค(H1) : ๊ตญ๋ด์์ ์์ฐ๋ ๋ ธํธ๋ถ๊ณผ Aํ์ฌ์์ ์์ฐ๋ ๋ ธํธ๋ถ์ ํ๊ท ์ฌ์ฉ ์๊ฐ์ ์ฐจ์ด๊ฐ ์๋ค.
๊ท๋ฌด๊ฐ์ค(H0) : ๊ตญ๋ด์์ ์์ฐ๋ ๋ ธํธ๋ถ๊ณผ Aํ์ฌ์์ ์์ฐ๋ ๋ ธํธ๋ถ์ ํ๊ท ์ฌ์ฉ ์๊ฐ์ ์ฐจ์ด๊ฐ ์๋ค.
<์ฐ๊ตฌํ๊ฒฝ> ๊ตญ๋ด์์ ์์ฐ๋ ๋ ธํธ๋ถ ํ๊ท ์ฌ์ฉ ์๊ฐ์ด 5.2์๊ฐ์ผ๋ก ํ์ ๋ ์ํฉ์์ Aํ์ฌ์์ ์์ฐ๋ ๋ ธํธ๋ถ ํ๊ท ์ฌ์ฉ์๊ฐ๊ณผ ์ฐจ์ด๊ฐ ์๋์ง๋ฅผ ๊ฒ์ ํ๊ธฐ ์ํด์ Aํ์ฌ ๋ ธํธ๋ถ150๋๋ฅผ ๋๋ค์ผ๋ก ์ ์ ํ์ฌ ๊ฒ์ ์ ์ค์ํ๋ค.
1. ์ค์ตํ์ผ ๊ฐ์ ธ์ค๊ธฐ
setwd("c:/ITWILL/2_Rwork/data")
data <- read.csv("one_sample.csv", header=TRUE)
str(data) # 150
head(data)
x <- data$time
head(x)
2. ๊ธฐ์ ํต๊ณ๋ ํ๊ท ๊ณ์ฐ
summary(x) # NA-41๊ฐ
mean(x) # NA
mean(x, na.rm=T) # NA ์ ์ธ ํ๊ท (๋ฐฉ๋ฒ1)
x <- na.omit(x) # NA ์ ์ธ ํ๊ท (๋ฐฉ๋ฒ2)
mean(x)
3. ์ ๊ท๋ถํฌ ๊ฒ์
* ์ ๊ท๋ถํฌ(๋ฐ๋ฅธ ๋ถํฌ) : ํ๋ฅ ๋ณ์ x์ ๋ํ ์ ๊ท์ฑ ๊ฒ์
* ๊ท๋ฌด๊ฐ์ค(H0) : ์ ๊ท๋ถํฌ์ ์ฐจ์ด๊ฐ ์๋ค.
shapiro.test(x) # ์ ๊ท๋ถํฌ ๊ฒ์ ์ํ
4. ๊ฐ์ค๊ฒ์ - ๋ชจ์/๋น๋ชจ์
์ ๊ท๋ถํฌ(๋ชจ์๊ฒ์ ) -> t.test()
๋น์ ๊ท๋ถํฌ(๋น๋ชจ์๊ฒ์ ) -> wilcox.test()
1) ์์ธก๊ฒ์ - ์ ์ ๋ฐ์ดํฐ์ 5.2์๊ฐ ๋น๊ต
t.test(x, mu=5.2, alter="two.side", conf.level=0.95)
2) ๋ฐฉํฅ์ฑ์ด ์๋ ๋๋ฆฝ๊ฐ์ค ๊ฒ์
t.test(x, mu=5.2, alter="greater", conf.level=0.95)
[์ฐ์ต๋ฌธ์ ] 01. ์ฐ๋ฆฌ๋๋ผ ์ ์ฒด ์คํ๊ต 2ํ๋
์ฌํ์ ํ๊ท ํค๊ฐ 148.5cm๋ก ์๋ ค์ ธ ์๋ ์ํ์์ A์คํ๊ต 2ํ๋
์ ์ฒด 500๋ช
์ ๋์์ผ๋ก 10%์ธ 50๋ช
์ ํ๋ณธ์ผ๋ก ์ ์ ํ์ฌ ํ๋ณธํ๊ท ์ ์ฅ์ ๊ณ์ฐํ๊ณ , ๋ชจ์ง๋จ์ ํ๊ท ๊ณผ ์ฐจ์ด๊ฐ ์๋์ง๋ฅผ ๊ฒ์ ํ์์ค.(๋จ์ผํ๋ณธ T๊ฒ์ )
๋จ๊ณ1 : ๋ฐ์ดํฐ์ ๊ฐ์ ธ์ค๊ธฐ
setwd('C:/ITWILL/2_Rwork/data')
stheight <- read.csv("student_height.csv")
stheight
height <- data$height
head(height)
๋จ๊ณ2 : ๊ธฐ์ ํต๊ณ๋/๊ฒฐ์ธก์น ํ์ธ
length(height) #50
summary(height) #ํ๊ท 149.4
๊ฒฐ์ธก์น๊ฐ ์๋ค๋ฉด
x = na.omit(height)
mean(x)
๋จ๊ณ3 : ์ ๊ท์ฑ ๊ฒ์ - ๊ธฐ๋ณธ๊ฐ์
shapiro.test(x) #p-value = 0.0001853 < 0.05 : ๊ท๋ฌด๊ฐ์ค ๊ธฐ๊ฐ
hist(x)
* ํ๊ท ์ ๋นํด ์ผ์ชฝ์ผ๋ก ์น์ฐ์น ๊ทธ๋ํ ์ถ๋ ฅ(์๊ณกํ์)
๋จ๊ณ4 : ๊ฐ์ค๊ฒ์ - ์์ธก๊ฒ์ : ๋น๋ชจ์ ๊ฒ์
wilcox.test(x, mu=148.5) #๋ฐ์ดํฐ๋ถํฌ๊ฐ ๋น์ ์์ ์ผ ๋ wilcox.test()
* V = 826, p-value = 0.067 > 0.05
[ํด์ค] ๋ชจํ๊ท ๊ณผ ์ฐจ์ด๊ฐ ์๋ค
03. ๋ ๋ฆฝํ๋ณธ T ๊ฒ์ (์๋ก ๋ค๋ฅธ ๋ชจ์ง๋จ)
์๋ก ๋ ๋ฆฝ๋ ๋ชจ์ง๋จ์ผ๋ก ๋ถํฐ ์ถ์ถ๋ ํ๋ณธ์ ํ๊ท ์ฐจ์ด ๊ฒ์
๊ธฐ๋ณธ ๊ฐ์ : ๋ ์ง๋จ์ ๋ถํฌ๋ ๋์ผํ๋ค.(๋ฑ๋ถ์ฐ์ฑ ๊ฒ์ )
๊ธฐ๋ณธ ๊ฐ์ค : ๋ ์ง๋จ๊ฐ ํ๊ท ์ ์ฐจ์ด๋ ์๋ค.
ex. A์๋ฃ์์ ๋ํ ๋จ๋ ๊ฐ์ ๋ง์กฑ๋์ ์ฐจ์ด๊ฐ ์๋์ง or ์๋์ง
๋ ๋ฆฝํ๋ณธ T๊ฒ์ ๋ถ์์ ์ฐจ
์ค์ตํ์ผ ๊ฐ์ ธ์ค๊ธฐ > ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ > ๋ ์ง๋จ subset์์ฑ > ๊ธฐ์ ํต๊ณ๋(ํ๊ท ) > ๋์ง์ฑ (๊ธฐ๋ณธ๊ฐ์ : ๋ฑ๋ถ์ฐ์ฑ ๊ฒ์ )
> YES : t.test() / NO : wilcox.text() > ๊ฒ์ ํต๊ณ๋ ๋ถ์
๋ ๋ฆฝํ๋ณธ T๊ฒ์
<์ฐ๊ตฌ๊ฐ์ค>
์ฐ๊ตฌ๊ฐ์ค(H1) : ๊ต์ก๋ฐฉ๋ฒ์ ๋ฐ๋ฅธ ๋ ์ง๋จ ๊ฐ ์ค๊ธฐ์ํ์ ํ๊ท ์ ์ฐจ์ด๊ฐ ์๋ค.
๊ท๋ฌด๊ฐ์ค(H0) : ๊ต์ก๋ฐฉ๋ฒ์ ๋ฐ๋ฅธ ๋ ์ง๋จ ๊ฐ ์ค๊ธฐ์ํ์ ํ๊ท ์ ์ฐจ์ด๊ฐ ์๋ค.
<์ฐ๊ตฌํ๊ฒฝ> IT๊ต์ก์ผํฐ์์ PT๋ฅผ ์ด์ฉํ ํ๋ ์ ํ ์ด์ ๊ต์ก๋ฐฉ๋ฒ๊ณผ ์ค์๊ฐ ์ฝ๋ฉ ๊ต์ก๋ฐฉ๋ฒ์ ์ ์ฉํ์ฌ 1๊ฐ์ ๋์ ๊ต์ก๋ฐ์ ๊ต์ก์ ๊ฐ 150๋ช ์ ๋์์ผ๋ก ์ค๊ธฐ์ํ์ ์ค์ํ์๋ค. ๋ ์ง๋จ๊ฐ ์ค๊ธฐ์ํ์ ํ๊ท ์ ์ฐจ์ด๊ฐ ์๋๊ฐ ๊ฒ์ ํ๋ค.
1. ์ค์ตํ์ผ ๊ฐ์ ธ์ค๊ธฐ
data <- read.csv("two_sample.csv")
data
head(data) #4๊ฐ ๋ณ์ ํ์ธ
summary(data) # score - NA's : 73๊ฐ
2. ๋ ์ง๋จ subset ์์ฑ(๋ฐ์ดํฐ ์ ์ ,์ ์ฒ๋ฆฌ)
result <- subset(data, !is.na(score), c(method, score))
dataset <- data[c('method', 'score')]
table(dataset$method)
3. ๋ฐ์ดํฐ ๋ถ๋ฆฌ
1) ๊ต์ก๋ฐฉ๋ฒ ๋ณ๋ก ๋ถ๋ฆฌ
method1 <- subset(dataset, method==1)
method2 <- subset(dataset, method==2)
2) ๊ต์ก๋ฐฉ๋ฒ์์ ์ ์ ์ถ์ถ
method1_score <- method1$score
method2_score <- method2$score
3) ๊ธฐ์ ํต๊ณ๋
length(method1_score); # 150
length(method2_score); # 150
4. ๋ฑ๋ถ์ฐ์ฑ ๊ฒ์ : ๋ ์ง๋จ์ ๋ถ์ฐ ์ฐจ์ด ๊ฒ์
var.test(method1_score, method2_score) #F = 1.2158, num df = 108, denom df = 117, p-value = 0.3002
* ๊ท๋ฌด๊ฐ์ค : ๋ ์ง๋จ์ ๋ถํฌ๋ ๋์ผํ๋ค.
* ๋์ง์ฑ ๋ถํฌ : t.test()
* ๋น๋์ง์ฑ ๋ถํฌ : wilcox.test()
5. ๊ฐ์ค๊ฒ์ - ๋์ง๋จ ํ๊ท ์ฐจ์ด๊ฒ์
t.test(method1_score, method2_score, alter="two.sided", conf.int=TRUE, conf.level=0.95)
#t = -2.0547, df = 218.19, p-value = 0.0411
* -1.961 < t < 1.96 : ์ฑํ์ญ. ์ฆ t๋ ๊ธฐ๊ฐ์ญ, p๋ ์ ๋ขฐ์์ค์์ ์ฝ๊ฐ ๋ฒ์ด๋ ๊ฐ์ด๋ค.
๋ฐฉํฅ์ฑ์ด ์๋ ์ฐ๊ตฌ๊ฐ์ค ๊ฒ์ (๊ธฐ๊ฐ) ๋ฐฉ๋ฒ1 > ๋ฐฉ๋ฒ2
t.test(method1_score, method2_score, alter="greater", conf.int=TRUE, conf.level=0.95)
๋ฐฉํฅ์ฑ์ด ์๋ ์ฐ๊ตฌ๊ฐ์ค ๊ฒ์ (์ฑํ) : ๋ฐฉ๋ฒ 1 < ๋ฐฉ๋ฒ2
t.test(method1_score, method2_score, alter="less", conf.int=TRUE, conf.level=0.95)
#p-value = 0.02055 < 0.05
[์ฐ์ต๋ฌธ์ ] ๊ต์ก๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ํ์ฑ์ ์ ์ฐจ์ด๊ฐ ์๋์ง ๊ฒ์ ํ์์ค.(๋
๋ฆฝํ๋ณธ T๊ฒ์ )
์กฐ๊ฑด1) ๋ณ์ : method : ๊ต์ก๋ฐฉ๋ฒ, score : ์ํ์ฑ์
์กฐ๊ฑด2) ๋ชจ๋ธ : ๊ต์ก๋ฐฉ๋ฒ(๋ช
๋ชฉ์ฒ๋ =๋ฒ์ฃผํ ๋ณ์) -> ์ํ์ฑ์ (๋น์จ์ฒ๋ =์ฐ์ํ ๋ณ์)
๊ต์ก๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ํ ์ ์์ ์ด๋ค ์ฐจ์ด๊ฐ ์๋?
์กฐ๊ฑด3) ์ ์ฒ๋ฆฌ : ๊ฒฐ์ธก์น ์ ๊ฑฐ : ํ๊ท ์ผ๋ก ๋์ฒด
๋จ๊ณ1. ์ค์ตํ์ผ ๊ฐ์ ธ์ค๊ธฐ
Data <- read.csv("twomethod.csv", header=TRUE)
head(Data) #3๊ฐ ๋ณ์ ํ์ธ -> id method score
๋จ๊ณ2. ๋ ์ง๋จ subset ์์ฑ
unique(Data$method) # 1 2
* ๋น๋์ ์กฐํ ํจ์ table VS unique (์ค๋ณต๋์ง ์๋ ์ ์ผํ ๊ฐ์ ๋ฒ์ฃผ ์ถ๋ ฅ)
๋ณ์ ์ ํ -> ์๋ธ์
์์ฑ
data_df <- Data[c('method', 'score')]
data_df
๋จ๊ณ3. ๋ฐ์ดํฐ ๋ถ๋ฆฌ
1) ์ง๋จ(๊ต์ก๋ฐฉ๋ฒ)์ผ๋ก ๋ถ๋ฆฌ
method1 = subset(data$data_df, method == 1)
method2 = subset(data$data_df, method == 2)
dim(method1) #24๊ฐ์ ๊ด์ธก์น 2๊ฐ์ ๋ณ์
dim(method2) #39๊ฐ์ ๊ด์ธก์น 2๊ฐ์ ๋ณ์
2) ๊ต์ก๋ฐฉ๋ฒ์์ ์ํ์ฑ์ ์ถ์ถ
score1 = method1$score
score2 = method2$score
๋จ๊ณ4 : ๋ถํฌ๋ชจ์ ๊ฒ์
์๋ก ๋ค๋ฅธ ๋ชจ์ง๋จ์์ ์ถ์ถํ ์ ์์ ๋ถํฌ์ ์ฐจ์ด๊ฐ ์๋์ง? =๋ฑ๋ถ์ฐ์ฑ ๊ฒ์ . ์ฐ์ํ ๋ณ์๋ฅผ ์ฌ์ฉํจ.
var.test(score1, score2) #p-value = 0.8494
๋จ๊ณ5: ๊ฐ์ค๊ฒ์
t.test(score1, score2)
#t=-5.6056(์ ๋๊ฐ), df=43.705, p-value=1.303e-06 =0.000001303
* t๋ ์ฑํ์ญ์์ ๋ง์ด ๋ฒ์ด๋ฌ์ผ๋ฏ๋ก ๊ท๋ฌด๊ฐ์ค์ด ๊ธฐ๊ฐ๋ ํ๋ฅ ์ด ๋๋ค.
04. ๋์ํ๋ณธ T๊ฒ์
๋์ํ๋ณธ T ๊ฒ์ (๋์ผํ ๋ชจ์ง๋จ)?
๋์ผํ ๋ชจ์ง๋จ ๋์ ๋ ๋ฒ ๋ฐ๋ณต ์ธก์ ํ์ฌ ์ ๊ณผ ํ ํ๊ท ์ฐจ์ด ๊ฒ์
๊ธฐ๋ณธ ๊ฐ์ : ๋ ์ง๋จ์ ๋ถํฌ๋ ๋์ผํ๋ค.(๋ฑ๋ถ์ฐ์ฑ ๊ฒ์ )
๊ธฐ๋ณธ ๊ฐ์ค : ๋ ์ง๋จ๊ฐ ํ๊ท ์ ์ฐจ์ด๋ ์๋ค.
ex. A๋ค์ด์ดํธ์ํ ๋ณต์ฉ ์ ๊ณผ ํ ๋ชธ๋ฌด๊ฒ์ ์ฐจ์ด๊ฐ ์๋์ง or ์๋์ง
1. ์ค์ตํ์ผ ๊ฐ์ ธ์ค๊ธฐ
getwd()
setwd("c:/ITWILL/2_Rwork/data")
data <- read.csv("paired_sample.csv", header=TRUE)
head(data)
2. ๋ ์ง๋จ subset ์์ฑ
1) ๋ฐ์ดํฐ ์ ์
result <- subset(data, !is.na(after), c(before,after))
dataset <- data[ c('before', 'after')]
dataset
2) ์ ์ฉ์ ๊ณผ ์ ์ฉํ ๋ถ๋ฆฌ
before <- dataset$before# ๊ต์๋ฒ ์ ์ฉ์ ์ ์
after <- dataset$after # ๊ต์๋ฒ ์ ์ฉํ ์ ์
before; after
3) ๊ธฐ์ ํต๊ณ๋
length(before) # 100
length(after) # 100
mean(before) # 5.145
mean(after, na.rm = T) # 6.220833
3. ์ ๊ท์ฑ๊ฒ์ : diff = before - after
diff = after-before
shapiro.test(after-before) #p-value = 0.05705 >= 0.05 ์ ๊ท๋ถํฌ๋ผ๊ณ ๊ฐ์ ํ ์ ์์
* ์ ๊ท๋ถํฌ : t.test()
* ๋น์ ๊ท๋ถํฌ : wilcox.test()
4. ๊ฐ์ค๊ฒ์
t.test(before, after, paired=TRUE) # p-value < 2.2e-16 : ๊ท๋ฌด๊ฐ์ค ๊ธฐ๊ฐ
๋ฐฉํฅ์ฑ์ด ์๋ ์ฐ๊ตฌ๊ฐ์ค ๊ฒ์ before > after
t.test(before, after, paired=TRUE,alter="greater",conf.int=TRUE, conf.level=0.95)
๋ฐฉํฅ์ฑ์ด ์๋ ์ฐ๊ตฌ๊ฐ์ค ๊ฒ์
t.test(before, after, paired=TRUE,alter="less",conf.int=TRUE, conf.level=0.95)
05. F๋ถํฌ์ ๊ฒ์
์นด์ด์ ๊ณฑ๋ถํฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง ๊ฒ์ (์์ ๋(df)๊ฐ ํด ์๋ก ์ข์ฐ๋์นญ์ ๋น์ทํด์ง)
F๊ฒ์ (=๋ถ์ฐ๋ถ์)?
๋ชจ์ง๋จ ์ ๊ท๋ถํฌ์ด๊ณ , ๋ชจ์ง๋จ์ ๋ถ์ฐ(σ2)์ด ์๋ ค์ง์ง ์์ ๊ฒฝ์ฐ, 3๊ฐ ์ด์์ ๋ชจ์ง๋จ์ ๋ถ์ฐ์ด ๊ฐ์์ง or ๋ค๋ฅธ์ง ๊ฒ์
๊ฐ ๋ชจ์ง๋จ์ ๋ถ์ฐ์ ๋ํ ๋น์จ ์ถ์ (F๋ถํฌํ ์ด์ฉ)
๊ธฐ๋ณธ ๊ฐ์ : ๊ฐ ์ง๋จ์ ๋ถํฌ๋ ๋์ผํ๋ค.(๋ฑ๋ถ์ฐ์ฑ ๊ฒ์ )
๊ธฐ๋ณธ ๊ฐ์ค : ๊ฐ ์ง๋จ์ ํ๊ท ์ ์ฐจ์ด๋ ์๋ค.
* ๋ฐฉ๋ฒ : ์ผ์๋ถ์ฐ๋ถ์, ์ด์๋ถ์ฐ๋ถ์, ๋ค์ ๋ณ๋ ๋ถ์ฐ๋ถ์
* ๊ฒ์ ๋ฐฉ๋ฒ : ๋ถ์ฐ๋ถ์, ๋ชจ์(์ ๊ท๋ถํฌ) : ์ผ์๋ฐฐ์น๋ถ์ฐ๋ถ์, ๋น๋ชจ์(๋น์ ๊ท๋ถํฌ) : ํฌ๋ฃจ์ค์นผ-์๋ฆฌ์ค(Kruskal-Wallis)๊ฒ์
F๊ฒ์ ๋ฐฉ๋ฒ
์ข ๋ฅ | ๋ณ์ ๊ฐ์ | ์ฌ๋ก |
์ผ์ ๋ถ์ฐ๋ถ์ | ๋
๋ฆฝ๋ณ์ : 1๊ฐ ์ข ์๋ณ์ : 1๊ฐ |
๊ต์ก ๋ฐฉ๋ฒ์ ๋ฐ๋ฅธ ์ฑ์ ๋น๊ต ๋ ๋ฆฝ๋ณ์(๋ฒ์ฃผํ) : ๋ฐฉ๋ฒ1, ๋ฐฉ๋ฒ2, ๋ฐฉ๋ฒ3 ์ข ์๋ณ์(์ฐ์ํ) : ์ฑ์ |
์ด์ ๋ถ์ฐ๋ถ์ | ๋
๋ฆฝ๋ณ์ : 2๊ฐ ์ข ์๋ณ์ : 1๊ฐ |
์ผํ๋ชฐ ๊ณ ๊ฐ์ ์ฐ๋ น๋(30,40,50๋), ์๊ฐ๋(์ค์ /์คํ)๋ณ ๊ตฌ๋งคํํฉ ๋ ๋ฆฝ๋ณ์(๋ฒ์ฃผํ) : ์ฐ๋ น๋, ์๊ฐ๋ ์ข ์๋ณ์(์ฐ์ํ) : ๊ตฌ๋งคํํฉ |
๋ค์ ๋ณ๋ ๋ถ์ฐ๋ถ์ | ๋
๋ฆฝ๋ณ์ : 1๊ฐ, 2๊ฐ ์ข ์๋ณ์ : 2๊ฐ |
์ผํ๋ชฐ ๊ณ ๊ฐ์ ์ฐ๋ น๋(30,40,50๋), ์๊ฐ๋(์ค์ /์คํ)๋ณ ๊ตฌ๋งคํํฉ ๋ ๋ฆฝ๋ณ์(๋ฒ์ฃผํ) : ์ฐ๋ น๋, ์๊ฐ๋ ์ข ์๋ณ์(์ฐ์ํ) : ๊ตฌ๋งคํํฉ |
6. ๋ถ์ฐ ๋ถ์(ANOVA Analysis)
๋ถ์ฐ๋ถ์(์๋ก ๋ค๋ฅธ ๋ชจ์ง๋จ)? ์๋ก ๋ ๋ฆฝ๋ 3๊ฐ ์ด์ ๋ชจ์ง๋จ ๊ฐ์ ํ๊ท ์ฐจ์ด ๊ฒ์ ๏ผ ๊ธฐ๋ณธ ๊ฐ์ : ๊ฐ ์ง๋จ์ ๋ถํฌ๋ ๋์ผํ๋ค.(๋ฑ๋ถ์ฐ์ฑ ๊ฒ์ )
๊ธฐ๋ณธ ๊ฐ์ค : ๊ฐ ์ง๋จ๊ฐ ํ๊ท ์ ์ฐจ์ด๋ ์๋ค.
๋๋ฆฝ ๊ฐ์ค : ์ ์ด๋ ํ ์ง๋จ ์ด์ ํ๊ท ์ ์ฐจ์ด๊ฐ ์๋ค.
ex. A์๋ฃ์์ ๋ํ ์ฐ๋ น๋ณ(20๋,30๋,40๋) ๋ง์กฑ๋์ ์ฐจ์ด๊ฐ ์๋์ง or ์๋์ง
๋ถ์ฐ ๋ถ์ ์ ์ฐจ
์ค์ตํ์ผ ๊ฐ์ ธ์ค๊ธฐ > ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ > ์ธ ์ง๋จ subset ์์ฑ > ๊ธฐ์ ํต๊ณ๋(ํ๊ท ) > ๋์ง์ฑ (๊ธฐ๋ณธ๊ฐ์ : ๋ฑ๋ถ์ฐ ๊ฒ์ . bartlett.test()) > YES : aov() / NO : kruskal.test() > ์ฌํ๊ฒ์
๋ถ์ฐ ๋ถ์
<์ฐ๊ตฌ๊ฐ์ค>
์ฐ๊ตฌ๊ฐ์ค(H1) : ๊ต์ก๋ฐฉ๋ฒ์ ๋ฐ๋ฅธ ์ธ ์ง๋จ ๊ฐ ์ค๊ธฐ์ํ์ ํ๊ท ์ ์ฐจ์ด๊ฐ ์๋ค.
๊ท๋ฌด๊ฐ์ค(H0) : ๊ต์ก๋ฐฉ๋ฒ์ ๋ฐ๋ฅธ ์ธ ์ง๋จ ๊ฐ ์ค๊ธฐ์ํ์ ํ๊ท ์ ์ฐจ์ด๊ฐ ์๋ค.
<์ฐ๊ตฌํ๊ฒฝ> ์ธ ๊ฐ์ง ๊ต์ก๋ฐฉ๋ฒ์ ์ ์ฉํ์ฌ 1๊ฐ์ ๋์ ๊ต์ก๋ฐ์ ๊ต์ก์ ๊ฐ 50๋ช ์ฉ์ ๋์์ผ๋ก ์ค๊ธฐ์ํ์ ์ค์ํ์๋ค. ์ธ ์ง๋จ๊ฐ ์ค๊ธฐ์ํ์ ํ๊ท ์ ์ฐจ์ด๊ฐ ์๋๊ฐ ๊ฒ์ ํ๋ค.
1. ํ์ผ ๊ฐ์ ธ์ค๊ธฐ
data <- read.csv("three_sample.csv")
data
2. ๋ฐ์ดํฐ ์ ์ /์ ์ฒ๋ฆฌ - NA, outline ์ ๊ฑฐ
data <- subset(data, !is.na(score), c(method, score))
data # method, score
(1) ์ฐจํธ์ด์ฉ - ontlier ๋ณด๊ธฐ(๋ฐ์ดํฐ ๋ถํฌ ํํฉ ๋ถ์)
plot(data$score) # ์ฐจํธ๋ก outlier ํ์ธ : 50์ด์๊ณผ ์์๊ฐ
barplot(data$score) # ๋ฐ ์ฐจํธ
mean(data$score) # 14.45
(2) outlier ์ ๊ฑฐ - ํ๊ท (14) ์ด์ ์ ๊ฑฐ
length(data$score)#91
data2 <- subset(data, score <= 14) # 14์ด์ ์ ๊ฑฐ
length(data2$score) #88(3๊ฐ ์ ๊ฑฐ)
(3) ์ ์ ๋ ๋ฐ์ดํฐ ๋ณด๊ธฐ
x <- data2$score
boxplot(x) #์ด์์น ํ์ธ
plot(x)
3. ์ง๋จ๋ณ subset ์์ฑ
* method: 1:๋ฐฉ๋ฒ1, 2:๋ฐฉ๋ฒ2, 3:๋ฐฉ๋ฒ3
data2$method2[data2$method==1] <- "๋ฐฉ๋ฒ1"
data2$method2[data2$method==2] <- "๋ฐฉ๋ฒ2"
data2$method2[data2$method==3] <- "๋ฐฉ๋ฒ3"
table(data2$method2) # ๊ต์ก๋ฐฉ๋ฒ ๋ณ ๋น๋์
4. ๋ฑ๋ถ์ฐ์ฑ ๊ฒ์ : ๋์ง์ฑ ๊ฒ์
#bartlett.test(์ข
์๋ณ์ ~ ๋
๋ฆฝ๋ณ์) # ๋
๋ฆฝ๋ณ์(์ธ ์ง๋จ)
bartlett.test(score ~ method2, data=data2)
# p-value = 0.1905 >= 0.05
* ๊ท๋ฌด๊ฐ์ค : ์ง๋จ ๊ฐ ๋ถํฌ์ ๋ชจ์์ด ๋์ง์ ์ด๋ค.
* [ํด์ค] ์ ์์์ค 0.05๋ณด๋ค ํฌ๊ธฐ ๋๋ฌธ์ ๊ท๋ฌด๊ฐ์ค์ ๊ธฐ๊ฐํ ์ ์๋ค.
* ๋์งํ ๊ฒฝ์ฐ : aov() - Analysis of Variance(๋ถ์ฐ๋ถ์)
* ๋์งํ์ง ์์ ๊ฒฝ์ฐ - kruskal.test()
5. ๋ถ์ฐ๊ฒ์ (์ง๋จ์ด 2๊ฐ ์ด์์ธ ๊ฒฝ์ฐ ๋ถ์ฐ๋ถ์์ด๋ผ๊ณ ํจ)
* aov(์ข
์๋ณ์ ~ ๋
๋ฆฝ๋ณ์, data=data set)
* ๊ท๋ฌด๊ฐ์ค : ์ง๋จ ๊ฐ ํ๊ท ์ ์ฐจ์ด๊ฐ ์๋ค.
result <- aov(score ~ method2, data=data2)
* aov()์ ๊ฒฐ๊ณผ๊ฐ์ summary()ํจ์๋ฅผ ์ฌ์ฉํด์ผ p-value ํ์ธ
summary(result)
* F๊ฐ์ค์ด ํด์๋ก, P-value(๊ท๋ฌด๊ฐ์ค ์ง์ง๊ฐ)์ ๋ฎ์์ง๋ค.
* Pr(>F)=9.39e-14 >= 0.05 ์ ์๋ฏธํ๊ฒ ๊ท๋ฌด๊ฐ์ค ๊ธฐ๊ฐ
[ํด์ค] ์ ์ด๋ ํ ์ง๋จ ์ด์์์ ํ๊ท ์ ์ฐจ์ด๋ฅผ ๋ณด์ธ๋ค.
6. ์ฌํ๊ฒ์ : ์ธ๋ถ์ ์ธ ์ง๋จ ๊ฐ ์ฐจ์ด ๊ฒ์
TukeyHSD(result)
diff lwr upr p adj
๋ฐฉ๋ฒ2-๋ฐฉ๋ฒ1 2.612903 1.9424342 3.2833723 0.0000000 : ์ ์ ํ๊ท ์ฐจ์ด๊ฐ ๊ฐ์ฅ ๋ง์ด ๋ณด์
๋ฐฉ๋ฒ3-๋ฐฉ๋ฒ1 1.422903 0.7705979 2.0752085 0.0000040 : ์ฐจ์ด ์์
๋ฐฉ๋ฒ3-๋ฐฉ๋ฒ2 -1.190000 -1.8656509 -0.5143491 0.0001911 : ์ฐจ์ด ์์
* diff : ์ ๋ขฐ๊ตฌ๊ฐ(95%)์ ์ํ๊ฐ(upr)-ํํ๊ฐ(lwr)
* p adj : p-value (=์ ์ํ๋ฅ )
์ฐจํธ๋ก ํด์
plot (TukeyHSD(result))
[ํด์ค] 3๊ฐ์ ๋ชจ๋ ์ ๋ขฐ๊ตฌ๊ฐ์ด ์ค๊ฐ์ 0์ ํฌํจํ๊ณ ์์ง ์์ผ๋ฏ๋ก ํ๊ท ์ ์ฐจ์ด๊ฐ ์๋ค
๊ทธ๋ฃน๋ณ ํต๊ณ : ๋ถ์ฐ๋ถ์ ์ฌํ๊ฒ์ ์์ ์ด์ฉ
install.packages('dplyr')
* library(dplyr) #%>%์ฐ์ฐ์, group_by(), summarize()
ํ์) df %>% group_by('๋ฒ์ฃผํ๋ณ์') %>% summarize(var_name = function(column_name))
* function : sum, mean, median, sd, var, min, max ๋ฑ
* ๊ฒฝ๊ณ ๋ฉ์์ง ๋ฌด์
๊ต์ก๋ฐฉ๋ฒ๋ณ ์ ์ ํ๊ท
data2 %>% group_by(method2) %>% summarize(avg = mean(score))
method2 avg
<chr> <dbl>
1 ๋ฐฉ๋ฒ1 4.19
2 ๋ฐฉ๋ฒ2 6.8
3 ๋ฐฉ๋ฒ3 5.61
* ๋ฐฉ๋ฒ2(6.8) - ๋ฐฉ๋ฒ1(4.19) = 2.612903
* subset ์ด์ฉํ ๊ต์ก๋ฐฉ๋ฒ๋ณ ์ ์ ํ๊ท
names(data2) "method" "score" "method2"
method1 = subset(data2, method2 == '๋ฐฉ๋ฒ1')
method2 = subset(data2, method2 == '๋ฐฉ๋ฒ2')
method3 = subset(data2, method2 == '๋ฐฉ๋ฒ3')
mean(method1$score) #4.187097
mean(method2$score) #6.8
mean(method3$score) #5.61
๋น๋ชจ์ ๊ฒ์ : iris ์ ์ฉ
str(iris)
table(iris) #3๊ฐ์ ์ง๋จ ํ์ธ
* Species:๋
๋ฆฝ๋ณ์(๋ฒ์ฃผํ๋ณ์)
* Sepal.Length, Sepal.Width, Petal.Length, Petal.Width:์ข
์๋ณ์(์ฐ์ํ๋ณ์)
1. ๋ฑ๋ถ์ฐ์ฑ๊ฒ์
bartlett.test(Sepal.Width ~ Species, data=iris) #p-value = 0.3515 : ๋ชจ์๊ฒ์
bartlett.test(Petal.Length ~ Species, data=iris) #p-value = 9.229e-13 : ๋น๋ชจ์๊ฒ์
2. ๋ถ์ฐ๋ถ์ : ๋น๋ชจ์ ๊ฒ์
model = kruskal.test(Petal.Length ~ Species, data=iris)
model #p-value < 2.2e-16
[ํด์ค] ์ ์ด๋ ํ ์ง๋จ์ ์ฐจ์ด๊ฐ ์๋ค
3. ์ฌํ๊ฒ์ (๊ฝ์ ์ข
๋ณ๋ก ๊ฝ๋ฐ์นจ์ ํ๊ท )
#* ukeyHSD(model)์ error
iris %>% group_by(Species) %>% summarise(avg=mean(Sepal.Length))
Species avg
<fct> <dbl>
1 setosa 5.01
2 versicolor 5.94
3 virginica 6.59
[์์ ] ์ผํ๋ชฐ ๊ณ ๊ฐ์ ์ฐ๋ น๋(20,30,40)๋ณ, ์๊ฐ๋(์ค์ /์คํ)๋ณ ๊ตฌ๋งคํํฉ
์ข
์๋ณ์ : ๊ตฌ๋งค์๋(์ฐ์ํ)
๋
๋ฆฝ๋ณ์1 : ์ฐ๋ น๋๋ณ(๋ฒ์ฃผํ)
๋
๋ฆฝ๋ณ์2 : ์๊ฐ๋๋ณ(๋ฒ์ฃผํ)
1. dataset ์์ฑ : ๊ท ๋ฑ๋ถํฌ
age = round(runif(100, min=20, max=49))
age
time = round(runif(100, min=0, max=1))
time 0:์ค์ 1:์คํ
buy = round(runif(100,min=1, max=10))
buy
datas = data.frame(age, time, buy)
datas
str(datas)
์ฐ๋ น๋ ๋ณ์ ๋ฆฌ์ฝ๋ฉ
datas$age2[datas$age <= 29] = 20 29์ธ ๋ฏธ๋ง์ 20
datas$age2[datas$age > 29 & datas$age <= 39] = 30
datas$age2[datas$age > 39] = 40
๋
๋ฆฝ๋ณ์ : ์์ธํ ๋ณํ
datas$age2 = as.factor(datas$age2)
datas$time = as.factor(datas$time)
str(datas)
2. ๋ฑ๋ถ์ฐ์ฑ๊ฒ์
bartlett.test(buy ~ age2, data=datas) #p-value = 0.6989
bartlett.test(buy~time, data=datas) #p-value = 0.6989
3. ๋ถ์ฐ๋ถ์ : ์ด์๋ฐฐ์น ๋ถ์ฐ๋ถ์
model = aov(buy~age2 + time, data=datas)
4. ๋ถ์ฐ๋ถ์ ๊ฒฐ๊ณผ ํด์
summary(model)
Df Sum Sq Mean Sq F value Pr(>F)
age2 2 9.6 4.78 0.682 0.5080 :์ฐ๋ น๋๋ณ ์ฐจ์ด ์์
time 1 40.4 40.36 5.757 0.0184 * :์๊ฐ๋๋ณ ์ฐจ์ด ์์
Residuals 96 673.0 7.01
5. ์ฌํ๊ฒ์
TukeyHSD(model)
$age2
diff lwr upr p adj
30-20 -0.2013889 -1.848509 1.4457314 0.9543943 : 30๋์ 20๋ ๊ฐ ๊ตฌ๋งค์๋์ ์ฐจ์ด๊ฐ ์์
40-20 -0.7181572 -2.280358 0.8440436 0.5198682
40-30 -0.5167683 -2.003562 0.9700254 0.6869840
$time
diff lwr upr p adj
1-0 1.265588 0.2142492 2.316926 0.0188252
plot(TukeyHSD(model))
library(dplyr)
datas %>% group_by(age2) %>% summarise(mean(buy))
age2 `mean(buy)`
<fct> <dbl>
1 20 5.89
2 30 5.69
3 40 5.17
'๋ฐ์ดํฐ๋ถ์๊ฐ ๊ณผ์ > R' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DAY21. ์ฃผ์ฑ๋ถ๋ถ์, ์์ธ๋ถ์ (0) | 2021.10.14 |
---|---|
DAY20. R ์๊ด๋ถ์, ๊ณต๋ถ์ฐ (0) | 2021.10.13 |
DAY18. R ๊ต์ฐจ๋ถ์๊ฒ์ (์นด์ด์ ๊ณฑ๊ฒ์ ) (0) | 2021.10.08 |
DAY17. R ํต๊ณ๋ถ์์ ์ฐจ, ํต๊ณ๊ธฐ๋ณธ์ง์ (0) | 2021.10.07 |
DAY16. R ๋น์ ํ๋ฐ์ดํฐ (ํ ํฝ/์ฐ๊ด์ด/๊ฐ์ฑ๋ถ์) (0) | 2021.10.06 |