User Tools

Site Tools


t-test_summing_up

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
t-test_summing_up [2025/09/18 08:04] – [7] hkimscilt-test_summing_up [2025/09/18 08:45] (current) – [t-test summing up] hkimscil
Line 1: Line 1:
 ====== t-test summing up ====== ====== t-test summing up ======
 <code> <code>
- 
  
 rm(list=ls()) rm(list=ls())
Line 210: Line 209:
 dat <- stack(comb) dat <- stack(comb)
 head(dat) head(dat)
 +tail(dat)
  
 m.tot <- mean(s.all) m.tot <- mean(s.all)
Line 216: Line 216:
  
 ss.tot <- ss(s.all) ss.tot <- ss(s.all)
 +bet.s1 <- (m.tot - m.s1)^2 * length(s1)
 +bet.s2 <- (m.tot - m.s2)^2 * length(s2)
 +ss.bet <- bet.s1 + bet.s2
 ss.s1 <- ss(s1) ss.s1 <- ss(s1)
 ss.s2 <- ss(s2) ss.s2 <- ss(s2)
 +ss.wit <- ss.s1+ss.s2
  
-df.tot <- length(s.all)-1 +ss.tot
-df.s1 <- length(s1)-1 +
-df.s2 <- length(s2)-1 +
- +
-ms.tot <- var(s.all) +
-ms.tot +
-ss.tot/df.tot +
- +
-var(s1) +
-ss.s1 / df.s1 +
- +
-var(s2) +
-ss.s2 / df.s2 +
- +
-ss.b.s1 <- length(s1) * ((m.tot - m.s1)^2) +
-ss.b.s2 <- length(s2) * ((m.tot - m.s1)^2) +
-ss.bet <- ss.b.s1+ss.b.s2+
 ss.bet ss.bet
- 
-ss.wit <- ss.s1 + ss.s2 
 ss.wit ss.wit
 +ss.bet+ss.wit
  
-ss.bet + ss.wit +df.tot <- length(s.all) - 1 
-ss.tot+df.bet <- nlevels(dat$ind) - 1 
 +df.s1 <- length(s1)-1 
 +df.s2 <- length(s2)-1 
 +df.wit <- df.s1 + df.s2
  
-library(dplyr) +df.tot
-df.bet <- length(unique(dat)) - 1 +
-df.bet <- nlevels(dat$ind) - 1 +
-df.wit <- df.s1+df.s2+
 df.bet df.bet
 df.wit df.wit
 df.bet+df.wit df.bet+df.wit
-df.tot + 
 +ss.tot/df.tot 
 +ms.tot <- ss.tot/df.tot
  
 ms.bet <- ss.bet / df.bet ms.bet <- ss.bet / df.bet
 ms.wit <- ss.wit / df.wit ms.wit <- ss.wit / df.wit
-ms.bet 
-ms.wit 
  
 f.cal <- ms.bet / ms.wit f.cal <- ms.bet / ms.wit
 f.cal f.cal
 pf(f.cal, df.bet, df.wit, lower.tail = F) pf(f.cal, df.bet, df.wit, lower.tail = F)
- 
  
 f.test <-  aov(dat$values~ dat$ind, data = dat) f.test <-  aov(dat$values~ dat$ind, data = dat)
Line 273: Line 259:
 t.cal.ts t.cal.ts
  
-this is anova after all. +the above is anova after all. 
  
 m1 <- lm(dat$values~dat$ind, data = dat) m1 <- lm(dat$values~dat$ind, data = dat)
Line 287: Line 273:
 sum.m1$fstatistic[1] sum.m1$fstatistic[1]
 ms.bet/ms.wit ms.bet/ms.wit
- 
 </code> </code>
 ====== t-test summing up output ====== ====== t-test summing up output ======
Line 316: Line 301:
 </WRAP> </WRAP>
  
-==== 2 ====+===== 2 =====
  
 <WRAP group> <WRAP group>
Line 357: Line 342:
 </WRAP> </WRAP>
  
-==== 3 ====+===== 3 =====
 <WRAP group> <WRAP group>
 <WRAP column half> <WRAP column half>
Line 396: Line 381:
 </WRAP> </WRAP>
  
-==== 4 ====+===== 4 =====
 <WRAP group> <WRAP group>
 <WRAP column half> <WRAP column half>
Line 439: Line 424:
 </WRAP> </WRAP>
  
