User Tools

Site Tools


anova_note:output01

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
anova_note:output01 [2025/12/05 15:03] – created hkimscilanova_note:output01 [2025/12/09 22:54] (current) hkimscil
Line 1: Line 1:
 <code> <code>
 +
 > rm(list=ls()) > rm(list=ls())
-> # set.seed(101) +> rnorm2 <- function(n,mean,sd) {  
-> rnorm2 <- function(n,mean,sd){ mean+sd*scale(rnorm(n)) }++   mean+sd*scale(rnorm(n))  
 +}
 > ss <- function(x) { > ss <- function(x) {
-    sum((x-mean(x))^2)+  sum((x-mean(x))^2)
 + } + }
->  +set.seed(10) 
-> n.o <- 30 +> n <- 30 
-> n.p <- 30+n.o <- n.p <- n
 > o <- rnorm(n.o, 100, 10) > o <- rnorm(n.o, 100, 10)
-> p <- rnorm(n.p, 105, 10) +> p <- rnorm(n.p, 104, 10) 
-> t.test(o,p, var.equal=T)+ 
 +t.out <- t.test(o,p, var.equal=T) 
 +> t.out
  
  Two Sample t-test  Two Sample t-test
  
 data:  o and p data:  o and p
-t = -3.3581, df = 58, p-value = 0.001391+t = -2.6941, df = 58, p-value = 0.009216
 alternative hypothesis: true difference in means is not equal to 0 alternative hypothesis: true difference in means is not equal to 0
 95 percent confidence interval: 95 percent confidence interval:
- -14.78163  -3.74076+ -11.012446  -1.623742
 sample estimates: sample estimates:
 mean of x mean of y  mean of x mean of y 
- 97.31987 106.58106 + 96.55324 102.87133 
  
 +
 +> # old way
 +> m.o <- mean(o)
 +> m.p <- mean(p)
 +> df.o <- n.o - 1
 +> df.p <- n.p - 1
 +> diff <- m.o - m.p
 +> pv <- (ss(o)+ss(p))/(df.o+df.p)
 +> se <- sqrt((pv/n.o) + (pv/n.p))
 +> t.cal <- diff/se
 +> t.cal
 +[1] -2.694097
 +> pt(t.cal, df.o+df.p) * 2
 +[1] 0.009215657
 +> t.out$statistic
 +        t 
 +-2.694097 
 +> t.out$p.value
 +[1] 0.009215657
 +
 +</code>
 +
 +<code>
 +> #
 > comb <- list(o = o, p = p) > comb <- list(o = o, p = p)
 > op <- stack(comb) > op <- stack(comb)
 > head(op) > head(op)
      values ind      values ind
- 83.05641   o +100.18746   o 
-108.25078   o + 98.15747   o 
-3  90.81559   o +3  86.28669   o 
-4  99.74236   o +4  94.00832   o 
- 82.61865   o +102.94545   o 
- 85.64129   o+103.89794   o
 > colnames(op)[1] <- "values" > colnames(op)[1] <- "values"
 > colnames(op)[2] <- "group" > colnames(op)[2] <- "group"
Line 39: Line 67:
 > head(op) > head(op)
      values group      values group
- 83.05641     o +100.18746     o 
-108.25078     o + 98.15747     o 
-3  90.81559     o +3  86.28669     o 
-4  99.74236     o +4  94.00832     o 
- 82.61865     o +102.94545     o 
- 85.64129     o +103.89794     o 
-> boxplot(op$values~op$group)+> boxplot(op$values~ss.o <- ss(o) 
 +ss.p <- ss(p) 
 +df.o <- length(o)-1 
 +df.p <- length(p)-1 
 + 
 + 
 +op$group)
  
  
-</code> 
- 
-{{:pasted:20250925-082846.png}} 
- 
-<code> 
 > plot(op$values~op$group) > plot(op$values~op$group)
 > boxplot(op$values~op$group, main="values by group", > boxplot(op$values~op$group, main="values by group",
Line 61: Line 90:
 +        c("o","p"), fill=terrain.colors(2), horiz=TRUE) +        c("o","p"), fill=terrain.colors(2), horiz=TRUE)
  
 +>
 </code> </code>
 +{{.:pasted:20251207-105645.png}} 
 +{{.:pasted:20251207-105705.png}}
  
 <code> <code>
