R/연습문제 풀이

[R] 기술통계 / 범주화 / 교육 방법에 따른 시험 성적 차이 검정

연정양 2023. 1. 17.

#문제1. MASS패키지에 있는 Animals 데이터 셋에 대해
#       R의 기본 함수를 이용하여 BODY컬럼 대상 기술통계량 구하기
library(MASS)

###1-1 Animals 데이터 셋 구조 보기 
#구조
str(Animals)

''''data.frame':	28 obs. of  2 variables:
 $ body : num  1.35 465 36.33 27.66 1.04 ...
 $ brain: num  8.1 423 119.5 115 5.5 ...'''
 
#내용 확인 
head(Animals)

###1-2 요약통계량
summary(Animals$body)
'''    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
    0.02     3.10    53.83  4278.44   479.00 87000.00 '''

###1-3 평균 
mean(Animals$body)
#4278.439

###1-4 표준편차 
sd(Animals$body)
#16480.49

###1-5 Animals 데이터 셋의 빈도수 구하기
table(Animals$body, Animals$brain)



#문제 2. iris데이터를 이용하여 5겹 3회 반복하는 교차검정 데이터 샘플링
library(cvTools)

###교차 데이터 셋 생성
cross <- cvFolds(nrow(iris), K = 5, R = 3, type="random")

###교차 데이터 셋 구조 보기
str(cross)
table(cross$which)

###subset 데이터 참조하기
cross$subset[cross$which == 1, 3]
cross$subset[cross$which == 2, 2]
cross$subset[cross$which == 5, 3]

###데이터프레임 관측치 적용
R = 1:3
K = 1:5
for(r in R){
  cat('R=', r, '\n')
  for(i in K){
  datas_idx <- cross$subsets[cross$which == i, r]
  cat('K = ', i, '검정데이터 \n')
  print(iris[datas_idx, ])
  
  cat('K = ', i, '훈련데이터 \n')
  print(iris[-datas_idx, ])
  }
}

#문제3. descriptive.csv파일내 데이터 data변수에 담고 기술통계량
data <- read.csv("descriptive.csv")

#3-1 cost컬럼 내 데이터에서 1이상 11이하의 데이터만 추출,평균
data <- subset(data, data$cost >= 1 & data$cost <= 11)
x <- data$cost
mean(x)
#5.360558

#3-2 1번에서 추출한 데이터를 내림차순 정렬 후 첫 10줄 데이터 보이기
head(sort(x, decreasing = TRUE), 10)
#7.9 7.9 7.7 7.7 7.7 7.7 7.2 7.2 7.1 7.1


#3-3 1번에서 추출한 데이터에서 3사분위수 구하기
quantile(x, 3/4)
#6.2 


#3-4 cost2 컬럼 생성하여 1이상 4미만 데이터는 1,
#    4이상 8미만 데이터는2, 8이상 데이터는 3으로 범주화
#    첫 10줄 데이터 보이기

#범주화
data$cost2[data$cost >= 1 & data$cost < 4] <-1
data$cost2[data$cost >= 4 & data$cost < 8] <-2
data$cost2[data$cost >= 8] <- 3
#첫 10줄 데이터
head(data, 10)

#3-5 4번의 cost2 컬럼 데이터 파이 그래프로 시각화
pie(table(data$cost2))

#문항 4. twomethod2.csv 내 데이터 셋 이용하여 
#        교육방법에 따른 시험성적에 차이 있는지 검정
#귀무가설 : 교육방법에 따른 시험성적에 차이가 없다.
#대립가설 : 교육방법에 따른 시험성적에 차이가 있다. 

#검정 방법: 방법(명목) -> 시험 성적(비율)
#가설 검정(아래)
#p-value가 0.05보다 작다. (대립가설 채택)
#검정 결과: 교육 방법에 따라 시험 성적에 차이가 있다. 
#파일 가져오기
setwd("C:/R work/")
data2 <- read.csv("twomethod2.csv", header = TRUE)
head(data2)
summary(data2)

#subset 작성 및 데이터 전처리
x1 <- subset(data2, !is.na(data2$score))
x1

#데이터 분리
m1 <- subset(x1, x1$method == 1)
m2 <- subset(x1, x1$method == 2)

#방법에서 성적 추출
s1 <- m1$score
s2 <- m2$score

#기술 통계량
summary(s1)
summary(s2)

#t.test 함수 사용 
t.test(s1, s2)
#p-value가 0.05보다 작다. (대립가설 채택)
#검정 결과: 교육 방법에 따라 시험 성적에 차이가 있다.

##단측 검정까지 해 줘야 어떤게 더 큰지 확인할 수 있음!
t.test(s1, s2, paired = TRUE, 
       alter = "greater",
       conf.int = TRUE, conf.level = 0.95)

 

댓글