我正在运行模拟并拟合线性模型.lm.fit() https://www.rdocumentation.org/packages/pbdDMAT/versions/0.4-2/topics/lm.fit。尽管速度极快,但该函数不提供预测变量的 p 值。有没有一种快速的方法来计算它们(也许是从返回的值.lm.fit()
)?我知道this https://www.bmj.com/content/343/bmj.d2304计算近似 p 值的方法,但我需要精确的 p 值。
Update:
Dirk Eddelbuettel 提供了拟合 lm 的最快方法,Ben Bolker 提供了计算 p 值的方法,通过结合我们得到的两个答案:
set.seed(101)
X <- cbind(1,matrix(1:10))
y <- rnorm(10)
mdl <- RcppArmadillo::fastLmPure(X, y)
pval <- 2*pt(abs(mdl$coefficients/mdl$stderr), mdl$df.residual, lower.tail=FALSE)
德克的答案会更快,但为了方便起见,这里是纯 R 中的实现(从summary.lm
,并假设非满秩模型矩阵等没有问题)
Example:
set.seed(101)
X <- cbind(1,matrix(1:10))
y <- rnorm(10)
m <- .lm.fit(X,y)
p 值计算:
rss <- sum(m$residuals^2)
rdf <- length(y) - ncol(X)
resvar <- rss/rdf
R <- chol2inv(m$qr)
se <- sqrt(diag(R) * resvar)
2*pt(abs(m$coef/se),rdf,lower.tail=FALSE)
与之比较:
coef(summary(lm(y~X-1)))[,"Pr(>|t|)"]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)