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

37

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

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

user1447630
источник

Ответы:

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функцией.

PhilippPro
источник
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)

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

эмир
источник