-==== 5 ====+===== 5 =====
 <WRAP group> <WRAP group>
 <WRAP column half> <WRAP column half>
Line 505: Line 490:
 </WRAP> </WRAP>
  
-==== 6 ====+===== 6 =====
 <WRAP group> <WRAP group>
 <WRAP column half> <WRAP column half>
Line 587: Line 572:
 </WRAP> </WRAP>
  
-==== 7 ====+===== 7 =====
 <WRAP group> <WRAP group>
 <WRAP column half> <WRAP column half>
Line 639: Line 624:
  
  
-==== 8 ====+===== 8 t-test and anova =====
 <WRAP group> <WRAP group>
 <WRAP column half> <WRAP column half>
 <code> <code>
- 
 > # 2 샘플 히스토그램을 이용해서 > # 2 샘플 히스토그램을 이용해서
 > # anova 설명하기  > # anova 설명하기 
 > s.all <- c(s1,s2) > s.all <- c(s1,s2)
 > mean(s.all) # 두 집단을 합친  > mean(s.all) # 두 집단을 합친 
-[1] 105.2578+[1] 104.7682
 > # 종속변인의 평균 (아래 히스토 > # 종속변인의 평균 (아래 히스토
 > # 그램에서 검정색). > # 그램에서 검정색).
Line 659: Line 643:
 +        col=c("green", "red"), lwd=2) +        col=c("green", "red"), lwd=2)
  
 +</code>
 +</WRAP>
 +<WRAP column half>
 +.....................................
 +{{:pasted:20250918-081521.png}}
 +</WRAP>
 +</WRAP>
 +
 +===== 9 =====
 +
 +<WRAP group>
 +<WRAP column half>
 +<code>
 > comb <- data.frame(s1,s2) > comb <- data.frame(s1,s2)
 > dat <- stack(comb) > dat <- stack(comb)
 > head(dat) > head(dat)
      values ind      values ind
- 91.92427  s1 +106.26706  s1 
- 95.79303  s1 +101.89180  s1 
-3  90.98791  s1 +3  98.64593  s1 
-100.25380  s1 + 93.82977  s1 
-5  93.19342  s1 +5  80.35249  s1 
- 93.33263  s1+100.47300  s1 
 +> tail(dat) 
 +       values ind 
 +195 111.33398  s2 
 +196 115.99752  s2 
 +197 109.85412  s2 
 +198 126.80207  s2 
 +199  99.13395  s2 
 +200 130.01417  s2
  
 +</code>
 +</WRAP>
 +<WRAP column half>
 +.....................................
 +</WRAP>
 +</WRAP>
 +===== 10 =====
 +<WRAP group>
 +<WRAP column half>
 +<code>
 > m.tot <- mean(s.all) > m.tot <- mean(s.all)
 > m.s1 <- mean(s1) > m.s1 <- mean(s1)
Line 675: Line 690:
  
 > ss.tot <- ss(s.all) > ss.tot <- ss(s.all)
 +> bet.s1 <- (m.tot - m.s1)^2 * length(s1)
 +> bet.s2 <- (m.tot - m.s2)^2 * length(s2)
 +> ss.bet <- bet.s1 + bet.s2
 > ss.s1 <- ss(s1) > ss.s1 <- ss(s1)
 > ss.s2 <- ss(s2) > ss.s2 <- ss(s2)
 +> ss.wit <- ss.s1+ss.s2
  
-> df.tot <- length(s.all)-1 +> ss.tot 
-> df.s1 <- length(s1)-1 +[1] 25203.89
-> df.s2 <- length(s2)-1 +
->  +
-> ms.tot <- var(s.all) +
-> ms.tot +
-[1] 102.7294 +
-> ss.tot/df.tot +
-[1] 102.7294 +
->  +
-> var(s1) +
-[1] 79.10726 +
-> ss.s1 / df.s1 +
-[1] 79.10726 +
->  +
-> var(s2) +
-[1] 78.88246 +
-> ss.s2 / df.s2 +
-[1] 78.88246 +
->  +
-> ss.b.s1 <- length(s1) * ((m.tot - m.s1)^2) +
-> ss.b.s2 <- length(s2) * ((m.tot - m.s1)^2) +
-> ss.bet <- ss.b.s1+ss.b.s2+
 > ss.bet > ss.bet
