전산통계학, 2019 기말고사

코딩 공부/R-전산 통계학 2020. 2. 25. 01:47

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

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


1번) 지정한 영역에 대해서 삼중적분을 실행한 값을 구하세요, f:x*y^2*z^3 ,C:0<x<y<z<1 (5점)

# 1
library(pracma)


sg=function(x,y,z) x*y^2*z^3
xmin=0
xmax=1
ymin=function(x) x
ymax=1
zmin=function(x,y) y
zmax=1


integral3(sg,xmin,xmax,ymin,ymax,zmin,zmax)


2번) 교재의 주어진 데이터를 이용해서 "y=Beta0 + Beta1*x (x : fixed)" 에 대해서 x=1.7 일 때의 다음 값들을 구하세요 (5점)

(beta 0 , beta 1, s^2, "C.I for y=Beta0 + Beta1*(1.7)", "C.I for Y|x=1.7") 이 값들을 프로그래밍의 값으로만 나오게 하면 됩니다

# 2
x=c(1.35,1.9,1.7,1.8,1.3,2.05,1.6,1.8,1.85,1.4)
y=c(17.9,16.5,16.4,16.8,18.8,15.5,17.5,16.4,15.9,18.3)
#beta0+beta1x (x:fixed) - CI
yj=function(x,alpha,x0){
  n=length(x)
  sxx=sum((x-mean(x))^2)
  b1=((n*sum(x*y))-(sum(x)*sum(y)))/(n*sum(x^2)-(sum(x))^2)
  b0=mean(y)-b1*mean(x)
  syy=sum((y-mean(y))^2)
  sxy=sum(x*y)-n*mean(x)*mean(y)
  sse=syy-b1*sxy
  s2=sse/(n-2)
  s=sqrt(s2)
  df=n-2
  
  L1=(b0+b1*x0)-qt(alpha/2,df,lower.tail = F)*s*sqrt(1/n+((x0-mean(x))^2)/sxx)
  L2=(b0+b1*x0)+qt(alpha/2,df,lower.tail = F)*s*sqrt(1/n+((x0-mean(x))^2)/sxx)
  CI=c(L1,L2)
  
  L3=(b0+b1*x0)-qt(alpha/2,df,lower.tail = F)*s*sqrt(1/n+((x0-mean(x))^2)/sxx+1)
  L4=(b0+b1*x0)+qt(alpha/2,df,lower.tail = F)*s*sqrt(1/n+((x0-mean(x))^2)/sxx+1)
  PI=c(L3,L4)
  
  cat("b0=",b0,"b1=",b1,"s^2=",s2,"CI for beta0+beta1*1.7=",CI,"CI for Y|x=1.7",PI)
}
yj(x,0.1,1.7)


3번) 문제는 두 개입니다

(a). 주어진 데이터를 이용해서 "Friedman Test" 를 직접 코딩하여서 p-값을 도출하고, "aov (R 자체함수)" 를 이용해서 p-값을 도출하세요, 따라서 두 개의 p-값을 구하면 됩니다 (7점)

(b). 위에서 구한 "p-값(Friedman) 에서 p-값(aov) 을 뺀 값"을 구하세요 (3점)

# 3
x<-c(9.1,13.4,15.6,11.0,12.7,
     17.1,20.3,24.6,18.2,19.8,
     20.8,28.3,23.7,21.4,25.1,
     11.8,16.0,16.2,14.1,15.8)
A<-gl(4,5)
B<-factor(rep(1:5,len=20))
Sj<-function(x){
  a<-length(levels(A))
  b<-length(levels(B))
  n<-length(x)
  s<-c();g<-matrix(nrow=b,ncol=a);m<-c()
  s<-tapply(x,B,rank)
  for(i in 1:b){
    for(j in 1:a){
      g[i,j]<-s[[i]][j] 
    }
  }
  m<-apply(g,2,sum)
  sstar<-(12/(b*a*(a+1)))*sum(m^2)-3*b*(a+1)
  pvalue1<-pchisq(sstar,(a-1),lower.tail = F)
  pvalue2<-summary(aov(x~A+B))[[1]][[5]][[1]]
  cat("pvalue1(friedman test) is",pvalue1,"pvalue2(aov) is ",pvalue2,"\n So pvalue1 - pvalue2 is ",pvalue1-pvalue2)
}
Sj(x)


4번) 제시된 categorical 데이터를 'chi-squared goodness test' 혹은 'independent test' 혹은 'homogeneity' 중에서 올바른 테스트를 통해 p-값을 도출하세요 (5점)

# 4
# DATA
data <- matrix(c(75, 160, 100, 15, 60, 115, 65, 10, 65, 175, 135, 25), nrow = 4, byrow = F,
               dimnames = list("Injury" = c("None", "Minor", "Major", "Death"),
                                "Restraint" = c("seat belt","both", "None")) )

indi <- function (x) {
  r <-nrow(x) ; c <- ncol(x)
  
  # df
  df <- (r-1)*(c-1)
  ni. <- c() ; n.j <- c()
  for (i in 1:r) {ni.[i] <- sum(x[i,])}
  for (j in 1:c) {n.j[j] <- sum(x[,j])}
  
  # expected
  E <- matrix(nr=r, nc=c)
  for (i in 1:r) {
    for (j in 1:c) {
      E[i,j] <- (ni.[i]*n.j[j])/sum(x)
    }
  }
  # t.s
  su <- 0
  for (i in 1:r) {
    for (j in 1:c) {
      su <- su+ (x[i,j]-E[i,j])^2 /E[i,j]
    }
  }
  chistar <- sum(su)
  pv <- pchisq(chistar,df=df,lower.tail = F)
  cat ("p-value =",pv)
}
indi(data)

반응형
TAG