如何测试非线性关联?


Answers:


35

...该关系是非线性的,但x和y之间有明确的关系,我如何测试关联并标记其性质?

这样做的一种方式将是适合作为半参估计函数使用,例如,一个广义相加模型和测试是否功能性估计是恒定的,这将表明没有关系和。这种方法使您不必进行多项式回归,并且有时不必对多项式的阶数做出任意决定,等等。yxyx

具体来说,如果您有观测值,则可以拟合模型:(Yi,Xi)

E(Yi|Xi)=α+f(Xi)+εi

并检验假设。在中,您可以使用函数执行此操作。如果是您的结果并且是您的预测变量,则可以键入:H0:f(x)=0, xRgam()yx

library(mgcv) 
g <- gam(y ~ s(x)) 

键入summary(g)将为您提供上述假设检验的结果。就描述关系的性质而言,最好通过绘图来完成。一种方法R(假设已经输入了上面的代码)

plot(g,scheme=2)

如果您的响应变量是离散的(例如二进制),则可以通过拟合逻辑GAM来将其容纳在此框架中(在中R,您可以添加family=binomial到的调用中gam)。此外,如果有多个预测,则可以包括多个添加剂术语(或普通线性项),或适合的多变量函数,例如,如果你有预测。如果使用默认方法,则交叉验证会自动选择关系的复杂性,尽管此处有很多灵活性- 如果感兴趣,请参阅帮助文件f(x,z)x, zgam


1
对于两侧的两个单独的秩相关,我更喜欢这种方法,因为它从整体上检查了这种关系。它也比参数模型好,因此我接受了它。x=a
user1447630'9

@ user1447630这是关系的模型。多项式线性回归或非线性回归以及加性模型是表征函数关系的方法。我本来可以提到这些。但是您要求度量关联度,因此我为您提供了其他可能的关联形式。就像Macro的回答一样好,它符合功能关系,但不提供关联度量。
Michael Chernick 2012年

1
@Michael,我不知道您正在阅读哪个问题,但是OP询问如何测试关联,而不是关联度。无论如何,不​​管您的回答如何,(并且忽略它需要相当强的先验知识来了解变更点的位置这一事实),我认为它过分地针对该问题中的特定情节,而不是一般性问题“非线性关联”问题。
2012年

3
@Michael,您的解释(“问题是有关如何推广相关性概念的问题。”)和您提供的统计“参数”(顺便说一句,在线性模型中测试系数和模型的相近性”)是就像测试相关性一样),鉴于事实,这没有任何意义,因此我将不予解决。但是,“ ..在您提供您的地雷后,您的地雷不被接受,您的地雷被接受了……我只是觉得那是不对的”,正在争取您的答案,这只反映了对代表点的关注,对社区没有任何帮助。
2012年

5
对我来说,@ Macro和Michael以半/非参数的方式拟合和之间的关系模型是测试两者之间关联的一种方法。可以通过测量与您各自建议的不同方式的关联程度来扩展这种测试。我觉得两个答案和后续这里一直对我非常有用,SANS人不对事。但是,由于我的问题的确包括我们如何“标记其性质”(可以解释为模型拟合),因此我将坚持Macro的回答。xy
user1447630'9

14

如果非线性关系是单调秩相关(Spearman的rho)将是适当的。在您的示例中,有一个明显的小区域,曲线从单调递增变为单调递减,就像抛物线在一阶导数等于。0

我认为,如果您有一些建模知识(除了经验信息之外)(在)发生了变化,那么您可以将相关性描述为正,并在对的集合上使用Spearman的rho其中提供该相关性的估计,并对使用Spearman相关性的另一种估计,其中相关性为负。然后,这两个估计值表征了和之间的相关结构,并且与使用所有数据进行估计时接近的相关估计值不同,这些估计值都将很大并且符号相反。X ÿ X < 一个X > 一个X ÿ 0x=a(x,y)x<ax>axy0

有人可能会争辩说,仅凭经验信息(观察到的对)就足以证明这一点。(x,y)


本质上,我会将x〜y关系分为两部分。在x = a以下,Spearman的rho相关系数为正。高于x = a时,Spearman的rho相关系数为负。我喜欢这种方法。但是,还有一些方法可以通过参数测试x和y之间的关系是否符合反抛物线,即,其中为负。也许,这需要自定义统计测试?ay=ax2+bx+ca
user1447630'9

1
为此,您可以使用OLS线性回归拟合二次模型,并进行标准的统计检验(系数a大于0)(例如单尾t检验)。
迈克尔·切尔尼克

1
@Michael,关于您的最后评论,如果不在零附近对称分布,则和之间可能存在较大的共线性。由于这可能会影响回归系数的标准检验,因此似然比检验可能更合适,对吗?x x 2xxx2t
2012年

@Macro我猜x和x之间是否存在高度相关性,您的建议可能很好。但是我确实认为,即使协变量X和X可能相关,对系数进行单独的t检验也是很常见的。高共线性使系数非常不稳定,因为可识别性几乎消失了。在这种情况下,对协变量的系数进行任何类型的检验可能都没有意义。1 2212
迈克尔·切尔尼克


0

如果我的理解是错误的,请有人纠正我,但是处理非线性变量的一种方法是使用线性逼近。因此,例如,取指数分布的对数应该可以将变量视为正态分布。然后,它可以像任何线性回归一样用于解决问题。


8
我认为这并不能真正回答问题。进行对数与进行线性逼近不是一回事。而且,即使您使用日志,原始变量的日志为正态分布变量的分布也不是指数分布,而是对数正态分布。但是,对于线性回归而言,自变量和因变量都不需要正态分布才能适用-这里的问题是变量之间的关系,而不是它们的边际分布。
Silverfish

0

我曾经实现通用的加性模型来检测两个变量之间的非线性关系,但是最近我发现了通过nlcorR中的程序包实现的非线性相关性,您可以按照与Pearson相关性相同的方式来实现此方法,相关系数在0和1之间,而不是在Pearson相关中在-1和1之间。较高的相关系数意味着存在很强的非线性关系。假设两个时间序列x2y2,两个时间序列之间的非线性相关性如下测试

install.packages("devtools") 
library(devtools)
install_github("ProcessMiner/nlcor")
library(nlcor)
c <- nlcor(x2, y2, plt = T)
c$cor.estimate
[1] 0.897205

这两个变量似乎通过非线性关系密切相关,您还可以获取相关系数的调整后的p值

c$adjusted.p.value
[1] 0

您还可以绘制结果

print(c$cor.plot)

您可以查看此链接以获取更多详细信息

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.