1

次の形式で、単純な 2 次多項式を時系列データに当てはめました。

polyfit <- lm(y ~ poly(x,2))

y = Ax^2 + Bx + C の形式の近似多項式からそれぞれの係数 (A、B、および C) を抽出したいと考えています。当然、答えは polyfit オブジェクト内の polyfit$coefficients にあると考えましたが、これらの係数は正しくありません。私はいくつかの非常に単純なデータ セットを試し、Excel と比較しました。ポリゴン カーブ フィットは R と Excel で同じですが、Excel から取得した A、B、および C 係数は正しいですが、polyfit オブジェクトから取得した係数は正しくありませんか? polyfit オブジェクトから誤った情報を抽出しましたか? 私の目的のためにRから直接係数を抽出する方が便利でしょうか? 誰でも助けることができますか?

4

1 に答える 1

5

デフォルトでは、poly直交多項式に適合します。基本的に、次のアイデアを使用します...

x <- 1:10

# in this case same as x-mean(x)
y1 <- residuals(lm(x ~ 1)) 
# normalize to have unit norm
y1 <- y1/sqrt(sum(y1^2))

y2 <- residuals(lm(y1^2 ~ y1))
y2 <- y2/sqrt(sum(y2^2))

y3 <- residuals(lm(x^3 ~ y2 + y1))
y3 <- y3/sqrt(sum(y3^2))

cbind(y1, y2, y3)    
poly(x, 3)

同じ予測を生成する正規直交ベクトルのセットを構築します。通常の方法で多項式を取得したいだけの場合はraw=TRUE、パラメーターとして指定します。

y <- rnorm(20)
x <- 1:20
o <- lm(y ~ poly(x, 2, raw = TRUE))
# alternatively do it 'by hand'
o.byhand <- lm(y ~ x + I(x^2))
于 2013-05-10T03:01:53.863 に答える