スムーズスプライン/レス回帰のp値を見つけるにはどうすればよいですか?


10

いくつかの変数があり、それらの間の非線形関係を見つけることに興味があります。そこで、私はいくつかのスプラインまたはレスをフィットさせ、素敵なプロットを印刷することにしました(以下のコードを参照)。しかし、私はまた、関係がランダム性の問題である可能性がどのくらいあるかという考えを与えるいくつかの統計を取得したいと考えています...たとえば、線形回帰の場合のように、全体的なp値が必要です。言い換えると、私のコードは曲線を任意のデータに適合させるため、適合した曲線が意味を成しているかどうかを知る必要があります。

x <- rnorm(1000)
y <- sin(x) + rnorm(1000, 0, 0.5)

cor.test(x,y)
plot(x, y, xlab = xlab, ylab = ylab)
spl1 <- smooth.spline(x, y, tol = 1e-6, df = 8)
lines(spl1, col = "green", lwd = 2)

spl2 <- loess(y ~ x)
x.pr <- seq(min(x), max(x), length.out = 100)
lines(x.pr, predict(spl2, x.pr), col = "blue", lwd = 2)

回答:


8

スプラインライブラリには関数がbsありnslm関数で使用するスプライン基準を作成します。次に、線形モデルとスプラインを含むモデルを適合anovaさせ、関数を使用して完全モデルと簡約モデルのテストを実行し、スプラインモデルが著しく適合するかどうかを確認できます。線形モデルよりも。

ここにいくつかのサンプルコードがあります:

x <- rnorm(1000)
y <- sin(x) + rnorm(1000, 0, 0.5)

library(splines)

fit1 <- lm(y~x)
fit0 <- lm(y~1)
fit2 <- lm(y~bs(x,5))

anova(fit1,fit2)
anova(fit0,fit2)

plot(x,y, pch='.')
abline(fit1, col='red')
xx <- seq(min(x),max(x), length.out=250)
yy <- predict(fit2, data.frame(x=xx))
lines(xx,yy, col='blue')

また、poly関数を使用して多項式フィットを行い、曲率のテストとして非線形項をテストすることもできます。

R2

レスフィットの信頼区間を計算してプロットする手法があります(ggplot2パッケージには組み込みの方法があると思います)。信頼帯をプロットして、直線が帯域内に収まるかどうかを確認できます(これはp値ではありませんが、はい/いいえを与えます。

線形モデルをあてはめ、残差を取り、レスモデルをレスポンシブとして残差に(そして、対象の変数を予測子として)あてはめることができます。真のモデルが線形の場合、このフィットはフラットラインに近く、ポイントを並べ替えます。予測子との相対的な違いはありません。これを使用して順列テストを作成できます。黄土を当てはめて、0から最も遠い予測値を見つけ、ランダムに点を並べ替え、新しい黄土を当てはめて、0から最も遠い予測点を見つけ、何度も繰り返します。p値は、さらに並べ替えられた値の割合です元の値より0から。

レスの帯域幅を選択する方法として、相互検証を検討することもできます。これはp値を与えませんが、交差検証が非常に大きな帯域幅を示唆している場合、無限の帯域幅は完全な線形モデルに対応し、より高い帯域幅が明らかにいくつかの帯域幅よりも劣っている場合、線形モデルが合理的である可能性があります。帯域幅が小さい場合、これは明確な曲率を示し、線形では不十分です。


グレッグ、ありがとう!最初の段落は、スプラインがそれを説明するかどうかを確認するためだけに、線形モデルとの比較に興味がないことを除いて、進むべき道として聞こえると思います。anovaでスプラインをテストする方法について、いくつかのコードまたはより具体的なポインタを提供していただけませんか?私はbsとns関数を調べてきましたが、自分で発明できるほど統計が得意ではありません。
好奇心が

R2R2

anovaR2R21R2R21R2

グレッグ、ありがとう!1)何が行われlm(y~bs(x,5))ていて、なぜそうではないのlm(y~I(bs(x,5)))か説明していただけますか?bs(x、5)の結果は変数ではないため、この呼び出しにはかなり混乱しています... 2)探しているp値が結果であることを正しく理解していanova(fit0,fit2)ますか?
好奇心が

1
xx2x3bsxlm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.