User Tools

Site Tools


wald_test

This is an old revision of the document!


Wald Test

Regression model의 coefficient값이 significant 한지 테스트하는 방법. 즉, regression coefficient의 t-test와 비슷한 일을 한다.

H0: Some set of predictor variables are all equal to zero.
HA: Not all predictor variables in the set are equal to zero.

#fit regression model
model <- lm(mpg ~ disp + carb + hp + cyl, data = mtcars)

#view model summary
summary(model)

Call:
lm(formula = mpg ~ disp + carb + hp + cyl, data = mtcars)

Residuals:
    Min      1Q  Median      3Q     Max 
-5.0761 -1.5752 -0.2051  1.0745  6.3047 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 34.021595   2.523397  13.482 1.65e-13 ***
disp        -0.026906   0.011309  -2.379   0.0247 *  
carb        -0.926863   0.578882  -1.601   0.1210    
hp           0.009349   0.020701   0.452   0.6551    
cyl         -1.048523   0.783910  -1.338   0.1922    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.973 on 27 degrees of freedom
Multiple R-squared:  0.788,	Adjusted R-squared:  0.7566 
F-statistic: 25.09 on 4 and 27 DF,  p-value: 9.354e-09
# coefficient
coef(model)

 (Intercept)         disp         carb           hp          cyl 
34.021594525 -0.026906182 -0.926863291  0.009349208 -1.048522632 

# term1, 2, 3, 4, 5
install.packages("aod")
library(aod) 

# wald.test(Sigma, b, Terms)
#perform Wald Test to determine if 3rd and 4th predictor variables are both zero
wald.test(Sigma = vcov(model), b = coef(model), Terms = 3:4)

Wald test:
----------

Chi-squared test:
X2 = 3.6, df = 2, P(> X2) = 0.16

wald.test(Sigma, b, Terms)

  • Sigma: The variance-covariance matrix of the regression model
  • b: A vector of regression coefficients from the model
  • Terms: A vector that specifies which coefficients to test

Wald test in logistic regression

odds       <- function(p)      p/(1-p)
odds.ratio <- function(p1, p2) odds(p1)/odds(p2)
logit      <- function(p)      log(p/(1-p))
ilogit     <- function(x)      exp(x)/(1+exp(x))

iter <- 100000
n <- 100
p.cancer <- 0.08
p.mutant <- 0.39

orgroup <- rep (NA, iter)
for(i in 1:iter){
  c <- runif(n, 0, 1)
  canc <- ifelse(c>=p.cancer, "nocancer", "cancer")
  c <- runif(n, 0, 1)
  gene <- ifelse(c>=p.mutant, "norm", "mutated")
  
  da <- data.frame(gene, canc)
  tab <- table(da)
  pp0 <- tab[1,1] / (tab[1,1] + tab[1,2])
  pp1 <- tab[2,1] / (tab[2,1] + tab[2,2])
  op0 <- odds(pp0)
  op1 <- odds(pp1)
  ortemp <- odds.ratio(pp0, pp1)  
  orgroup[i] <- log(ortemp)
}
hist(orgroup)
wald_test.1701923831.txt.gz · Last modified: 2023/12/07 13:37 by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki