我有一个关于在值之间介于NA之间的条件下基于模型预测值的问题(请参阅下面的代码作为示例)。正如您在图表中看到的那样,预测线似乎很奇怪,我的假设是:NA有点“被忽略”。您也许对此问题有解决方案吗?
我还在通过循环来运行其他值向量的模型,并在循环值与预测值之间的相关性的过程中出现了一些错误消息,例如“不兼容错误”和“无效因子水平,NA生成”。因此,我需要一种忽略中间值的方法...
scale <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
values <- c(2, NA, NA, NA, 30, 45, 60, 75, 85, 100)
mod <- nls(values~(scale)^a, start=list(a=1))
summary(mod)
cor(values, c(predict(mod)))
plot(scale,values,pch=16)
lines(scale, c(predict(mod),NA,NA,NA), col='blue',lty=2, lwd=3)
最好阅读手册以了解所使用的功能。丢失数据的处理由几个参数控制。首先,您的cor()
函数应该产生一条错误消息,因为nls()
中的默认行为是删除缺失值的观测值,因此刻度和predict(mod)
的长度不同,因为三个值被删除为包含缺失值。然后,您将缺失值添加到predict(mod)
的末尾,但是缺失值不在值的末尾,这会使您的绘图产生误导。试试这个:
mod <- nls(values~(scale)^a, start=list(a=1), na.action="na.exclude")
cor(values, c(predict(mod)), use="complete.obs")
# [1] 0.9900571
plot(scale, values, pch=16)
lines(scale, predict(mod), col='blue',lty=2, lwd=3)