2개의 변수로 1개의 회귀분석을 하려면
Z1<-rnorm(20)
Z2<-runif(20)
lm(Z1~Z2)
인데요. 만일 제가 수많은 변수로 수만개의 회귀분석이 필요하다면 자동화가 되어야 하는데요.먼저 조합함수를 이용해서 약식으로 과정을 설명를 드리자면 다음과 같습니다.
#Step 1 :변수만들기(가령, 10개만 만들께요)
Z1<-rnorm(20)
Z2<-runif(20)
Z3<-rnorm(20)
Z4<-runif(20)
Z5<-rnorm(20)
Z6<-runif(20)
Z7<-rnorm(20)
Z8<-runif(20)
Z9<-rnorm(20)
Z10<-runif(20)
#Step 2 :조합값 구하기 (가령 단순회귀분석을 가정할께요. 10C2)
xx<-paste("Z",1:10,sep="")
xx
library(combinat)
y<-combn(xx,2,simplify=T)
yy<-noquote(y)
yy #45개의 값을 얻습니다.
#Step3 :45번 회귀분석 하기
Loop 등을 통해서 아래와 같이 x,y값을 얻은 후 회귀분석을 하려합니다만.. 가령 45번째인 마지막 회귀분석은 ,
x<-yy[1,45]
y<-yy[2,45]
lm(x~y)
다음과 같은 error가 나옵니다. 아마 Character와 Numeric의 문제같은데 어찌 해결해야 하죠??
> x
[1] Z9
> y
[1] Z10
> lm(x~y)
Error in `contrasts<-`(`*tmp*`, value = "contr.treatment") :
contrasts can be applied only to factors with 2 or more levels
In addition: Warning messages:
1: In storage.mode(v) <- "double" : NAs introduced by coercion
2: In model.matrix.default(mt, mf, contrasts) : variable 'x' converted to a factor
3: In model.matrix.default(mt, mf, contrasts) : variable 'y' converted to a factor