Line 72: Line 103:
 > max.x <- max(op$values) > max.x <- max(op$values)
 > br <- seq(floor(min.x), ceiling(max.x), by = 1)  > br <- seq(floor(min.x), ceiling(max.x), by = 1) 
 +
 +> hist(o, breaks=br, 
 ++      col=rgb(1,1,1,.5))
 +> abline(v=m.o, col="black", lwd=3)
 +> hist(p, add=T, breaks=br,
 ++      col=rgb(.5,1,1,.5))
 +> abline(v=m.p, col="blue", lwd=3)
 +> abline(v=m.tot, col='red', lwd=3)
  
 </code> </code>
 +{{.:pasted:20251207-105815.png}}
  
-{{:pasted:20250925-083030.png}}+<code> 
 +</code>
  
 <code> <code>
 > hist(o, breaks=br,  > hist(o, breaks=br, 
 +      col=rgb(1,1,1,.5)) +      col=rgb(1,1,1,.5))
-> abline(v=m.o, col="red", lwd=3) 
 > hist(p, add=T, breaks=br, > hist(p, add=T, breaks=br,
 +      col=rgb(.5,1,1,.5)) +      col=rgb(.5,1,1,.5))
-> abline(v=m.p, col="blue", lwd=3) +> abline(v=m.tot, col='red', lwd=3)
-> abline(v=m.tot, col='black', lwd=3)+
  
 > ss.tot <- ss(op$values) > ss.tot <- ss(op$values)
 > df.tot <- length(op$values)-1 > df.tot <- length(op$values)-1
 > ss.tot/df.tot > ss.tot/df.tot
-[1] 133.9582+[1] 91.24725
 > var(op$values) > var(op$values)
-[1] 133.9582+[1] 91.24725
 > ss.tot > ss.tot
-[1] 7903.533 +[1] 5383.588
->  +
-> ss.o <- ss(o) +
-> ss.p <- ss(p) +
-> df.o <- length(o)-1 +
-> df.p <- length(p)-1+
  
 +</code>
 +{{.:pasted:20251207-105935.png}}
 +
 +<code>
 > m.tot > m.tot
-[1] 101.9505+[1] 99.71228
 > m.o > m.o
-[1] 97.31987+[1] 96.55324
 > m.p > m.p
-[1] 106.5811+[1] 102.8713
 > ss.o > ss.o
-[1] 3647.085+[1] 2179.19
 > ss.p > ss.p
-[1] 2969.903+[1] 2605.623
  
-> ss.bet <- length(o)*(m.tot-m.o)^2+length(p)*(m.tot-m.p)^2 +> hist(o, breaks=br,  
-> ss.tot ++      col=rgb(1,1,1,.5)) 
-[1] 7903.533 +> abline(v=m.o, col="black", lwd=3) 
-> ss.bet +> abline(v=m.tot, col='red', lwd=3) 
-[1] 1286.546+>  
 +> hist(p, breaks=br, 
 ++      col=rgb(.5,1,1,.5)) 
 +> abline(v=m.p, col="blue", lwd=3) 
 +> abline(v=m.tot, col='red', lwd=3) 
 +
 +> ss.bet <- n.o*(m.tot-m.o)^2 +  # m.tot 에서 o그룹공통 까지의 거리를 제곱해서 모두 더한 값 
 +                                 # 아래 그림에서 빨간색 선에서 검은색 선까지의 거리를 제곱해서 모두 더한 값 
 ++           n.p*(m.tot-m.p)^2    # m.tot 에서 p그룹공통 까지의 거리를 제곱해서 모두 더한 값 
 +                                 # 아래 그림에서 빨간색 선에서 파란색 선까지의 거리를 제곱해서 모두 더한 값 
 +                                 # 이것은 그룹 (IV, 독립변인) 때문에 생긴 그룹 간 차이이다 
 +> ss.bet                         # 따라서 이것을 SS between group이라고 부른다 
 +[1] 598.7747 
 +>  
 +</code> 
 +{{.:pasted:20251207-105845.png}} 
 +{{.:pasted:20251207-105903.png}} 
 + 
 +<code> 
 +> hist(o, breaks=br,  
 ++      col=rgb(1,1,1,.5)) 
 +> abline(v=m.o, col="black", lwd=3) 
 +> ss.o <- ss(o)  # o집단의 평균인 검은색 선에서 개인 점수까지의 거리는 (오차는) 독립변인과 상관없이 랜덤하게 나타나는 것 
 +> ss.o           # o집단의 것을 ss.o라고 부른다 
 +[1] 2179.19 
 +>  
 +> hist(p, breaks=br, 
 ++      col=rgb(.5,1,1,.5)) 
 +> abline(v=m.p, col="blue", lwd=3) 
 +> ss.p <- ss(p)  # p집단도 마찬가지이다. 이 집단 내의 sum of square값은 p 집단의 공통특징인 평균에서 개인점수가 랜덤하게  
 +> ss.p           # 나타나는 것이고, 이것을 sum of square p라고 부른다 
 +[1] 2605.623 
 +>  
 +> # 이 둘은 각 그룹의 평균을 중심으로 random 하게 나타나는 평균에서의 거리이다 (에러). 
 +> # 따라서 우리는 이것을 sum of square within group이라고 부른다
 > ss.wit <- ss.o+ss.p  > ss.wit <- ss.o+ss.p 
 > ss.wit > ss.wit
