r - 为什么 R 会删除一些残差以及如何避免它?
问题描述
我在 R 中创建线性模型并测试它们的模型假设。
我注意到,当我创建我的模型时,R 删除了一些残差,给出了这个:
(2 observations deleted due to missingness)
由于 x 和 y 的长度不同,这使我无法检查自变量和残差之间的关系以及任何进一步的分析。
编辑:
您对如何解决此问题有任何想法吗?
解决方案
运行时R 不会删除残差lm()
。相反,它不能为模型中有任何缺失数据的样本创建残差(也不能在分析中实际使用它们)。因此,summary(model_5)
输出会通知您某些样本(观察值)无法使用(即被删除)。
当残差和自变量的长度存在差异时,为了在残差和自变量之间建立相关性,并且由于某种原因我们无法找到要从数据集中删除的缺失数据(例如,如果dataset[!complete.cases(dataset), ]
不工作),我们首先需要找出另一种方法来查找模型中保留/删除哪些观察结果。为此,我们也许可以依赖观察 ID 或数据集的行名。
例子
# sample data
set.seed(12345)
dataset <- data.frame(indep_var = c(NA, rnorm(9)), dep_var = c(rnorm(9), NA))
dataset$index <- rownames(dataset)
# model residuals
resid <- lm(data=dataset, dep_var ~ indep_var)$residuals
dataset.resid <- data.frame(index = names(resid), resid)
# join or match the residuals and the variables by their observation identifier
cor.data <- dplyr::inner_join(dataset.resid, dataset, by = "index")
# correlation analysis
cor.test(~ resid + indep_var, cor.data)
请注意,这names(resid)
是模型中使用的观测值的行名dataset
。任何未使用或来自(由于缺失)rownames(dataset)
的观察/行将不包含在.dataset
names(resid)
推荐阅读
- jenkins - Jenkins在遇到权限被拒绝状态126时没有失败构建
- sql - 如何从postgresql中的总行数中计算不同行数的百分比?
- azure - 如何使用 Jenkins 从 Azure Artifact 下载工件?
- flutter - StateError(错误状态:调用关闭后无法添加新事件)
- c# - 如何在 Blazor WASM 中对当前经过身份验证的用户帐户信息执行 CRUD 操作?
- python - 求解器:带有 glpsol 的 Pyomo - 在矩阵中排列行值以实现约束
- spring-boot - Spring Boot 连接器错误 mysql 的问题?
- python - 使用 Pandas 连接/复制相同形状的数据帧,但数据帧会创建偏移数据
- pm2 - “在线”日志导致终端会话断开
- python - 如何将计数器列表中的数据显示为图表?