전산통계학 5주차 강의 - F test, T test, Matrix
코딩 공부/R-전산 통계학 2019. 11. 17. 02:37F+T test
sm<-function(x1, x2, alpha1, alpha2, sided) {
fpvalue<-var.test(x,y)$p.value
if (fpvalue < alpha1) {tpvalue<-t.test(x,y, var.equal = TRUE)$p.value
}
else {tpvalue<-t.test(x,y, sided, var.equal =FALSE)$p.value
}
ifelse (tpvalue < alpha2,
result<-"reject H0"
,result<-"accept H0")
result
}
sm(x, y, 0.05, 0.05, "less")
그러면, var.test 나 t.test 명령어가 아닌, 직접 프로그램을 짜서 F+T test 를 돌리게 만들 수 있을까? (아마 과제로 낼 겁니다)
matrix exercise (시험문제 단골)
#DATA (everytime, fixed it)
x<-matrix(1:121,11)
sm<-function(x) {
y<-x[,1]
x[,1]<-x[,11]
x[,11]<-y
z<-x
w<-z[1,]
z[1,]<-z[11,]
z[11,]<-w
z
}
sm(x)
#professor's example 1 (맨 좌우콜럼을 바꾼 후, 맨 위아래 로우를 서로 바꿈)
<문제>
다음 명령어가 어떤 규칙에 의거해서 바꾼 것인지 알아보시오
sm<-function (x) {
n<-nrow(x) ; m<-ncol(x)
for (i in 1:n) {
y[i]=x[i,i]
for (j in 1:m){
if(i+j==12) {
x[i,i]<-x[i,j]
x[i,j]=y[i]
}
}
}
x
}
sm(x)
<첨언>
바뀐 곳만 보고싶다면, NA를 활용하는 것도 나쁘지 않은 방법이다
x<-matrix(c(1:121),11)
jesus<-function (x) {
for ( i in 1:nrow(x)) {
for ( j in 1:ncol(x)) {
if (j==i+5) {x[i,j]<-3}
else if (i+j==17) {x[i,j]<-2}
else if (i==j+5) {x[i,j]<-1}
else if (i+j==7) {x[i,j]<-0}
else {x[i,j]<-NA}
}
}
x
}
jesus(x)
<문제>
11x11 행렬에서 4모양을 0으로 만든 후에, 4안의 공백중에서 가장 큰 값(max) 으로 그 공백칸을 채워라
x<-matrix(c(1:121),11)
four<-function(x) {
y=c()
for ( i in 1:nrow(x)) {
for (j in 1:ncol(x)) {
if(i+j==7) {x[i,j]<-0}
x[6,]<-0
x[,6]<-0
if (i<6 & j<6 & i+j>=8 & i+j<=10) {z<-x[i,j]}
}
}
for ( i in 3:5) {
for (j in (8-i):5) {
y<-c(y,x[i,j])
}
}
for ( i in 3:5) {
for (j in (8-i):5) {
x[i,j]<-max(y)
}
}
x
}
four(x)
이 문제에서 핵심은 4 안의 공백의 숫자들을 어떻게 저장해두고, 활용해야 하는가? 를 곰곰히 생각해보아야 한다