-[1] 6616.987+[1] 4784.813 
 +>  
 +</code> 
 +{{.:pasted:20251207-110048.png}} 
 +{{.:pasted:20251207-110101.png}} 
 + 
 + 
 +<code> 
 +> ss.bet 
 +[1] 598.7747 
 +> ss.wit 
 +[1] 4784.813
 > ss.bet+ss.wit > ss.bet+ss.wit
-[1] 7903.533 +[1] 5383.588
-> ss.tot +
-[1] 7903.533+
  
 +> ss.tot
 +[1] 5383.588
 +>
 +</code>
 +
 +<code> 
 > df.tot <- length(op$values)-1 > df.tot <- length(op$values)-1
 > df.bet <- nlevels(op$group) - 1 > df.bet <- nlevels(op$group) - 1
-> df.wit <- (length(o)-1)+(length(p)-1)+> df.wit <- (n.o-1)+(n.p-1)
 > df.tot > df.tot
 [1] 59 [1] 59
Line 134: Line 221:
 [1] 58 [1] 58
  
 +</code>
 +
 +<code>
 > ms.tot <- ss.tot / df.tot > ms.tot <- ss.tot / df.tot
 > ms.bet <- ss.bet / df.bet > ms.bet <- ss.bet / df.bet
Line 140: Line 230:
 > f.cal <- ms.bet / ms.wit > f.cal <- ms.bet / ms.wit
 > f.cal > f.cal
-[1] 11.27699+[1] 7.258158
 > p.val <- pf(f.cal, df1=df.bet, df2=df.wit, lower.tail = F) > p.val <- pf(f.cal, df1=df.bet, df2=df.wit, lower.tail = F)
 > p.val > p.val
-[1] 0.001390984+[1] 0.009215657
 > summary(aov(op$values~op$group)) > summary(aov(op$values~op$group))
             Df Sum Sq Mean Sq F value  Pr(>F)                Df Sum Sq Mean Sq F value  Pr(>F)   
-op$group       1287  1286.  11.28 0.00139 ** +op$group        599   598.  7.258 0.00922 ** 
-Residuals   58   6617   114.                  +Residuals   58   4785    82.                  
 --- ---
 Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Line 155: Line 245:
  
 data:  o and p data:  o and p
-t = -3.3581, df = 58, p-value = 0.001391+t = -2.6941, df = 58, p-value = 0.009216
 alternative hypothesis: true difference in means is not equal to 0 alternative hypothesis: true difference in means is not equal to 0
 95 percent confidence interval: 95 percent confidence interval:
- -14.78163  -3.74076+ -11.012446  -1.623742
 sample estimates: sample estimates:
 mean of x mean of y  mean of x mean of y 
- 97.31987 106.58106 + 96.55324 102.87133 
  
  
Line 169: Line 259:
 > t.cal <- diff/se > t.cal <- diff/se
 > t.cal > t.cal
-[1] -3.358122+[1] -2.694097
 > p.t.cal <- pt(abs(t.cal), df=df.o+df.p, lower.tail = F)*2 > p.t.cal <- pt(abs(t.cal), df=df.o+df.p, lower.tail = F)*2
 > p.t.cal > p.t.cal
-[1] 0.001390984+[1] 0.009215657
 > t.cal^2 > t.cal^2
-[1] 11.27699+[1] 7.258158
 > f.cal > f.cal
-[1] 11.27699+[1] 7.258158
  
 > df.bet > df.bet
Line 183: Line 273:
 [1] 58 [1] 58
 > f.cal > f.cal
-[1] 11.27699 +[1] 7.258158
-+
  
 +
 </code> </code>
  
anova_note/output01.1764946997.txt.gz · Last modified: by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki