首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么意思‘交叉验证与非唯一的'x’值似乎可疑的平滑样条在R?

什么意思‘交叉验证与非唯一的'x’值似乎可疑的平滑样条在R?
EN

Stack Overflow用户
提问于 2014-05-25 03:26:05
回答 3查看 2.6K关注 0票数 3

我在R中使用平滑样条函数,但我收到警告信息:

代码语言:javascript
复制
  > boneMaleSmooth = smooth.spline( bone[males,"age"], bone[males,"spnbmd"], cv=TRUE)
    Warning message:
    In smooth.spline(bone[males, "age"], bone[males, "spnbmd"], cv = TRUE) :
    cross-validation with non-unique 'x' values seems doubtful

  > boneFemaleSmooth = smooth.spline( bone[females,"age"], bone[females,"spnbmd"], cv=TRUE)
    Warning message:
    In smooth.spline(bone[females, "age"], bone[females, "spnbmd"],  :
    cross-validation with non-unique 'x' values seems doubtful

我在某个地方读到的,说这不重要。但我不知道是什么原因造成的。希望有人能帮我。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-05-25 03:50:07

这意味着您有一些共享x值的数据点。在大多数情况下,它不应该对实际结果产生太大的影响。然而,使用cv=F是处理此类数据的更好方法。

它背后的原因是在smooth.spline代码中,它计算出x-值的总数:

代码语言:javascript
复制
n <- length(x)

然后它开始处理您的数据(我已经包括了注释):

代码语言:javascript
复制
xx <- round((x - mean(x))/tol) #normalise the data
nd <- !duplicated(xx) #get rid of duplicated x values! THIS IS PART OF THE WARNING
ux <- sort(x[nd]) #Sort the data
nx <- length(ux) $Get the length of processed data to work with

然后,如果nx

代码语言:javascript
复制
if (CV && nx < n) #CV is based on the input parameter `cv`
        warning("cross-validation with non-unique 'x' values seems doubtful")
票数 3
EN

Stack Overflow用户

发布于 2014-05-25 03:51:54

设置'cv=TRUE‘就像你所做的那样,使用了“普通”交叉验证,它使用了一种独占式的验证策略。当您复制了x值时,这个策略就不那么有用了。

当您复制了x值时,建议使用cv=FALSE来触发“广义”交叉验证。参见?smooth.spline中的讨论

票数 3
EN

Stack Overflow用户

发布于 2014-05-25 03:51:38

您的bone[males,"age"]向量是否包含重复的值?如果是这样的话,我认为这就是警告的来源。smooth.spline试图通过忽略一个交叉验证来确定最优的平滑平滑参数。如果遗漏的东西有重复,那么cv就有点奇怪了,所以它会发出警告。

详情请参见http://stat.ethz.ch/R-manual/R-patched/library/stats/html/smooth.spline.html

避免这种情况的一种方法是在调用spar时指定自己的smooth.spline值,并对其进行调整,直到得到对您有意义的东西。在大多数情况下,忽略一个交叉验证可能不会导致问题。另一种方式,也许,避免警告是稍微抖动你的x-值。

更新:根据@MrFlick的回答,似乎建议在帮助文件中使用通用交叉验证(cv = FALSE)。这句话有点不透明:

当x中存在重复点时,“广义”交叉验证方法将正确工作。然而,保留一次交叉验证方法与重复点的含义是不明确的,内部代码使用的近似方法是省略重复点组。在这种情况下,最好避免使用cv = TRUE。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23851705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档