Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум врачей-аспирантов _ Медицинская статистика _ Вопрос по корреляционной адаптометрии

Автор: scrappy 29.02.2012 - 18:14

Уважаемые форумчане и эксперты, возник вопрос по корреляционной адаптометрии: а именно как сделать преобразование Фишера для коэффициентов корреляций?
Можно ли это сделать в spss statistics или где-нибудь еще? Или же вообще можно без него обойтись?

Автор: p2004r 29.02.2012 - 19:11

Цитата(scrappy @ 29.02.2012 - 18:14) *
Уважаемые форумчане и эксперты, возник вопрос по корреляционной адаптометрии: а именно как сделать преобразование Фишера для коэффициентов корреляций? Можно ли это сделать в spss statistics или где-нибудь еще? Или же вообще можно без него обойтись?


Бутстрепом посчитайте 95% доверительный интервал суммы коэффициентов корреляции для своей выборки.

Автор: nokh 3.03.2012 - 07:49

Цитата(scrappy @ 29.02.2012 - 20:14) *
Уважаемые форумчане и эксперты, возник вопрос по корреляционной адаптометрии: а именно как сделать преобразование Фишера для коэффициентов корреляций? Можно ли это сделать в spss statistics или где-нибудь еще? Или же вообще можно без него обойтись?

По поводу "обойтись" - можно, наверное и обойтись. Как и любая другая поправка, функция z Фишера может быть важна в пограничных случаях, т.е. когда вам затруднительно склониться в пользу нулевой или альтернативной гипотезы. Если же у вас высоко статистически значимая корреляция - после преобразования она такой и останется. Преимущества преобразованной величины в том, что она распределена приблизительно нормально, в то время как распределение коэффициента корреляции может быть скошенным. Z-преобразование рекомендуется при оценках статистической значимости корреляции для выборок n<500, а также при вычислении доверительных интервалов для r. После введения поправки и р, и ДИ увеличатся (ДИ по-современному действительно лучше считать бутстрепом, как рекомендовал p2004r). Она адекватна для n>=50 и устойчива даже при n>=25. Однако для малых выборок рекомендуется преобразующая функция z* Хотеллинга, которая устойчива даже для n>=10.
1) Преобразование z Фишера.
z=0,5 ln((1+r)/(1-r)); дисперсия=1/(n-3)
2) Преобразование z* Хотеллинга
z*=z-((3z+r)/(4n-4)); дисперсия=1/(n-1)

Пример. r=0,86519 n=12
z=1,31363;
z*=1,20440 станд. отклонение s = корень из дисперсии = 1/sqrt(11)=0,30151
t-критерий = 1,20440/0,30151=3,9946. Эта величина сравнивается с критической для числа степеней свободы df=(n-2)=10. P=0,003.

Формулы и пример из: Sokal R.R., Rohlf F.J. Biometry: the principles and practice of statistics in biological research. N-Y: Freeman & Co, 1995. 850 p.

PS Естественно, смысл колдовать с поправками есть только если у вас двумерное нормальное распределение, ну или хотя бы каждый показатель распределён нормально. Иначе нужно использовать непараметрическую корреляцию.

Автор: scrappy 3.03.2012 - 16:59

Спасибо за качественное и понятное разъяснение

Автор: serg26 22.03.2014 - 19:06

Цитата(p2004r @ 29.02.2012 - 20:11) *
Бутстрепом посчитайте 95% доверительный интервал суммы коэффициентов корреляции для своей выборки.


Здравствуйте! Подскажите, пожалуйста, в какой программе это можно сделать? Может дадате ссылку на аналогичный пример? Облазил новый PAST, там практически для всего реализован бутстреп, но для своей задачи не нашел. На предзащите член совета сказал, что необходимо оценить 95%ДИ для суммы коэффициентов корреляции, но как и в чем это можно реализовать он не знает. Ученый совет его предложение поддержал и что теперь мне делать - не знаю. Буду Вам очень благодарен!

Автор: nokh 22.03.2014 - 19:22

Цитата(serg26 @ 22.03.2014 - 22:06) *
Здравствуйте! Подскажите, пожалуйста, в какой программе это можно сделать? Может дадате ссылку на аналогичный пример? Облазил новый PAST, там практически для всего реализован бутстреп, но для своей задачи не нашел. На предзащите член совета сказал, что необходимо оценить 95%ДИ для суммы коэффициентов корреляции, но как и в чем это можно реализовать он не знает. Ученый совет его предложение поддержал и что теперь мне делать - не знаю. Буду Вам очень благодарен!

Что вы подразумеваете под суммой коэффициентов корреляции?

Автор: serg26 22.03.2014 - 19:49

Цитата(nokh @ 22.03.2014 - 19:22) *
Что вы подразумеваете под суммой коэффициентов корреляции?

Спасибо за отклик! Подразумеваю сумму модулей коэффициентов корреляции (вес корреляционного графа) в корреляционной матрице. Допустим, есть корреляционная матрица признаков, оцениваем вес корреляционного графа как сумму модулей коэффициентов. А как можно рассчитать 95% ДИ для полученного веса графа?

Автор: nokh 22.03.2014 - 21:02

Цитата(serg26 @ 22.03.2014 - 22:49) *
Спасибо за отклик! Подразумеваю сумму модулей коэффициентов корреляции (вес корреляционного графа) в корреляционной матрице. Допустим, есть корреляционная матрица признаков, оцениваем вес корреляционного графа как сумму модулей коэффициентов. А как можно рассчитать 95% ДИ для полученного веса графа?

Не сталкивался с такой задачей, поэтому не понимаю, как правильнее организовать бутстреп. В общем виде представляется так:
(1) Если относиться к признаку в наборе, как случайной величине, то можно перебирать модули к.к. Это можно сделать и в PAST, но только не новом, а старом. Он рассчитывает ДИ в т.ч. для суммы. Т.е. если в качестве набора дать модули к.к. получим 95%-ный ДИ.
(2) Если относиться к признаку как к фиксированному показателю, то перебирать нужно исходные наблюдения в выборке. Т.е. для каждой бутстреп-реплики считать к.к. и находить сумму их модулей. А уже затем для полученного таким образом распределения набора сумм рассчитать ДИ. Такое можно организовать в R.

PS Почитал, что такое корреляционная адаптометрия. Как правило смотрят динамику или сравнивают по фиксированному числу конкретных физиол. показателей. Т.е. ваш случай - (2).

Вычисление веса корреляционного графа с 95%-ными ДИ в R (на примере ирисов Фишера, способ с библиотекой boot)

># смотрим данные
> str(iris)
'data.frame': 150 obs. of 5 variables:
$ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
$ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
$ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
$ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
$ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

> iris$Species
[1] setosa setosa setosa ...
...
[148] virginica virginica virginica
Levels: setosa versicolor virginica

> nvar<-4 # задаём число признаков
> d1<-iris[iris$Species=="setosa", 1:4] # делаем выборку данных, относящихся только к виду setosa
> cor(d1) # смотрим корреляционную матрицу
_________ Sepal.Length Sepal.Width Petal.Length Petal.Width
Sepal.Length 1.0000000 0.7425467 0.2671758 0.2780984
Sepal.Width 0.7425467 1.0000000 0.1777000 0.2327520
Petal.Length 0.2671758 0.1777000 1.0000000 0.3316300
Petal.Width 0.2780984 0.2327520 0.3316300 1.0000000

># задаём функцию для вычисления веса корреляционного графа: суммы (sum) модулей (abs) корреляций (cor) за вычетом корреляций признаков самих на себя и без повторов (/2)
> vg<-function(data, indices) {
i=data[indices,] # для обеспечения возможности перебора строк
(sum(abs(cor(i)))-nvar)/2
}
># подключаем предварительно установленную библиотеку boot
>library(boot)
>d1boot<-boot(d1, vg, R=999) #выбираем из данных d1 случайную выборку с возвратом, считаем для неё функцию веса корреляционного графа, делаем так 999 раз
>vg(d1) #считаем вес корреляционного графа
[1] 2.029903
# печатаем результаты оценки ДИ (boot.ci) методом процентилей (perc)
>print(boot.ci(d1boot, type="perc"))
BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
Based on 999 bootstrap replicates
CALL :
boot.ci(boot.out = d1boot, type = "perc")
Intervals :
Level Percentile
95% ( 1.292, 2.918 )
Calculations and Intervals on Original Scale

