gpt4 book ai didi

r - 计算 DFFITS 作为回归中杠杆和影响的诊断

转载 作者:行者123 更新时间:2023-12-04 02:04:18 24 4
gpt4 key购买 nike

我正在尝试手动计算 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

最佳答案

你的分子是错误的。由于您已从第二个模型中删除第一个数据,因此相应的预测值不在 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

关于r - 计算 DFFITS 作为回归中杠杆和影响的诊断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44778302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com