计量经济学:R的白色测试

时间:2013-05-15 10:54:19

标签: r

早上好,

我试图用R实现我的线性模型的白色测试。我不知道如何编写R代码来实现白色测试。

价格:房价,以百万美元计 Bdrms:卧室数量 Lotsize:平方英尺的批量大小 Sqrft:平方英尺的房子大小

线性模型如下:

线性模型

LinearModel.1< - lm(PRICE~LOTSIZE + LOTSIZE ^ 2 + SQRFT + BDRMS,data = Dataset) 摘要(LinearModel.1)

Breusch-Pagan测试

库(lmtest) bptest(LinearModel.1,varformula = NULL,studentize = TRUE,data = Dataset)

白色测试

?????????

感谢您的回答 亲切的问候,

5 个答案:

答案 0 :(得分:4)

白色测试已在“bstats”包中实施。安装并加载此软件包后,只需键入

即可对线性模型对象执行白色测试
white.test(lm0)

有关说明和示例,请参阅this页面。

答案 1 :(得分:3)

m <- LinearModel.1
data <- Dataset
u2 <- m$residuals^2
y <- fitted(m)
Ru2<- summary(lm(u2 ~ y + I(y^2)))$r.squared
LM <- nrow(data)*Ru2
p.value <- 1-pchisq(LM, 2)
p.value

如果p.value&lt; 0.05,然后Ho(没有异方差性)在5%的显着性水平被拒绝,你得出的结论是你的模型中存在异方差性

答案 2 :(得分:1)

White的测试现在在white_lm包的skedastic函数中实现;看到 https://www.rdocumentation.org/packages/skedastic/versions/1.0.0/topics/white_lm

答案 3 :(得分:0)

我在R中编写了一个函数来重现两种方法,供hendry2007econometric中的White检验。

test_white(mod, dat, resi2 ~ x1 + x2 + I(x1^2) + I(x2^2), 3)

平方残差在所有回归变量及其平方上回归的位置。自由度是参数的数量(比方说k)。

test_white(mod, dat, resi2 ~ x1 + x2 + I(x1^2) + I(x2^2) + I(x1 * x2), 6)

平方残差在所有回归变量,其平方和叉积上回归的地方。自由度为k * (k + 1) / 2

test_white <- function(mod, dat, f, df1, prob){
  if(missing(prob)){prob = 0.05}

  dat %<>% mutate(resi2 = mod$residuals^2)

  stat <-
    lm(f, data = dat) %>%
    {summary(.)$r.squared} %>%
    {. * nrow(dat)}

  p_value <- 
    stat %>%
    {1 - pchisq(., df1)}

  results <- tibble(
    whi = "White", stat = stat, df1 = df1, df2 = nrow(dat) - df1,  
    p_value = p_value,prob = prob, if_accept = {p_value <= prob}, 
    if_pass = {p_value >= prob}
  )
  return(results)
}

我认为way @Mike K可以,这实际上是在测试基于比例尺位置图的lm模型是否有效。比例尺位置图是指当您lm plot diagnosticsplot.lm(model, which = 3)对象时{}。

答案 4 :(得分:0)

可以使用bptest包中的lmtest函数来实现测试,如下所示:

reg <- lm(y~x1+x2) # storing regression
bptest(reg, ~ poly(fitted(reg) , 2))

请注意,以上内容实现了测试的特殊形式,该测试使用y的拟合值及其平方值(因此poly(fitted(reg) , 2)中的选项bptest)作为第二个回归变量阶段方程。范式使用所有回归变量,其平方值和交互作用作为第二阶段回归的元素,但会损失自由度。要实现该格式,您需要将~ poly(fitted(reg) , 2)替换为~ x1*x2 + x1*x3 ...。如果您有很多回归变量,则使用其他软件包可能会更容易。

相关问题