使用线性模型调用calc.relimp时出现有限值错误,如何解决?
解决
relaimpo计算相对重要性时的cov.wt错误 错误含义
报错Error in cov.wt(y, wt = wt) : 'x' must contain finite values only表示计算加权协方差矩阵时,输入包含非有限值(如NA、Inf、NaN)。但你的数据集不存在这类值,实际是relaimpo的Pratt指数计算逻辑在处理「连续变量day+分类变量group」的组合模型时,出现了数值计算异常,导致中间过程生成了非有限值。
解决方法
方法1:移除Pratt指数计算
修改calc.relimp的参数,去掉pratt类型,仅保留其他相对重要性指标:
library(relaimpo) calc.relimp(model, type=c("lmg","last","first"), rela=TRUE)
运行后可正常输出lmg、last、first三种相对重要性结果。
方法2:将day转换为分类变量
如果业务逻辑允许把day当作分类变量分析,重新拟合模型后再计算全类型指标:
# 重新拟合模型,将day转为因子 model_factor_day <- lm(x ~ group + factor(day), data = data) # 计算所有类型的相对重要性 calc.relimp(model_factor_day, type=c("lmg","last","first","pratt"), rela=TRUE)
这种方式可以正常输出包括Pratt指数在内的所有结果。
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