Таким образом для четырёх признаков Ириса щетинистого (Iris setosa) G=2,03 (95% ДИ: 1,29 - 2,92)

Автор: serg26 23.03.2014 - 16:42

Уважаемый nokh!
Огромное Вам спасибо за мудрый совет. До последнего надеялся, что все мои хотелки можно реализовать в PAST. Увы. Видимо, придется осваивать R.
Ох и страшный он, этот R. Впрочем, глаза боятся, руки делают. Подскажите, а где можно взять файл данных с ирисами (чтобы потренироваться "на кошках")?
С благодарностью за помощь, serg26

Автор: 100$ 23.03.2014 - 17:09

Цитата(serg26 @ 23.03.2014 - 17:42) *
Подскажите, а где можно взять файл данных с ирисами?


А вот он.
На нем все тренируются, начиная с Фишера

 demoDA.rar ( 13,83 килобайт ) : 422
 

Автор: serg26 23.03.2014 - 17:37

100$, большое Вам спасибо! Как освоюсь с R, буду тренироваться.

Автор: nokh 23.03.2014 - 19:36

Цитата(serg26 @ 23.03.2014 - 19:42) *
... Видимо, придется осваивать R. Ох и страшный он, этот R. Впрочем, глаза боятся, руки делают. Подскажите, а где можно взять файл данных с ирисами (чтобы потренироваться "на кошках")?

Самому страшно, а куда деваться? smile.gif 100$ уже выложил данные, но они есть даже в википедии: http://ru.wikipedia.org/wiki/Ирисы_Фишера , а также в самой R (iris).
Меня долго тормозила необходимость манипулировать csv-файлами со всякими разделителями, работать с которыми лично мне всегда было неудобно. Но есть способы проще. Достаточно создать таблицу с названиями колонок в первой строке (например в Excel), скопировать в буфер, а в R набить: mydata<-read.table("clipboard", h=T, dec=",") После этого с данными, названными здесь mydata можно работать как в примере выше.

Автор: p2004r 23.03.2014 - 22:50

Всё хорошо, но "<-" "->" "->>" "<<-" и "=" неэквивалентны.

The operators <- and = assign into the environment in which they are evaluated. The operator <- can be used anywhere, whereas the operator = is only allowed at the top level (e.g., in the complete expression typed at the command prompt) or as one of the subexpressions in a braced list of expressions.

http://stackoverflow.com/questions/6140694/is-there-a-technical-difference-between-and

У R крайне выразительный синтаксис позволяющий писать действительно короткий код при манипуляциях с данными, перенимать навыки индустральных "гребцов с галер" самое последнее что следует стремиться делать. Никто из присутствующих писать "программы" в индустриальном стиле никогда не будет.

PS стоило каким то идиотам в гугле начать нести бред про _гипотетическую_ ошибку вида (x<-2).... ну посочувствуем фирме набравшей бомжей на работу и будем продолжать форматировать код нормально? smile.gif

Автор: anserovtv 24.03.2014 - 20:52

Подобный анализ легко сделать с применением структурного моделирования SEM.
Не уверен, правда, что вам удастся убедить в правомерности подхода уважаемых членов совета!!!

Бутстреп-оценка для коэффициентов корреляций есть в SPSS.

 пример_из_учебника.bmp ( 752,88 килобайт ) : 888
 

Автор: nokh 25.03.2014 - 23:05

Цитата(p2004r @ 24.03.2014 - 01:50) *
Всё хорошо, но "<-" "->" "->>" "<<-" и "=" неэквивалентны.
...
PS стоило каким то идиотам в гугле начать нести бред про _гипотетическую_ ошибку вида (x<-2).... ну посочувствуем фирме набравшей бомжей на работу и будем продолжать форматировать код нормально? smile.gif

Да я не то чтобы ереси начитался... Просто тупо лень 2 знака вместо одного набивать, т.к. пока не столнулся с проблемами при замене <- на = и даже в книгах видел. Но из уважения к языку, кодерам и в дидактических целях сейчас подкорректирую код.

Автор: p2004r 29.03.2014 - 11:23

Цитата(nokh @ 25.03.2014 - 23:05) *
Да я не то чтобы ереси начитался... Просто тупо лень 2 знака вместо одного набивать, т.к. пока не столнулся с проблемами при замене <- на = и даже в книгах видел. Но из уважения к языку, кодерам и в дидактических целях сейчас подкорректирую код.


