【问题标题】:NA in-between values --> False Correlations and Plots?NA 中间值 --> 错误的相关性和绘图?
【发布时间】:2020-01-11 23:03:13
【问题描述】:

在值之间有 NA 的情况下,我有一个关于基于模型预测值的问题(请参阅下面的代码作为示例)。 正如您在图中看到的那样,预测线似乎很奇怪,我的假设是: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


    【解决方案1】:

    阅读您正在使用的功能的手册页总是好的。缺失数据的处理由几个参数控制。首先,您的cor() 函数应该产生错误消息,因为nls() 中的默认行为是删除具有缺失值的观察,因此scalepredict(mod) 的长度不同,因为三个值被排除为包含缺失值.然后将这些缺失值添加到predict(mod) 的末尾,但缺失值不在values 的末尾,这会使您的情节产生误导。试试这个:

    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)
    

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

    【讨论】:

      【解决方案2】:

      目前尚不清楚您希望情节是什么样子,但这是一个在点上绘制线的示例。

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

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

      【讨论】:

        猜你喜欢
        • 2014-02-09
        • 1970-01-01
        • 2013-08-31
        • 1970-01-01
        • 1970-01-01
        • 2020-05-07
        • 2018-12-20
        • 2016-09-29
        • 2015-10-24
        相关资源
        最近更新 更多