User Tools

Site Tools


anova_note:code01

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
anova_note:code01 [2025/12/07 10:55] hkimscilanova_note:code01 [2025/12/09 23:16] (current) hkimscil
Line 19: Line 19:
 df.p <- n.p - 1 df.p <- n.p - 1
 diff <- m.o - m.p diff <- m.o - m.p
 +m.o
 +m.p
 +diff
 pv <- (ss(o)+ss(p))/(df.o+df.p) pv <- (ss(o)+ss(p))/(df.o+df.p)
 se <- sqrt((pv/n.o) + (pv/n.p)) se <- sqrt((pv/n.o) + (pv/n.p))
Line 24: Line 27:
 t.cal t.cal
 pt(t.cal, df.o+df.p) * 2 pt(t.cal, df.o+df.p) * 2
-t.out$statistic 
-t.out$p.value 
  
-t.out <- t.test(o,p, var.equal=T)+t.out <- t.test(o, p, var.equal=T)
 t.out t.out
-</code>+t.out$statistic 
 +t.out$p.value
  
-<code> 
 # #
 comb <- list(o = o, p = p) comb <- list(o = o, p = p)
 +o
 +p
 +comb
 op <- stack(comb) op <- stack(comb)
-head(op)+op
 colnames(op)[1] <- "values" colnames(op)[1] <- "values"
 colnames(op)[2] <- "group" colnames(op)[2] <- "group"
 op$group <- factor(op$group) op$group <- factor(op$group)
 head(op) head(op)
 +tail(op)
 boxplot(op$values~op$group) boxplot(op$values~op$group)
  
-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",
         yaxt="n", xlab="value", horizontal=TRUE,         yaxt="n", xlab="value", horizontal=TRUE,
Line 54: Line 58:
 m.o <- mean(o) m.o <- mean(o)
 m.p <- mean(p) m.p <- mean(p)
 +m.tot
 +m.o 
 +m.p 
  
 min.x <- min(op$values) min.x <- min(op$values)
Line 66: Line 73:
 abline(v=m.p, col="blue", lwd=3) abline(v=m.p, col="blue", lwd=3)
 abline(v=m.tot, col='red', lwd=3) abline(v=m.tot, col='red', lwd=3)
-</code> 
  
-<code> 
-hist(o, breaks=br,  
-     col=rgb(1,1,1,.5)) 
-abline(v=m.o, col="black", lwd=3) 
-abline(v=m.tot, col='red', lwd=3) 
- 
-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) 
-</code> 
- 
-<code> 
 hist(o, breaks=br,  hist(o, breaks=br, 
      col=rgb(1,1,1,.5))      col=rgb(1,1,1,.5))
Line 92: Line 85:
 var(op$values) var(op$values)
 ss.tot ss.tot
-</code> 
- 
-<code> 
 m.tot m.tot
 m.o m.o
 m.p m.p
 +ss.o <- ss(o)
 +ss.p <- ss(p)
 ss.o ss.o
 ss.p ss.p
  
 hist(o, breaks=br,  hist(o, breaks=br, 
-     col=rgb(1,1,1,.5))+     col=rgb(1,1,1,.5),  
 +     main = paste0("o mean = ", round(m.o,2),  
 +                   "\n", "tot mean = ", round(m.tot,2),  
 +                   ""))
 abline(v=m.o, col="black", lwd=3) abline(v=m.o, col="black", lwd=3)
