전산통계학, 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))