2013-06-29 2 views
1

아래에 표시된 함수에서 일부 데이터가 종합적으로 생성됩니다. 난으로 시도 다항식 피트를 이용하여 또 fn I는 다항식의 계수를 재현 할 수 있는지 할R 데이터에 다항식 피팅

x = data.frame(
    yval = fn(seq(0.1,0.9,by=0.01),seq(1.1,0.3,by=-0.01)), 
    x1 = seq(0.1,0.9,by=0.01), 
    x2 = seq(1.1,0.3,by=-0.01) 
) 

아래와 같이

fn <- function(w1,w2){ 
    f= -(0.1 + 1.3*w1 + 0.4*w2 - 1.8*w1*w1 - 1.8*w2*w2) 
    return(f) 
} 

다음 I의 값을 갖는 데이터 프레임을 생성 나는 위의 코드를 실행하면

fit = lm(yval ~ x1 + x2 + I(x1^2) + I(x2^2),data=x) 
coef(fit) 

아래에 표시 그러나, 나는

다음 얻을

x2라는 용어는 절대로 "감지"되지 않았습니다. 아무도 내가 뭘 잘못하고 있는지 알 수 없을까? 나는 합성 선형 데이터를 만들고 lm을 사용하여 계수를 다시 만들려고 노력한다면 계수를 꽤 정확하게 되돌릴 수 있다는 것을 알고 있습니다. 미리 감사드립니다.

+4

'x1'과'x2'는 완벽하게 동일 선상에 있으므로 매개 변수를 동시에 계산할 수 없습니다. R은 이것을 인식하고 그 중 하나를 'NA'로 설정합니다. –

답변

5

예측기 2 개에 적합하면 expand.grid이 필요합니다.

x <- expand.grid(x1=seq(0.1, 0.9, by=0.01), x2=seq(1.1, 0.3, by=-0.01)) 
x$yval <- with(x, fn(x1, x2)) 

fit = lm(yval ~ x1 + x2 + I(x1^2) + I(x2^2),data=x) 
coef(fit) 
(Intercept)   x1   x2  I(x1^2)  I(x2^2) 
     -0.1  -1.3  -0.4   1.8   1.8