Искреннее Спасибо!

Автор: nokh 16.08.2015 - 20:42

Пробовал описанный подход на иммунологических данных: сравнивал оценки бутстрепа, складного ножа, смотрел распределения статистики "веса корреляционного графа" (ВКГ). Последняя имеет выраженную асимметрию. Но гистограммы результата бутстрепа меня сильно смутили. На них пунктиром покзано среднее значение. Видно, что как для исходного показателя ВКГ, таки и для его десятичного логарифма среднее не совпадает с тем средним, корое получается по гистограммам распределения. Первое должно быть в районе 4,5, второе - в районе 0,65. Почему же такое сильное несоответствие и не лучше ли использовать в качестве оценки среднего не истинное значение, а среднее бутстреп-выборок? Есть ли где-то рекомендации на такой случай? Данные прикрепил.

 

 Данные.rar ( 1,84 килобайт ) : 333
 

Автор: nokh 26.08.2015 - 18:35

Никто не хочет мне помогать frown.gif
Пришлось читать ещё. Пока впечатления такие:
1) По поводу статистического анализа данных по корреляционной адаптометрии (КА) большинство авторов не заморачиваются, просто: "там - больше, здесь меньше - вывод". Даже диссертации есть.
2) Существуют различия, вероятно просто традиционные, в представлении результатов складного ножа и бутстрепа. Для складного ножа обычно дают и оценку параметра и его ДИ по сгенерированным этой техникой репликам. Для бутстрепа же оценку параметра бутстрепом обычно не приводят (дают реальную оценку), приводят ДИ.
3) Что касается бутстрепа, то ВСа - от лукавого: там много ограничений когда именно такой бутстреп лучше. В неопределённых же ситуациях на практике понятней и надёжней обычный метод процентилей.
4) Что касается параметра "вес корреляционного графа", то похоже техника складного ножа просто не подходит к этой статистике. Такое бывает, классический пример, когда бутстреп работает а джекнайф нет - оценка медианы.
5) Зато техника складного ножа позволяет выйти на нетипичные объекты - статистически значимые выбросы, которые бутстреп перемалывает не глядя в общем объёме. Информации и идей набралось на статью по статистическому анализу данных по КА. Определюсь с набором данных и буду писать (по крайней мере начну пока увлечён).

Буду признателен если по 1)-5) меня поправят.

Автор: nokh 1.09.2019 - 17:36

Анонос моего раздела по КА в коллективной монографии. Обсуждаются следующие вопросы:

1) Какую брать корреляцию: Пирсона или Спирмена
2) Какую использовать меру: вес корреляционного графа (ВКГ) или среднюю абсолютную корреляцию (САК)
3) Какие корреляции брать в расчёт: все или только превышающие некий порог (часто берут 0,5 по абсолютному значению).
4) Как рассчитать 95% ДИ для ВКГ с использованием техник бутстрепа и складного ножа
5) Как проверить многопеременные данные на выбросы для ВКГ
6) Как сравнить выборки по ВКГ с помощью:
- расчёта 95% ДИ,
- рандомизационной техники Монте-Карло,
- дисперсионного анализа на псевдозначениях техники складного ножа.

Монография и приложение к ней с кодами R для расчётов прикреплены под этим сообщением.
Также их можно скачать с яндекс-диска по ссылке:
https://yadi.sk/d/uj1Mg4OUBMp4SA
(яндекс-диск некоторыми браузерами открывается некорректно, пробуйте несколько если что...)

 Метаорганизм_Стресс_и_адаптация_2019.pdf ( 11,91 мегабайт ) : 1284
 Приложение_Корреляционная_адаптометрия_в_R.doc ( 87 килобайт ) : 253
 

Автор: ogurtsov 2.09.2019 - 19:12

Цитата(nokh @ 1.09.2019 - 17:36) *
1) Какую брать корреляцию: Пирсона или Спирмена

The Hellinger Correlation, конечно же
https://arxiv.org/abs/1810.10276
https://cran.r-project.org/web/packages/HellCor/index.html

Автор: p2004r 3.09.2019 - 21:22

Цитата(ogurtsov @ 2.09.2019 - 19:12) *
The Hellinger Correlation, конечно же
https://arxiv.org/abs/1810.10276
https://cran.r-project.org/web/packages/HellCor/index.html


