【问题标题】:Calculation of DFFITS as diagnostic for Leverage and Influence in regression计算 DFFITS 作为回归中杠杆和影响的诊断
【发布时间】:2017-06-27 10:43:01
【问题描述】:

我正在尝试手动计算 DFFITS。获得的值应该等于dffits函数获得的第一个值。但是我自己的计算肯定有问题。

attach(cars)

x1 <- lm(speed ~ dist, data = cars) # all observations

x2 <-  lm(speed ~ dist, data = cars[-1,]) # without first obs

x <- model.matrix(speed ~ dist) # x matrix

h <- diag(x%*%solve(crossprod(x))%*%t(x)) # hat values

num_dffits <- x1$fitted.values[1] - x2$fitted.values[1] #Numerator

denom_dffits <- sqrt(anova(x2)$`Mean Sq`[2]*h[1]) #Denominator

df_fits <- num_dffits/denom_dffits #DFFITS

dffits(x1)[1] # DFFITS function

【问题讨论】:

  • 在分子中,它是所有观测值的第一个拟合值与没有第一个观测值的第一个拟合值之间的差异。在分母中,它是没有第一次观察的拟合值的方差的平方根。

标签: r regression linear-regression lm


【解决方案1】:

你的分子是错误的。由于您从第二个模型中删除了第一个数据,相应的预测值不在fitted(x2) 中。我们需要使用predict(x2, cars[1, ]) 代替fitted(x2)[1]


帽子值可以通过以下方式有效计算

h <- rowSums(qr.Q(x1$qr) ^ 2)

或使用它的 R 包装函数

h <- hat(x1$qr, FALSE)

R 也有一个获取帽子值的通用函数:

h <- lm.influence(x1, FALSE)$hat

或其包装函数

h <- hatvalues(x1)

您也不必致电anova 来获取 MSE:

c(crossprod(x2$residuals)) / x2$df.residual

【讨论】:

    猜你喜欢
    • 2018-04-15
    • 1970-01-01
    • 2017-11-27
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 2018-12-25
    • 2016-12-15
    相关资源
    最近更新 更多