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

use*_*224 5 r lm

我的首要问题是,R如何在WLS案例中计算R ^ 2?它不仅仅对观测值进行加权,然后计算R ^ 2.为了解决这个问题,我正在浏览源代码,直到我在代码中遇到这个问题lm.wfit:

z <- .Call(C_Cdqrls, x *wts, y*wts, tol) 
Run Code Online (Sandbox Code Playgroud)

在这做什么?有谁知道如何访问代码以获取详细信息?即,返回的是z什么?如何C_Cdqrls,x*wts,y*wts,tol被使用?

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

谢谢!

mne*_*nel 5

R squared值实际上是在调用时计算的summary.lm,您可以在实际的svn存储库(https://svn.r-project.org/R/)或github上的这个只读镜像中查看任何函数的源代码.

展望https://github.com/wch/r-source/blob/trunk/src/library/stats/R/lm.Rsummary.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)
Run Code Online (Sandbox Code Playgroud)