You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言线性模型分析时遇hist/boxplot/shapiro.test类型错误的问询

问题解析与解决方法

错误含义

你遇到的报错核心原因很明确:hist()、boxplot()、shapiro.test()这类函数仅接受数值型向量作为输入参数,但你直接传入了lm()拟合生成的模型对象(fitmodel是一个包含模型参数、残差、拟合值等数据的复杂列表结构,并非单纯的数值向量),因此触发了“x必须是数值/原子型”的错误。

而tab_model()、summary()、anova()是专门为线性模型对象设计的工具,能识别并解析lm对象的内部结构,所以可以正常运行。

解决方法

这些函数通常用于检验模型残差的分布(比如正态性、方差齐性),你需要先从模型对象中提取残差(或拟合值等数值向量)再传入:

1. 提取残差的两种方式

  • 使用resid()函数:resid(fitmodel)
  • 直接访问模型对象元素:fitmodel$residuals

2. 具体代码示例

  • 绘制残差的直方图:
hist(resid(fitmodel), main = "模型残差直方图", xlab = "残差值")
  • 绘制残差的箱线图:
boxplot(resid(fitmodel), main = "模型残差箱线图", ylab = "残差值")
  • 对残差做Shapiro-Wilk正态性检验:
shapiro.test(resid(fitmodel))

如果需要查看拟合值的分布,只需把上述代码中的resid(fitmodel)替换为fitted(fitmodel)或fitmodel$fitted.values即可。

内容的提问来源于stack exchange,提问作者Kristel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 06:05:12