r - 尝试运行 ols_correlations 但不断遇到错误消息
问题描述
我是 Mac 用户,目前在 1.1.463 版本上运行 R。
尝试运行 ols_correlations 以获取零阶、部分和半部分相关性,但不断收到错误消息说,
Error in terms.formula(formula, data = data) : '.' in formula and no 'data' argument
这是我运行的代码...
SATV <- c(500, 550, 450, 400, 600, 650, 700, 550, 650, 550)
HSGPA <- c(3.0, 3.2, 2.8, 2.5, 3.2, 3.8, 3.9, 3.8, 3.5, 3.1)
FGPA <- c(2.8, 3.0, 2.8, 2.2, 3.3, 3.3, 3.5, 3.7, 3.4, 2.9)
scholar <- data.frame(SATV, HSGPA, FGPA)
model1 <- lm(HSGPA ~SATV, data = scholar)
ols_correlations(model1)
即使使用不同的数据集,每次运行代码时都会收到相同的错误消息。我可以使用 ppcor 库中的 cor、pcor、spcor 函数获得零阶、部分和半部分相关性,但我不确定为什么 ols_correlations 函数对我不起作用。请帮忙。
解决方案
每当遇到不清楚的行为/文档时,只需检查源代码。在这种情况下,它是面向对象的编程,因此可能有点难以弄清楚。可以在此处查看相关函数的源代码(https://github.com/rsquaredacademy/olsrr/blob/master/R/ols-correlations.R)。首先是复制错误。我做了以下事情:
SATV <- c(500, 550, 450, 400, 600, 650, 700, 550, 650, 550)
HSGPA <- c(3.0, 3.2, 2.8, 2.5, 3.2, 3.8, 3.9, 3.8, 3.5, 3.1)
FGPA <- c(2.8, 3.0, 2.8, 2.2, 3.3, 3.3, 3.5, 3.7, 3.4, 2.9)
scholar <- data.frame(SATV, HSGPA, FGPA)
model <- lm(HSGPA ~ SATV, data = scholar)
corm2 <- function(model) {
mdata <- cordata(model)
n <- ncol(mdata)
r2 <- c()
for (i in 2:n) {
out <- rtwo(i, mdata)
r2 <- c(r2, out)
}
return(r2)
}
cordata <- function(model) {
ols_prep_avplot_data(model)
}
rtwo <- function(i, mdata) {
dat <- mdata[, c(-1, -i)]
summary(lm(mdata[[1]] ~ ., data = dat))[[8]]
}
ols_prep_avplot_data <- function(model) {
m1 <- as.data.frame(model.frame(model))[1]
m2 <- as.data.frame(model.matrix(model))[, -1]
as.data.frame(cbind(m1, m2))
}
corm2(model)
然后按照功能进行操作,直到隔离错误。在这种情况下,问题出在 corm2 的 for 循环中,它假设有超过 2 个自变量(如 @Abdessabour Mtk 在他的评论中建议的)。实际上,您可以使用文档中提供的示例轻松看到这一点:
library(olsrr)
model <- lm(mpg ~ disp + hp + wt + qsec, data = mtcars)
ols_correlations(model)
model <- lm(mpg ~ disp + hp + wt, data = mtcars)
ols_correlations(model)
model <- lm(mpg ~ disp + hp, data = mtcars)
ols_correlations(model)
推荐阅读
- spring-boot - 通过服务调用时文件上传失败,即restTemplate.postForEntity
- jmeter - PerfMon 指标收集器图显示最多 4 分钟的信息,但脚本执行的实际时间为 10 分钟
- python - 如何在ORACLE表中插入json数据?
- sql - 循环所有表并执行存储过程
- javascript - PHP将文件发送到Web服务器无法访问的浏览器
- jquery - 当您在每个循环中修改 jQuery 集合时,是包含修改后的集合还是仅包含原始集合?
- vue.js - 无法在 vuetify 项目中添加自定义颜色
- git - Git rebase to orphan 导致二进制文件冲突
- c# - 可空值类型上的提升运算符是否使用短路?
- php - 在每个函数调用中重新加载使用“require”检索的 php 文件