А неплохо ("естественные группировки" он за корреляции не признает, что вполне даже логично и хорошо для разборок с ложными к.к.)



 

Автор: p2004r 8.09.2019 - 19:17

Цитата(p2004r @ 3.09.2019 - 21:22) *
А неплохо ("естественные группировки" он за корреляции не признает, что вполне даже логично и хорошо для разборок с ложными к.к.)


А вообще сосет sad.gif

> HellCor::HellCor(c(rnorm(100, mean=1), rnorm(100, mean=50)), c(rnorm(100, mean=1), rnorm(100, mean=50)) )
$Hcor
[1] 0.8612872

$pvalue
[1] NA


Вот это корреляцией не называется, это "ложный к.к. вызванный естественной группировкой в данных"

 

Автор: nokh 31.10.2019 - 08:17

Сообщение #19 подкорректировал, материалы к сообщению прикрепил.

Автор: 100$ 7.01.2020 - 13:05

Цитата(nokh @ 31.10.2019 - 08:17) *
Сообщение #19 подкорректировал, материалы к сообщению прикрепил.


Указанную главу в монографии прочел и вижу решение этой задачи немного иначе.

Поскольку вектор признакового описания объектов содержит 11 координат, возникает соблазн изучения совместного распределения всех этих цитокинов, интерлейкинов и гормонов стресса. Тут бы я срочно вспомнил, что многомерные обобщения rho Спирмена предлагались Реймхартом и ван Зейленом (1978), Вольфом (1980) и Джо (1990).
Посему для всех 4 групп я бы рассчитал соответствующие многомерные rho, состряпал бы из них интересующий меня линейный контраст и уж его-то с чувством, с толком, с расстановкой бутстрапировал бы до упаду. Опосля чего с устатку накатил бы шамбертена.

P.S. Для датасета "Доноры" многомерный Спирмен rho(11)=0.007547. При тестировании матрицы попарных пирсоновских корреляций chi2=43.35[0.87], т.е. нулевая гипотеза о том, что корреляционная матрица не отличается от единичной, не отвергается. Словом, вес корреляционного графа для нее можно и не рассчитывать ).

P.P.S. На стр. 176 монографии формула для G записана так, что формально условию |rij|>=cutoff соответствует и главная диагональ корр. матрицы. Де-факто же (как это следует из скрипта) суммируются только наддиагональные модули. В общем, на будущее в таких формулах при значке суммы надо просто указывать соотношение для i и j: "j>i".

Автор: nokh 10.01.2020 - 10:50

Цитата(100$ @ 7.01.2020 - 15:05) *
Указанную главу в монографии прочел и вижу решение этой задачи немного иначе.

За поправку спасибо.
Что касается многомерного подхода, то он, наряду с другими, имеет право на существование. Возможно, он лучше. Возможно ещё лучше брать из него главные компоненты или главные координаты. Но этим нужно специально заниматься, считать, сравнивать с результатами классического подхода и т.д. Я же пытался действовать в рамках используемой большинством практиков схемы, но поскольку сразу же обнаружил в ней минусы, то пришлось не ограничиться внедрением ресемплинга, а влезть поглубже. А о статистическом уровне массовых работ по КА можно судить по статьям отсюда: http://adaptometry.narod.ru/Index.htm
Не хватило времени и сил поработать со второй составляющей корреляционной адаптометрии - дисперсией, которая вроде рассчитывается именно как многомерная дисперсия (могу ошибаться).
А в чём считали многомерного Спирмена? Попытался в Нmisc под R, но у меня пакет встал с предупреждениями об ошибках и пока не считает вообще ничего...

P.S. А вообще методика КА оказалась интересной. Я уже в 3 областях попробовал и везде "работает". У меня даже появилась своя идея объяснения эффекта в плюс к тем 7, что есть на сайте. Не такая крутая, конечно, но зато статистическая (и может быть самая правильная ;) ). Но это тоже нужно специально проверять, долго возиться с данными, причём чужими...

Автор: 100$ 10.01.2020 - 12:26

Цитата(nokh @ 10.01.2020 - 10:50) *
А в чём считали многомерного Спирмена?


В Экселе руками. Все как обычно.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)