-[1] 4802.167 +[1] 4219.463
->  +
-> ss.wit <- ss.s1 + ss.s2+
 > ss.wit > ss.wit
-[1] 15640.98+[1] 20984.43 
 +> ss.bet+ss.wit 
 +[1] 25203.89
  
-ss.bet + ss.wit +df.tot <- length(s.all) - 1
-[1] 20443.15 +
-> ss.tot +
-[1] 20443.15 +
->  +
-> library(dplyr) +
-> # df.bet <- length(unique(dat)) - 1+
 > df.bet <- nlevels(dat$ind) - 1 > df.bet <- nlevels(dat$ind) - 1
-> df.wit <- df.s1+df.s2+> df.s1 <- length(s1)-1 
 +> df.s2 <- length(s2)-1 
 +> df.wit <- df.s1 + df.s2 
 +>  
 +> df.tot 
 +[1] 199
 > df.bet > df.bet
 [1] 1 [1] 1
Line 722: Line 719:
 [1] 198 [1] 198
 > df.bet+df.wit > df.bet+df.wit
-[1] 199 
-> df.tot  
 [1] 199 [1] 199
 +
 +</code>
 +</WRAP>
 +<WRAP column half>
 +.............................
 +{{:pasted:20250918-081521.png}}
 +  * ss.between 은 두개의 집단과 그 집단의 평균으로 이루어진 분산에서의 ss값을 말한다.
 +  * 그림에서 녹색선 위에 s1의 원소들이 모여있고
 +  * 붉은색 선위에 s2원소들이 모여 있다고치면
 +  * 이 분산은 그룹간 분산이 (between group variance) 된다. 
 +  * 이를 구하기 위해서 ss.bet의 공식을 사용한다. 
 +  * ss.within의 경우에는 간단히 s1과 s2 집단의 ss값을 구하는 것으로
 +  * 스크립트 초반에 언급된 ss값을 이용해서 구한후 더한다. 
 +
 +  * df.between은 그룹의 숫자에서 1을 뺀 숫자
 +  * df.within은 각 그룹내의 구성원에서 1을 뺀 후, 모두 더한 숫자이다
 +  * df.total은 전체 구성원에서 1을 빼거나, df.bet + df.wit  를 더한 숫자
 +</WRAP>
 +</WRAP>
 +
 +===== 11 =====
 +
 +<WRAP group>
 +<WRAP column half>
 +<code>
 +> ss.tot/df.tot
 +[1] 126.6527
 +> ms.tot <- ss.tot/df.tot
  
 > ms.bet <- ss.bet / df.bet > ms.bet <- ss.bet / df.bet
 > ms.wit <- ss.wit / df.wit > ms.wit <- ss.wit / df.wit
-> ms.bet 
-[1] 4802.167 
-> ms.wit 
-[1] 78.99486 
  
 > f.cal <- ms.bet / ms.wit > f.cal <- ms.bet / ms.wit
 > f.cal > f.cal
-[1] 60.79088+[1] 39.81302
 > pf(f.cal, df.bet, df.wit, lower.tail = F) > pf(f.cal, df.bet, df.wit, lower.tail = F)
-[1] 3.537633e-13 +[1] 1.792613e-09
-+
  
 > f.test <-  aov(dat$values~ dat$ind, data = dat) > f.test <-  aov(dat$values~ dat$ind, data = dat)
Line 744: Line 762:
 > sum.f.test > sum.f.test
              Df Sum Sq Mean Sq F value   Pr(>F)                  Df Sum Sq Mean Sq F value   Pr(>F)    
-dat$ind         4802    4802   60.79 3.54e-13 *** +dat$ind         4219    4219   39.81 1.79e-09 *** 
-Residuals   198  15641      79                     +Residuals   198  20984     106                     
 --- ---
 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 751: Line 769:
  
 > sum.f.test[[1]][1,4] > sum.f.test[[1]][1,4]
-[1] 60.79088+[1] 39.81302
 > sum.f.test[[1]][1,5] > sum.f.test[[1]][1,5]
-[1] 3.537633e-13+[1] 1.792613e-09
 > sqrt(f.cal) > sqrt(f.cal)
-[1] 7.79685+[1] 6.309756
 > t.cal.ts > t.cal.ts
-[1] -7.79685+[1] -6.309756
  
-> # this is anova after all. +> # the above is anova after all. 
  
 +</code>
 +</WRAP>
 +<WRAP column half>
 +.............................
 +  * 위에서 구한 ss 값들을 가지고 분산값을 구할 수 있다 (ms = mean square = variance)
 +  * ms.between은 ss.bet/df.bet 값을 말하는 것으로 그룹이 나누어짐으로써 구할 수 있었던 분산이다. 이 부분은 그룹 때문에 생긴 (treatment때문에 생긴) 분산이다. 
 +  * ms.within은 ss.wit/df.wit 값을 말하는 것으로 그룹의 구성 때문에 구할 수 있었던 ss.between 를 제외한 나머지 ss값을 df.wit값으로 나누어준 값을 말한다. 이 부분이 random 파트이다.
 +  * 이 둘의 비율을 F값이라고 하고, 이는 기본적으로 
 +  * group difference 를 random difference 로 나눈 값을 말하고 이는 
 +  * t-test의 difference/random error와 같은 형태를 갖는다
 +
 +  * 따라서, 분산을 이용해서 구한 F값은 표준편차를 이용해서 구한 t값의 제곱값을 갖게 된다. 
 +</WRAP>
 +</WRAP>
 +
 +===== 12 =====
 +
 +<WRAP group>
 +<WRAP column half>
 +<code>
 > m1 <- lm(dat$values~dat$ind, data = dat) > m1 <- lm(dat$values~dat$ind, data = dat)
 > sum.m1 <- summary(m1) > sum.m1 <- summary(m1)
Line 769: Line 807:
  
 Residuals: Residuals:
-    Min      1Q  Median      3Q     Max  +     Min       1Q   Median       3Q      Max  
--33.566  -5.983   0.021   6.084  21.973 +-31.4177  -5.7058   0.4976   6.2952  29.2586 
  
 Coefficients: Coefficients:
             Estimate Std. Error t value Pr(>|t|)                 Estimate Std. Error t value Pr(>|t|)    
-(Intercept) 100.3577     0.8888 112.915  < 2e-16 *** +(Intercept)  100.175      1.029   97.31  < 2e-16 *** 
-dat$inds2     9.8002     1.2569   7.797 3.54e-13 ***+dat$inds2      9.186      1.456    6.31 1.79e-09 ***
 --- ---
 Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
  
-Residual standard error: 8.888 on 198 degrees of freedom +Residual standard error: 10.29 on 198 degrees of freedom 
-Multiple R-squared:  0.2349, Adjusted R-squared:  0.231  +Multiple R-squared:  0.1674, Adjusted R-squared:  0.1632  
-F-statistic: 60.79 on 1 and 198 DF,  p-value: 3.538e-13+F-statistic: 39.81 on 1 and 198 DF,  p-value: 1.793e-09
  
  
 > sum.m1$r.square > sum.m1$r.square
-[1] 0.2349035+[1] 0.1674131
 > ss.bet # 독립변인인 s1, s2의 그룹 > ss.bet # 독립변인인 s1, s2의 그룹
-[1] 4802.167+[1] 4219.463
 > # 구분으로 설명된 ss.tot 중의 일부 > # 구분으로 설명된 ss.tot 중의 일부
 > ss.tot # y 전체의 uncertainty > ss.tot # y 전체의 uncertainty
-[1] 20443.15+[1] 25203.89
 > ss.bet/ss.tot > ss.bet/ss.tot
-[1] 0.2349035+[1] 0.1674131
  
 > sum.m1$fstatistic[1] > sum.m1$fstatistic[1]
    value     value 
-60.79088 +39.81302 
 > ms.bet/ms.wit > ms.bet/ms.wit
-[1] 60.79088+[1] 39.81302
  
  
Line 805: Line 843:
 <WRAP column half> <WRAP column half>
 ................................ ................................
 +  * ss.tot 은 s1그룹과 s2그룹의 값을 한줄에 배열하여 구하는 종속변인의 (dat$values) ss값을 말한다. 즉, 독립변이 없을 때의 종속변인의 uncertainty를 말한다. 
 +  * ss.bet은 독립변인이 고려됨으로써 설명된 종속부분의 일부를 말한다. 
 +  * ss.tot = ss.bet + ss.wit
 +  * total uncertainty (a) = treatment effect (b) + random effect 
 +  * b/a를 R square값이라고 부른다. 
 </WRAP> </WRAP>
 </WRAP> </WRAP>
  
  
t-test_summing_up.1758150276.txt.gz · Last modified: by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki