전산통계학, 2018 중간고사

코딩 공부/R-전산 통계학 2020. 10. 20. 08:47
반응형

해당 답에 있는 이름은 지정되어 있는 답안이 아닌,

다양한 여러가지의 답들 중에 가장 깔끔한 답을 적어주셨던 당시의 선배님들 이름이니, 따로 크게 연연해하지 않으시길 바랍니다.


1번) 문제는 2개 입니다,

x를 원소 1~121로 들어가는 11행 11열 행렬로 설정하고, 행렬에서 "부모"라는 글자를 원소를 0으로 바꿔줌으로써 볼 수 있게 하는 프로그램을 만드세요
다음은 "모에서 ㅁ의 내부에 있는 원소들에 대하여" 2로 나눠진다면 원소를 2로, 나눠지지 않는다면 원소를 1로 바꿔주세요

(각각 5점씩)

# 1
x=matrix(1:121,nrow=11,ncol=11)

SUN = function(x){
  for(i in 1:nrow(x)){
    for(j in 1:ncol(x)){
      if(j==1 & i<6) x[i,j]=0
      if(j==5 & i<6) x[i,j]=0
      if(j==7 & i<6) x[i,j]=0
      if(j==11 & i<6) x[i,j]=0
      if(i==3 & j<6) x[i,j]=0
      if(i==5 & j<6) x[i,j]=0
      if(i==7 & j<6) x[i,j]=0
      if(i==1 & j>6) x[i,j]=0
      if(i==5 & j>6) x[i,j]=0
      if(j==3 & i>6) x[i,j]=0
      if(j==9 & i>6) x[i,j]=0
      if(i==11 & j>6) x[i,j]=0
      if(i>1 & i<5 & j>7 & j<11) {
        ifelse(x[i,j]%%2==0, x[i,j] <- 2, x[i,j] <- 1)
        }
    }
  }
  x
}
SUN(x)


2번)  '바틀렛 검정 (Bartlett's test)' 에 대해서 프로그램을 짜세요, 원하는 결과의 값은 't.s(B star) & p-value' 이 두 가지 입니다 

(10점)

 

# 2

x <-c(rep(1,7),rep(2,8),rep(3,9),rep(4,8),rep(5,10))
y<-c(1.51, 1.92, 1.08, 2.04, 2.14, 1.76, 1.17,
     1.69, 0.64, 0.9, 1.41, 1.01,0.84, 1.28, 1.59, 
     1.56, 1.22, 1.32, 1.39, 1.33, 1.54, 1.04, 2.25, 1.49, 
     1.30, 0.75, 1.26, 0.69, 0.62, 0.90, 1.20, 0.32, 
     0.73, 0.80, 0.90, 1.24, 0.82, 0.72, 0.57, 1.18, 0.54, 1.30)

f <- function(y,x){
  k=nlevels(factor(x))
  N=length(y)
  ni = rep(0,k)
  
   for(i in 1:k) {for(j in 1:N){if(x[j]==i) { ni[i]=ni[i]+1 }}}
  sumi=rep(0,k)
  
   for(i in 1:N){for(j in 1:nlevels(factor(x))) {if (x[i]==j){sumi[j]=sumi[j]+y[i]}}}  
  meani=sumi/ni                    
  m2=rep(0,k)                      
  
   for(i in 1:N){for(j in 1:nlevels(factor(x))) {if (x[i]==j){m2[j]=m2[j]+y[i]^2}}}
  ssi=(m2-ni*meani^2)/(ni-1)       
  mse=sum((ni-1)*ssi/(N-k))
  q=(N-k)*log10(mse)-sum((ni-1)*log10(ssi)) 
  h=1+1/(3*(k-1))*(sum(1/(ni-1))-1/(N-k))
  
  b=2.3026*q/h
  pvalue=1-pchisq(b,k-1)
  
  cat("  B* : ",b,"\n P-value : ",pvalue)
}
f(y,x)


3번)  주어진 데이터에 올바른 팩터를 부여하고, aov분석을 실시하세요

(5점)

# 3 
y <- c(42,34,33, 47,59,43, 55,66,69, 64,60,94,
       38,34,41, 38,41,32, 48,26,63, 58,51,67,
       28,28,11, 52,33,29, 54,36,53, 63,55,40,
       22, 8, 3, 33,15,24, 27,41,38, 41,40,64,
       34,19,17, 22, 3,17, 17,40,40, 33,34,40,
       10, 8, 0, 16,10, 1, 22, 6,38, 29,24,20)

a <- gl(3,24,72)

b <- gl(4,3,72)
c <- gl(2,12,72)

summary(aov(y~a*b*c))

TAG