Regresyon F testinin gücü nedir?


11

Çok doğrusal regresyondaki değişken alt kümeleri için klasik F testi, F = ( SSE ( R ) - SSE ( B ) ) / ( d f R - d f B ) formuna sahiptir. buradaSSE(R), 'büyük'Bmodelinin içinde yuvalanan 'indirgenmiş' model altında kare hataların toplamıdırvedf, iki modelin serbestlik dereceleridir. 'Büyük' ​​modeldeki ekstra değişkenlerin doğrusal açıklayıcı güce sahip olmadığı sıfır hipotezi altında, istatistikdfR-dfBvedfBserbestlik derecelerinesahip bir F olarak dağıtılır.

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

Ancak alternatifin altındaki dağılım nedir? Ben bir merkezi olmayan F (iki kat merkezi olmayan umarım) varsayalım, ama tam olarak merkezi olmayan parametre ne olduğu hakkında herhangi bir başvuru bulamıyorum. Bunun doğru regresyon katsayıları bağlıdır tahmin etmeye gidiyorum ve muhtemelen tasarım matrisi üzerinde X , ama bunun ötesinde o kadar da emin değilim.βX

Yanıtlar:


9

Merkezsizlik parametresi , kısıtlı modelin projeksiyonu P r , β gerçek parametrelerin vektörü, X sınırsız (gerçek) modelin tasarım matrisidir, | | x | | norm:δ2PrβX||x||

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

E(y|X)=XβXXβyPrXβy^XβPrXβyy^||XβPrXβ||2XβXrPrXβ=Xβ0

Bunu Mardia, Kent ve Bibby'de bulmalısınız. (1980). Çok Değişkenli Analiz.


harika! norm kare olmalı mı? Aksi takdirde birimlerin önemi var mı? Bunun 'karelerin toplamı' olduğunu
söylüyorsunuz

@shabbychef Elbette haklısınız, bunu yakaladığınız için teşekkürler!
karakulak

7

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

normal olması gereken deneysel CDF

İşte R kodu (pardon tarzı, hala öğreniyorum):

#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
Kod ile takip için +1. Bunu görmek her zaman iyidir.
mpiktas
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.