NA之间的值->错误的相关性和图?

问题描述 投票:2回答:2

我有一个关于在值之间介于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) 

r na missing-data
2个回答
0
投票

尚不完全清楚您想要的绘图是什么样,但这是一个在点上绘制线的示例。

plot(scale,values,pch=16)
lines(scale[!is.na(values)], predict(mod), col='blue',lty=2, lwd=3) 

enter image description here

关于第二个问题,您应该为其创建一个单独的帖子,并包括一个更完整的代码示例,包括循环。


0
投票

最好阅读手册以了解所使用的功能。丢失数据的处理由几个参数控制。首先,您的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)

现在情节完全没有误导。Plot

© www.soinside.com 2019 - 2024. All rights reserved.