-hist(padd=T, breaks=br, +abline(v=m.totcol='red', lwd=3) 
-     col=rgb(.5,1,1,.5))+ 
 +hist(p, breaks=br, 
 +     col=rgb(.5,1,1,.5)
 +     main = paste0("p mean = ", round(m.p,2),  
 +                   "\n", "tot mean = ", round(m.tot,2),  
 +                   ""    )
 abline(v=m.p, col="blue", lwd=3) abline(v=m.p, col="blue", lwd=3)
 abline(v=m.tot, col='red', lwd=3) abline(v=m.tot, col='red', lwd=3)
  
-ss.bet <- n.o*(m.tot-m.o)^2 + n.p*(m.tot-m.p)^2 +n.o*(m.tot-m.o)^2   # m.tot 에서 o그룹공통 까지의 거리를 제곱해서 모두 더한 값 
-ss.bet +                    # 위 그림에서 빨간색 선에서 검은색 선까지의 거리를  
-</code>+                    # 제곱해서 모두 더한 값 
 +n.p*(m.tot-m.p)^2   # m.tot 에서 p그룹공통 까지의 거리를 제곱해서 모두 더한 값 
 +                    # 위 그림에서 빨간색 선에서 파란색 선까지의  
 +                    # 거리를 제곱해서 모두 더한 값 
 +ss.bet <- n.o*(m.tot-m.o)^2 +   # 이것은 그룹 (IV, 독립변인) 때문에  
 +            n.p*(m.tot-m.p)^2     # 생긴 그룹 간 차이이다 
 +ss.bet            # 따라서 이것을 SS between group이라고 부른다 
 + 
 + 
 +# ss within group 
  
-<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="black", lwd=3) abline(v=m.o, col="black", lwd=3)
-ss.o <- ss(o) +ss.o <- ss(o)   # o집단의 평균인 검은색 선에서 개인 점수까지의  
-ss.o+                # 거리는 (오차는) 독립변인과 상관없이 랜덤하게  
 +                # 나타나는 것 
 +ss.o            # o집단의 것을 ss.o라고 부른다
  
 hist(p, breaks=br, hist(p, 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.p, col="blue", lwd=3)
-ss.p <- ss(p) +ss.p <- ss(p)   # p집단도 마찬가지이다. 이 집단 내의 sum of square값은  
-ss.p+                # p 집단의 공통특징인 평균에서 개인점수가 랜덤하게  
 +ss.p            # 나타나는 것이고, 이것을 sum of square p라고 부른다
  
-ss.wit <- ss.o+ss.p +ss.wit <- ss.o + ss.p # 위 각 집단 내부의 ss값을 합한 값을 ss within group 
 +                      # 이라고 부른다 
 + 
 +# 이 둘은 각 그룹의 평균을 중심으로  
 +# random 하게 나타나는 평균에서의 거리이다 (에러). 
 +# 이것을 sum of square within group 이라고 부른다 
 +# 이것을 우리는 random difference라고 불러도 되겠다
 ss.wit ss.wit
-</code> 
  
-<code>+# 반면에 ss between group은 IV의 효과 때문에 나타나는 
 +# 것이다. 우리는 이것을 group difference라고 부른다.
 ss.bet ss.bet
-ss.wit +ss.bet + ss.wit
-ss.bet+ss.wit +
 ss.tot ss.tot
-</code> 
  
-<code>+# degrees of freedom
 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 <- (n.o-1)+(n.p-1)+df.wit <- (n.o-1) + (n.p-1)
 df.tot df.tot
 df.bet df.bet
 df.wit df.wit
-</code> 
  
-<code>+# variance of total, between group, and within group
 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 157: Line 170:
 p.val p.val
 summary(aov(op$values~op$group)) summary(aov(op$values~op$group))
-t.test(o,p, var.equal = T) 
  
-diff <- m.o - m.p +# t.cal 값을 확인해보면 
-ssp <- (ss.o + ss.p) / (df.+ df.p+t.test(o,p, var.equal = T# 혹은 
-se <- sqrt(ssp/n.o+ssp/n.p+t.cal <- diff/se 
-t.cal <- diff/se +
-t.cal+
 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
 +
 +# 하나는 sd 를 unit으로 계산한 값이고 (t.cal)
 +# 다른 하나는 variance를 unit으로 계산한 값이지만 
 +# 원리는 같다. 
 t.cal^2 t.cal^2
 f.cal f.cal
- 
-df.bet 
-df.wit 
-f.cal 
- 
- 
 </code> </code>
anova_note/code01.txt · Last modified: by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki