본문 바로가기

빅데이터 대학원/2023-1. 빅데이터 분석론

2023-1. 빅데이터 분석론 2주차. R and Basic Statistical Testing

반응형

이번 수업은 R studio 활용하여 통계를 진행했다. 과거 SPSS, SAS 등을 많이 사용했으나, 최근 범용성이 뛰어난 오픈 라이브러리(R, 파이썬)을 대부분 사용한다.

 

1. t-statistics (t검정)

 - 정의 : 모집단의 분산이나 표준편차를 알지 못할 때, 모집단을 대표하는 표본으로부터 추정된 분산이나 표준편차를 가지고 검정하는 방법으로 “두 모집단의 평균간의 차이는 없다”라는 귀무가설과 “두 모집단의 평균 간에 차이가 있다”라는 대립가설 중에 하나를 선택할 수 있도록 하는 통계적 검정방법이다.

  ※ p-value < 0.05 → 귀무가설을 기각한다. (두 모집단의 평균은 통계적으로 같지 않다.) 

 

 - rnorm : 정규분포로부터 랜덤 추출

  · a <- rnorm(number, mean, sd)

    number : 표본 개수

    mean : 평균

    sd(Standard Deviation) : 표준편차

 

 

#1. 연습문제 1

a <- rnorm(100,175,2)		#평균 175, 표준편차 2인 정규분포에서 랜덤으로 100개를 추출한다.
b <- rnorm(100,173,2)		#평균 173, 표준편차 2인 정규분포에서 랜덤으로 100개를 추출한다.
t.test(a,b)			# a, b의 평균을 t.test 검정
data:  a and b
t = 7.4724, df = 197.76, p-value = 2.483e-12
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 1.615701 2.774241
sample estimates:
mean of x mean of y 
 175.2164  173.0215

풀이

 - t = 7.4724

 - p-value =  2.483e-12 (소수점 아래 0이 12개 있고 그 다음 2483...인 수)

  p-value가 0.05(95% 유의수준)보다 작으므로, 귀무가설을 기각한다. (a와 b는 통계적으로 같지 않다)

 

#2. 연습문제 2

c <- rnorm (100,175,10)		#평균 175, 표준편차 10인 정규분포에서 랜덤으로 100개를 추출한다.
d <- rnorm (100,173,10)		#평균 173, 표준편차 10인 정규분포에서 랜덤으로 100개를 추출한다.
t.test(c,d)			# c, d의 평균을 t.test 검정
data:  c and d
t = 2.1959, df = 196.39, p-value = 0.02927
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 0.3026379 5.6358376
sample estimates:
mean of x mean of y 
 176.3093  173.3401

풀이

 - t = 2.1959

 - p-value = 0.02927

 - p-value < 0.05 이므로, 귀무가설을 기각한다. (c와 d의 평균은 유의수준 95%에서 통계적으로 같지 않다.)

 

boxplot를 통해 c, d의 표준편차가 큰 것을 한 눈에 확인할 수 있다.

 

※ 연습문제 1, 2를 통해 알 수 있는 것

1. 표준편차의 차이가 클수록 두 그룹의 차이를 두 그룹의 차이를 확인하기 어려울 수 있다.

 → 변수가 의미를 가지기 위해선 두 그룹이 차이가 있어야하고, 표준편차가 작아야 한다.

   ※ 새로운 관점을 도입할 때는 t.test가 기본이다.

 

 

2. t-test의 종류

1. 일반 two sample t-test

 - 정의 : 서로 다른 group 1과 group 2를 비교 (가정 : 두 그룹의 분산이 같아야 한다)

 - 형태 : t.test(a,b)

 

2. Paired t-test

  - 정의 : 쌍을 이룬 두 변수의 차이를 보는 검정

  - 한 집단을 대상으로 어떤 개입의 효과를 보기 위해 개입 전/후 값을 비교하여 개입의 효과를 측정하는 것

   예) A : 운동 전 → 운동 후

        B : 운동 전 → 운동 후

        C : 운동 전 → 운동 후 ...

  - 형태 : t.test(x ~ g, data, paired=TRUE)

   · x : 값, ~ : by. g : group, data : 데이터의 위치

 

※ 1) 어떤 t.test를 사용할 것인가?, 2) 데이터가 어떤 형식인가? 확인하는 것이 중요하다.

 

 

#3. R studio 내 sleep 데이터

 - sleep 데이터 : 수면제에 관한 신약 데이터로, 신약을 먹으면 얼마나 더 오래 잠에 드는지에 대한 데이터

str(sleep)
t.test(extra ~ group,sleep,paired=TRUE)
> str(sleep)
'data.frame':	20 obs. of  3 variables:
 $ extra: num  0.7 -1.6 -0.2 -1.2 -0.1 3.4 3.7 0.8 0 2 ...
 $ group: Factor w/ 2 levels "1","2": 1 1 1 1 1 1 1 1 1 1 ...
 $ ID   : Factor w/ 10 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...
> t.test(extra ~ group,sleep,paired=TRUE)

	Paired t-test

data:  extra by group
t = -4.0621, df = 9, p-value = 0.002833
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -2.4598858 -0.7001142
sample estimates:
mean of the differences 
                  -1.58

풀이

str(sleep)

 - 20 obs. of 3 variables : 20개의 데이터, 3개의 변수(extra, group, ID)

   · extra : number (값, 몇시간 더 잤는지)

   · group, ID : factor (그룹으로 되어있음, 숫자 1, 2 자체의 의미를 가지고 있지 않음,

     예) 1: 남자, 2 : 여자     (O)

          1보다 2가 2배 크다 (X)

 - two-paird t.test 사용 : 신약 복용 전후 비교

 - p-value : 0.002833 < 0.05 → 귀무가설 기각 (두 약의 효과의 차이가 있다.)

  · 귀무가설 : a = b (t = a-b)

  · t(a-b) = -4.0621 < 0 이기 때문에, b의 수면시간이 더 길다.(↔ b의 신약 효과가 있다)

 

 

#4. 연습문제. 16명의 학생들의 운동 전후의 몸무게 차이는 있는지를 검정하라. (ttest1.csv)

 - 운동 전후 → two-sample t-test 활용

data1 <- read.csv("C:/ttest1.csv")                     #파일 불러오기
str(data1)				               #파일 구조 확인하기
t.test(data1$before,data1$after,paired=TRUE)           #before, after 간 차이 검정 by paired t.test
> data1 <- read.csv("C:/ttest1.csv")
> str(data1)
'data.frame':	15 obs. of  3 variables:
 $ pt    : int  1 2 3 4 5 6 7 8 9 10 ...
 $ before: int  272 160 220 226 242 186 266 206 318 294 ...
 $ after : int  276 146 283 238 288 145 190 236 244 258 ...
> t.test(data1$before,data1$after,paired=TRUE)

	Paired t-test

data:  data1$before and data1$after
t = 1.7703, df = 14, p-value = 0.09844
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -4.484788 46.884788
sample estimates:
mean of the differences 
                   21.2

풀이

 - p-value : 0.09844 > 0.05 이므로 귀무가설을 채택한다.

   (before와 after는 유의확률 95%로 통계적으로 같다.)

 - 운동 전 후 몸무게 차이는 통계적으로 없다.

 

 

#5. 연습문제. 그룹1과 그룹2 사이에 몸무게 차이가 있는지 검정하라. (ttest2.csv)

data2 <- read.csv("C:/ttest2.csv")
str(data2)
t.test(data2$weight ~ data2$group)
t.test(weight ~ group,data2)
> data2 <- read.csv("C:/ttest2.csv")
> str(data2)
'data.frame':	30 obs. of  2 variables:
 $ group : int  1 1 1 1 1 2 2 2 2 2 ...
 $ weight: num  6.9 7.6 7.3 7.6 6.8 6.4 6.7 5.4 8.2 5.3 ...
> t.test(data2$weight ~ data2$group)

	Welch Two Sample t-test

data:  data2$weight by data2$group
t = 2.4744, df = 26.963, p-value = 0.01993
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 0.1627427 1.7439239
sample estimates:
mean in group 1 mean in group 2 
       7.280000        6.326667

 풀이

 - data2에 있는 정보를 확인하기 위한 두 가지 방법  · t.test(data2$weight ~ data2$group) ...................... $ 사용
  · t.test(weight ~ group,data2) ................................. , 원하는 데이터명 입력

 - p-value = 0.01993 < 0.05 이므로 귀무가설을 기각한다.

 - 그룹1과 그룹2 사이의 몸무게 차이는 존재한다.

 

 

#6. 연습문제. Bank Data에서 파산 기업과 아닌 기업을 구분하기 위한 재무제표 상의 데이터를 찾아보시오(bank.csv)

bank <- read.csv("C:/bank.csv")
str(bank)
t.test(R1 ~ D,bank)

 - D : 0 (부도), 1 (건전) => Gruop

 - R1 ~ R24 → 값

 → t.test(R1 .... R24 ~ D, bank)의 p-value 확인

> bank <- read.csv("C:/bank.csv")
> str(bank)
'data.frame':	132 obs. of  27 variables:
 $ NO : int  1 2 3 4 5 6 7 8 9 10 ...
 $ D  : int  0 0 0 0 0 0 0 0 0 0 ...
 $ YR : int  78 77 72 80 81 70 76 77 73 71 ...
 $ R1 : num  0.23 0.19 0.07 0.07 0.09 0.24 0.08 0.1 0.16 0.16 ...
 $ R2 : num  0.08 0.07 0.02 0.03 0.02 0.07 0.04 0.02 0.09 0.08 ...
 $ R3 : num  0.02 0.09 0.03 0.04 0.03 0.14 0.02 0.02 0.07 0.06 ...
 $ R4 : num  0.03 0.12 0.05 0.04 0.04 0.22 0.03 0.04 0.1 0.08 ...
 $ R5 : num  0.46 0.02 0.06 0.04 0.06 0.1 0.3 -0.05 0.1 0.03 ...
 $ R6 : num  0.12 0.02 0.1 0.06 0.08 0.18 0.13 -0.06 0.08 0.02 ...
 $ R7 : num  0.19 0.03 0.14 0.06 0.11 0.29 0.21 -0.09 0.11 0.03 ...
 $ R8 : num  10.36 3.13 2.41 5.55 2.85 ...
 $ R9 : num  1.17 1.73 1.36 1.13 1.88 1.37 0.82 1.17 1.64 1.58 ...
 $ R10: num  0.4 0.6 0.41 0.44 0.42 0.43 0.42 0.24 0.91 0.75 ...
 $ R11: num  0.1 0.78 0.66 0.58 0.62 0.79 0.18 0.27 0.72 0.55 ...
 $ R12: num  0.14 0.63 0.7 0.57 0.46 0.92 0.36 0.37 0.62 0.47 ...
 $ R13: num  0.13 0.05 -0.01 -0.02 0.01 0.03 0.03 -0.07 0.04 0.01 ...
 $ R14: num  0.03 0.06 -0.02 -0.02 0.02 0.06 0.01 -0.07 0.03 0 ...
 $ R15: num  0.05 0.09 -0.03 -0.02 0.02 0.1 0.02 -0.12 0.05 0.01 ...
 $ R16: num  0.57 0.12 0.02 0.01 0.07 0.06 0.15 -0.04 0.12 0.08 ...
 $ R17: num  0.15 0.16 0.02 0.02 0.1 0.11 0.06 -0.05 0.09 0.06 ...
 $ R18: num  0.23 0.22 0.04 0.02 0.14 0.18 0.1 -0.08 0.13 0.08 ...
 $ R19: num  3.56 3.78 13.29 5.36 7.74 ...
 $ R20: num  0.26 1.29 1.61 1.3 1.48 1.82 0.42 1.15 0.79 0.74 ...
 $ R21: num  1.55 1.4 1.43 1.12 1.41 1.6 1.67 1.6 1.4 1.35 ...
 $ R22: num  0.43 0.06 0.03 -0.06 0.03 0.06 0.12 -0.05 0.12 0.09 ...
 $ R23: num  0.11 0.07 0.05 -0.08 0.04 0.11 0.05 -0.06 0.09 0.06 ...
 $ R24: num  0.17 0.1 0.07 -0.09 0.06 0.18 0.09 -0.09 0.13 0.09 ...

 

반응형