59doit

[ R ] 탐색적데이터 예제 평가(6) 본문

Q.

[ R ] 탐색적데이터 예제 평가(6)

yul_S2 2022. 11. 25. 09:31
반응형

 1. MASS 패키지에 있는 Animals 데이터 셋에 대해 R의  기본 함수를 이용하여 body컬럼을 대상으로 다음의 기술통계량을 구하시오. 코드와 답을 기재하세요

#1) Animals 데이터 셋 구조 보기
#2) 요약통계량
#3) 평균
#4) 표준편차

#5) Animals 데이터 셋의 빈도수 구하기

 

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

library(MASS)
data(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 ...

 

(2) 요약통계량

summary(Animals$body)
# Min.  1st Qu.   Median     Mean  3rd Qu. Max. 
# 0.02     3.10    53.83  4278.44   479.00 87000.00 

 

(3) 평균

mean(Animals$body)
# 4278.439

 

(4) 표준편차

sd(Animals$body)
# 16480.49

 

(5) 검정결과 해석

table(Animals$body)
table(Animals$brain)

# > table(Animals$body)
# 0.023  0.12 0.122  0.28  1.04  1.35   2.5   3.3 
# 1     1     1     1     1     1     1     1 
# 6.8    10 27.66    35 36.33 52.16  55.5    62 
# 1     1     1     1     1     1     1     1 
# 100 187.1   192   207   465   521   529  2547 
# 1     1     1     1     1     1     1     1 
# 6654  9400 11700 87000 
# 1     1     1     1 

# > table(Animals$brain)
# 0.4     1   1.9     3   5.5   8.1  12.1  25.6 
# 1     1     1     1     1     1     1     1 
# 50    56    70   115 119.5 154.5   157   175 
# 1     1     1     2     1     1     1     1 
# 179   180   406   419   423   440   655   680 
# 1     1     1     1     1     1     1     1 
# 1320  4603  5712 
# 1     1     1 


install.packages("prettyR")
library(prettyR)
freq(Animals)

 

 

 

 

 2. iris데이터를 이용하여 5겹 3회 반복하는 교차검정  데이터를 샘플링 하시오.

install.packages("cvTools")
library(cvTools)
data(iris)

cross <- cvFolds(nrow(iris), K=5, R=3) 
K=1:5
R=1:3
cross
table(cross$which)
# 1  2  3  4  5 
#30 30 30 30 30  

for(r in R){
  cat('R=',r,'회\n')
  for(k in K){
    datas_idx <- cross$subsets[cross$which==k,r]
    cat('K=',k,'검정데이터 \n')
    print(iris[datas_idx,])
    cat('K=',k,'훈련데이터 \n')
    print(iris[-datas_idx,])
  }
}
틀림

install.packages("cvTools")
library(cvTools)
cross <- cvFolds(nrow(iris), K=5, R=3) 
cross


 

 

 

 

 3. descriptive.csv 파일내 데이터를 data변수에 담고 다음의 기술통계량을 구하시오.

descriptive.csv
0.01MB

 


# 1) Cost 컬럼 내 데이터에서 1이상 11이하의 데이터만 추출하여 평균을 구하시오.
# 2) 1)번에서 추출한 데이터를 내림차순으로 정렬한 후 첫 10줄의 데이터를 보이시오
# 3) 1)번에서 추출한 데이터에서 3사분위수를 구하시오.
# 4) Cost2 컬럼을 생성하여 1이상 4미만의 데이터는 1로, 4이상 8미만의 데이터는 2로 8이상의 데이터는 3으로 범주화하여 저장하고 첫 10줄의 데이터를 보이시오.
# 5) 4)번에서 생성한 Cost2 컬럼내 데이터를 이용하여 파이 그래프로 시각화 하시오.

 

library(dplyr)
library(plyr)
data <- read.csv('part3/descriptive.csv',header = T);data
str(data)

 

(1) Cost 컬럼 내 데이터에서 1이상 11이하의 데이터만 추출하여 평균을 구하시오.

data%>%filter(cost>=1&cost<=11)%>%summarise(mean(cost,na.rm=T))
#5.360558
data <- subset (data, cost >= 1 & cost <= 11)
data
x <- data$cost
mean(x)
#5.360558

(2) 

data%>%filter(cost>=1&cost<=11)%>%arrange(-cost)%>%head(10)
# resident gender age level cost type survey pass
# 1         5      2  45     3  7.9    1      3    1
# 2         5      2  45     3  7.9    1      2    1
# 3        NA      1  47     3  7.7    2     NA    2
# 4        NA      2  56     3  7.7    2      2    1
# 5         5      2  61     1  7.7    1      2    2
# 6         5      2  55     1  7.7    1      1    2
# 7         3      1  60     1  7.2    1     NA    2
# 8         3      1  61     3  7.2    1      3    2
# 9         3      1  64     1  7.1    1      3    1
# 10        1      1  45    NA  7.1    1     NA    2

 

 

 

(3) 

data%>%filter(cost>=1&cost<=11)%>%arrange(-cost)%>%summarise(quantile(cost, 3/4))
# 6.2
quantile(x,3/4)
# 75% 
# 6.2 

 

(4) 

cost_range = c(1, 4, 8, max(data$cost,na.rm=T)+1)
data%>%mutate(cost2=cut(cost, cost_range, right=F, labels = c("1", "2", "3")))%>%head(10)
# resident gender age level  cost type survey pass cost2
# 1         1      1  50     1   5.1    1      1    2     2
# 2         2      1  54     2   4.2    1      2    2     2
# 3        NA      1  62     2   4.7    1      1    1     2
# 4         4      2  50    NA   3.5    1      4    1     1
# 5         5      1  51     1   5.0    1      3    1     2
# 6         3      1  55     2   5.4    1      3   NA     2
# 7         2      2  56     1   4.1    1     NA    2     2
# 8         5      1  49     2 675.0   NA     NA    2     3
# 9        NA      1  49     1   4.4    1     NA    2     2
# 10        2      1  49     2   4.9    1      1    1     2
data
data$cost2[data$cost >= 1 & data$cost < 4] <- 1
data$cost2[data$cost >= 4 & data$cost < 8] <- 2
data$cost2[data$cost >= 8 ] <- 3
data
head(data,10)

 

(5) 

data%>%mutate(cost2=cut(cost, cost_range, right=F, labels = c("1", "2", "3")))%>%dplyr::select(cost2)%>%table()%>%pie()
pie(table(data$cost2))

 

 

 4. twomethod2.csv 내 데이터 셋을 이용하여 교육방법(method)에  따른 시험성적(score)에 차이가 있는지 검정하시오.

twomethod2.csv
0.00MB

 

 

 

#  1) 결측치를 제거하여 데이터 전처리 하시오
#  2) 가설 설정
#  3) 적합한 검정 방법 선택
#  4) 가설 검정
#  5) 검정 결과

 

(1) 

method <- read.csv('twomethod2.csv',header = T)
method <- na.omit(method);method
a <- subset(method,method==1)
b <- subset(method,method==2)
a1 <- a$score
b1 <- b$score
length(a1)
length(b1)
mean(a1)
mean(b1)

 

(2) 

H0:교육방법에 따른 두 집단간 시험성적(score)의 평균에 차이가 없다.
H1:교육방법에 따른 두 집단간 시험성적(score)의 평균에 차이가 있다.

 

(3) 

교육전 교육후 성적에 대한 차이 여부를 검정하는것이므로 
두 집단 평균 차이 검정(독립 표본T검정)을 수행한다.

 

(4) 

#동질성 검정
var.test(a1,b1)
#p-value =0.9951로 동질성 분포와 차이가 없다. -> 모수 검정 방법 수행 > T검정

#양측 검정
t.test(a1,b1)
#p-value = 6.57e-07로 두집단간 차이가 있다.

 

(5) 

양측 검정을 실시한 결과 유의수준 0.05에서 귀무가설이 기각되었다.
# 따라서 "교육방법에 따른 두 집단간 시험성적의 평균에 차이가 있다." 라고 말할 수 있다.

# 단측 검정을 실시한 결과 (method=2)교육방법의 시험성적 평균이 (method=1)교육방법의 시험성적 평균보다 더 높은 것으로 나타났다.
# 결론 ; 검정통계량 / 유의확률 
#  t = t = -5.832, df = 42.687, / p-value = 6.57e-07
# 유의수준 0.05보다작다 -> 귀무가설이 기각 -> 교육방법에 따른 평균에 차이가 있다.

# 즉 method=2 교육방법이 효과가 더 좋은 것으로 분석된다.

 

반응형

'Q.' 카테고리의 다른 글

[ R ] 다중회귀분석 연습문제 ch15  (0) 2022.11.27
[ R ] ch14 연습문제  (0) 2022.11.27
[ R ] 교차분석과 카이제곱 연습문제 ch12  (0) 2022.11.24
[ R ] ch 13 연습문제  (0) 2022.11.23
[ R ] 연습문제 (6) 6-> ch7  (0) 2022.11.22
Comments