rstandard是否在z中标准化?

机器算法验证 r 残差 标准化 诊断 流明
2022-04-04 09:38:09

我是 R 新手,所以请温柔一点。

我的印象是rstandard(model)返回残差的 z 分数model但是,当我自己在 z 中对残差进行标准化时,结果就不同了。事实上,rstandard(model)平均值与 0 不同,标准差与 1 不同。差异似乎不可忽略。具体是rstandard(model)做什么的?还是我在这里做错了什么?

> x = rnorm(30, mean = 100, sd = 15)
> y = rnorm(30, mean = 100, sd = 15)
> model = lm(y ~ x)
> z.res = residuals(model)/sd(residuals(model)) #standardizing it myself
> rstandard(model) - z.res #difference between rstandard and what i did
            1             2             3             4             5 
-4.422354e-04  1.556269e-04 -4.576832e-03 -1.274350e-03  1.048068e-01 
            6             7             8             9            10 
-2.333922e-02  1.820134e-02 -3.307542e-03  3.368978e-02 -1.804108e-04 
           11            12            13            14            15 
-1.100621e-01 -1.343715e-03 -1.300427e-03  1.509862e-03  3.246602e-03 
           16            17            18            19            20 
 3.734255e-03 -1.821539e-06 -1.153190e-02 -1.713254e-06 -2.185101e-02 
           21            22            23            24            25 
-2.681935e-02  2.562472e-03 -4.721114e-02 -1.084481e-04 -3.430827e-03 
           26            27            28            29            30 
 4.149684e-04  7.705807e-04  2.166815e-03  2.537837e-02  4.182761e-04 
> mean(z.res) 
[1] -9.428041e-18 
#as expected of z-scores, mean is 0
> sd(z.res)
[1] 1 
#as expected of z-scores standard deviation is 1
> mean(rstandard(model)) 
[1] -0.001990908
#not really 0
> sd(rstandard(model)) 
[1] 1.019699
#not really 1

此外,我理解R 的 lm 输出中的标准化残差的方式rstandard实际上是学生化残差。但是不是已经有了rstudent吗?

我在 Xubuntu 12.04 中使用 R 版本 2.14.1。

谢谢你。

2个回答

rstandard()使用残差/模型的总体误差方差,通过对单位方差进行归一化来生成标准化残差。

rstudent()以相同的方式产生学生化残差,但它使用误差方差的留一估计。

中的关键线rstandard()

res <- infl$wt.res/(sd * sqrt(1 - infl$hat))

其中sd定义为

sqrt(deviance(model)/df.residual(model))

model返回的对象在哪里lm但请注意,这与sd(resid(model))

请注意,这sd也由帽子值缩放,它们共同解释了与您的值的差异。1hii

中的关键线rstudent()

res <- res/(infl$sigma * sqrt(1 - infl$hat))

这几乎相同,但sd通过误差方差 (sd) 的留一估计替换infl$sigma

据我了解,这两个功能做不同的事情。

residuals(model)给出响应减去拟合值。(来自帮助lm

rstandard(model)是遗漏影响诊断(来自帮助rstandard)的一部分,其中说:

这套函数可用于计算 Belsley、Kuh 和 Welsch (1980)、Cook 和 Weisberg (1982) 等中讨论的线性和广义线性模型的一些回归(留一法删除)诊断。

您可以通过查看代码来准确检查 rstandard 的功能。对于 lm,您可以使用

> methods(rstandard) 
> getAnywhere(rstandard.lm)

.