gpt4 book ai didi

r - 在 lm.wfit 中, z <- .Call(C_Cdqrls, x *wts, y*wts, tol) 做什么?

转载 作者:行者123 更新时间:2023-12-03 18:31:21 27 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





R: lm() result differs when using `weights` argument and when using manually reweighted data

(1 个回答)


5年前关闭。




我的首要问题是,在 WLS 情况下,R 如何计算 R^2?它不只是对观察进行加权,然后计算 R^2。为了尝试解决这个问题,我浏览了源代码,直到我在 lm.wfit 中遇到了这个问题。代码:

z <- .Call(C_Cdqrls, x *wts, y*wts, tol) 

这里正在做什么?有谁知道我如何访问代码以获取详细信息?即,返回到 z 的内容?怎么样 C_Cdqrls , x*wts , y*wts , tol正在使用?

到目前为止我所理解的(我不确定它是否正确)是 .Call意味着 R 正在 C 中执行此代码。但是,如果可能的话,我想看看这是如何在 C 中完成的。

谢谢!

最佳答案

R squared value 是在调用 summary.lm 时实际计算的,您可以查看任何函数的源代码,无论是在实际的 svn 存储库( https://svn.r-project.org/R/ )中,还是在 this read only mirror 中在github上。

在看 https://github.com/wch/r-source/blob/trunk/src/library/stats/R/lm.R为了summary.lm
我们看到以下权重( w )

r <- z$residuals
f <- z$fitted.values
w <- z$weights
if (is.null(w)) {
mss <- if (attr(z$terms, "intercept"))
sum((f - mean(f))^2) else sum(f^2)
rss <- sum(r^2)
} else {
mss <- if (attr(z$terms, "intercept")) {
m <- sum(w * f /sum(w))
sum(w * (f - m)^2)
} else sum(w * f^2)
rss <- sum(w * r^2)
r <- sqrt(w) * r
}
# ..... some other code
# ... then this definition
ans$r.squared <- mss/(mss + rss)

关于r - 在 lm.wfit 中, z <- .Call(C_Cdqrls, x *wts, y*wts, tol) 做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15776984/

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