Как мне проверить нелинейную связь?


37

Для графика 1 я могу проверить связь между x и y, выполнив простую корреляцию. участок 1

Для графика 2, где взаимосвязь нелинейная, но существует четкая связь между x и y, как я могу проверить связь и обозначить ее природу? участок 2

Ответы:


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)

Rfamily=binomialgamе(Икс,Z)x, zgam


1
x=a

@ user1447630 Это модель для отношений. Полиномиальная линейная регрессия или нелинейная регрессия, а также аддитивные модели являются способами для характеристики функциональных отношений. Я мог бы упомянуть любой из них. Но вы попросили определенную степень ассоциации, поэтому я дал вам другие возможные формы корреляции. Как бы ни был хорош ответ Macro, он соответствует функциональным отношениям, но не обеспечивает определенную степень связи.
Майкл Р. Черник

1
@ Майкл, я не знаю, какой вопрос вы читали, но ОП спросила, как проверить ассоциацию, а не меру ассоциации. В любом случае, каким бы приятным ни был ваш ответ (и игнорируя тот факт, что для этого требуется достаточно сильное априорное знание того, где происходит изменение), я думаю, что он слишком приспособлен к конкретному сюжету в этом вопросе, а не к общему проблема "нелинейной ассоциации".
Макрос

3
@ Майкл, ваша интерпретация ( «вопрос был о том, как обобщить концепцию корреляции ...» ) и статистический «аргумент», который вы даете (кстати, «проверка на достоверность коэффициентов и модели» в линейной модели, это так же, как проверка корреляции) не имеет никакого смысла, учитывая факты, поэтому я не собираюсь их рассматривать. Но "... после того, как вы дали свою, моя была неприемлема, а ваша была принята ... Я просто почувствовал, что это неправильно" - это кампания за ваш ответ, которая отражает только фиксацию точек повторения, а не что-то полезное для сообщества.
Макрос

5
xy

14

0

x=a(x,y)x<ax>axy0 при оценке с использованием всех данных эти оценки будут большими и противоположными по знаку.

(x,y)


y=ax2+bx+ca

1
Для этого вы подгоняете квадратичную модель, используя, скажем, линейную регрессию OLS, и проводите стандартный статистический тест, в котором коэффициент a больше 0 (скажем, односторонний t-тест).
Майкл Р. Черник

1
xxx2t тестирование коэффициента регрессии, тест отношения правдоподобия может быть более подходящим, верно?
Макрос

212

1

Вы можете проверить любую зависимость с помощью тестов корреляции расстояний. Смотрите здесь для получения дополнительной информации о корреляции расстояния: Понимание расчетов корреляции расстояния

А вот оригинал статьи: https://arxiv.org/pdf/0803.4101.pdf

В R это реализовано в energyпакете с dcor.testфункцией.


0

Кто-то исправит меня, если мое понимание здесь неверно, но один из способов справиться с нелинейными переменными - это использовать линейное приближение. Так, например, взятие журнала экспоненциального распределения должно позволить вам рассматривать переменную как нормальное распределение. Затем он может быть использован для решения проблемы, как любая линейная регрессия.


8
Я не думаю, что это действительно отвечает на вопрос. Регистрация логов - это не то же самое, что линейное приближение. Более того, даже если вы берете журналы, распределение, для которого журнал исходной переменной является нормально распределенной переменной, является не экспоненциальным распределением, а логнормальным распределением . Тем не менее, ни независимая, ни зависимая переменная не должны быть нормально распределены для линейной регрессии, чтобы быть подходящей - проблема здесь заключается в связи между переменными, а не в их предельных распределениях.
Серебряная

0

Я использовал для реализации общей аддитивной модели для обнаружения нелинейных отношений между двумя переменными, но недавно я узнал о нелинейной корреляции, реализованной с помощью nlcor пакета в R, вы можете реализовать этот метод так же, как корреляция Пирсона коэффициент корреляции находится между 0 и 1, а не -1 и 1, как в корреляции Пирсона. Более высокий коэффициент корреляции подразумевает существование сильной нелинейной связи. Давайте предположим, что два временных ряда, x2и y2нелинейная корреляция между двумя временными рядами проверяется следующим образом

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)

Вы можете просмотреть эту ссылку для более подробной информации

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.