回帰F検定の能力は何ですか?


11

多重線形回帰における変数のサブセットの古典的なF検定は、 ここで、は、「縮小」モデルの下での二乗誤差の合計であり、「大きな」モデル内にネストし、は、 2つのモデル。'big'モデルの追加の変数には線形の説明力がないという帰無仮説では、統計量はおよびの自由度を持つFとして分布されます。SSERBdfdfRdfBdfB

F=(SSE(R)SSE(B))/(dfRdfB)SSE(B)/dfB,
SSE(R)BdfdfRdfBdfB

しかし、代替案の下での分布はどうですか?私はそれが非中心Fであると思います(二重非中心ではないことを願っています)が、非中心パラメーターが正確に何であるかについての参照は見つかりません。私はそれが真の回帰係数、おそらくは計画行列に依存すると推測しますが、それを超えると私はよくわかりません。XβX

回答:


9

非心度パラメーターは、制限付きモデルの射影は、は真のパラメーターのベクトル、は無制限(真)モデルの設計行列、規範です: P R β X | | x | |δ2PrβX||x||

δ2=||XβPrXβ||2σ2

あなたは、このように式を読むことができます:デザイン行列を条件と予想値のベクトルである。を経験的データベクトルとして扱う場合、制限付きモデルサブへの射影はであり、これにより、その「データ」の制限付きモデルからの予測が得られます。したがって、は類似しており、その予測の誤差を与えます。したがって、は、その誤差の二乗の合計を与えます。制限されたモデルがtrueの場合、X X β Y P R X β Y X β - P R X β Y - Y | | X β - P R X β | | 2 X β X R P R X β = X β 0E(y|X)=XβXXβyPrXβy^XβPrXβyy^||XβPrXβ||2Xβとで定義された部分空間内にすでに存在しているため、非心度パラメーターはです。XrPrXβ=Xβ0

これはMardia、Kent&Bibbyにあります。(1980)。多変量解析。


すごい!ノルムは二乗されるべきですか?それ以外の場合は、単位が重要なようです?あなたは..私はそれが当たり前で乗だと思うので、それは、「二乗和」で述べる
shabbychef

@shabbychefもちろんあなたは正しい、それをキャッチしてくれてありがとう!
カラカル

7

δ2=||Xβ1Xβ2||2σ2,

通常であるべきものの経験的CDF

ここにRコードがあります(スタイルを許してください、私はまだ学んでいます):

#sum of squares
sum2 <- function(x) { return(sum(x * x)) }
#random integer between n and 2n
rint <- function(n) { return(ceiling(runif(1,min=n,max=2*n))) }
#generate random instance from linear model plus noise.
#n observations of p2 vector
#regress against all variables and against a subset of p1 of them
#compute the F-statistic for the test of the p2-p1 marginal variables
#compute the p-value under the putative non-centrality parameter
gend <- function(n,p1,p2,sig = 1) {
 beta2 <- matrix(rnorm(p2,sd=0.1),nrow=p2)
 beta1 <- matrix(beta2[1:p1],nrow=p1)
 X <- matrix(rnorm(n*p2),nrow=n,ncol=p2)
 yt1 <- X[,1:p1] %*% beta1
 yt2 <- X %*% beta2
 y <- yt2 + matrix(rnorm(n,mean=0,sd=sig),nrow=n)
 ncp <- (sum2(yt2 - yt1)) / (sig ** 2)
 bhat2 <- lm(y ~ X - 1)
 bhat1 <- lm(y ~ X[,1:p1] - 1)
 SSE1 <- sum2(bhat1$residual)
 SSE2 <- sum2(bhat2$residual)
 df1 <- bhat1$df.residual
 df2 <- bhat2$df.residual
 Fstat <- ((SSE1 - SSE2) / (df1 - df2)) / (SSE2 / bhat2$df.residual)
 pval <- pf(Fstat,df=df1-df2,df2=df2,ncp=ncp)
 return(pval)
}
#call the above function, but randomize the problem size (within reason)
genr <- function(n,p1,p2,sig=1) {
 use.p1 <- rint(p1)
 use.p2 <- use.p1 + rint(p2 - p1)
 return(gend(n=rint(n),p1=use.p1,p2=use.p2,sig=sig+runif(1)))
}
ntrial <- 4096
ssize <- 256
z <- replicate(ntrial,genr(ssize,p1=4,p2=10))
plot(ecdf(z))

2
コードのフォローアップのための+1。いつもそれを見て良い。
mpiktas
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.