Форум врачей-аспирантов

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Добавить ответ в эту темуОткрыть тему
> Вопрос по корреляционной адаптометрии
scrappy
сообщение 29.02.2012 - 18:14
Сообщение #1


Дух форума
*

Группа: Пользователи
Сообщений: 3
Регистрация: 21.12.2011
Пользователь №: 23375



Уважаемые форумчане и эксперты, возник вопрос по корреляционной адаптометрии: а именно как сделать преобразование Фишера для коэффициентов корреляций?
Можно ли это сделать в spss statistics или где-нибудь еще? Или же вообще можно без него обойтись?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
p2004r
сообщение 29.02.2012 - 19:11
Сообщение #2


Дух форума
*

Группа: Пользователи
Сообщений: 1062
Регистрация: 26.08.2010
Пользователь №: 22699



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


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


Signature
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
nokh
сообщение 3.03.2012 - 07:49
Сообщение #3


Дух форума
*

Группа: Пользователи
Сообщений: 1114
Регистрация: 13.01.2008
Из: Челябинск
Пользователь №: 4704



Цитата(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 Естественно, смысл колдовать с поправками есть только если у вас двумерное нормальное распределение, ну или хотя бы каждый показатель распределён нормально. Иначе нужно использовать непараметрическую корреляцию.

Сообщение отредактировал nokh - 3.03.2012 - 08:06
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
scrappy
сообщение 3.03.2012 - 16:59
Сообщение #4


Дух форума
*

Группа: Пользователи
Сообщений: 3
Регистрация: 21.12.2011
Пользователь №: 23375



Спасибо за качественное и понятное разъяснение
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
serg26
сообщение 22.03.2014 - 19:06
Сообщение #5


Дух форума
*

Группа: Пользователи
Сообщений: 4
Регистрация: 22.03.2014
Пользователь №: 26219



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


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


Дух форума
*

Группа: Пользователи
Сообщений: 1114
Регистрация: 13.01.2008
Из: Челябинск
Пользователь №: 4704



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

Что вы подразумеваете под суммой коэффициентов корреляции?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
serg26
сообщение 22.03.2014 - 19:49
Сообщение #7


Дух форума
*

Группа: Пользователи
Сообщений: 4
Регистрация: 22.03.2014
Пользователь №: 26219



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

Спасибо за отклик! Подразумеваю сумму модулей коэффициентов корреляции (вес корреляционного графа) в корреляционной матрице. Допустим, есть корреляционная матрица признаков, оцениваем вес корреляционного графа как сумму модулей коэффициентов. А как можно рассчитать 95% ДИ для полученного веса графа?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
nokh
сообщение 22.03.2014 - 21:02
Сообщение #8


Дух форума
*

Группа: Пользователи
Сообщений: 1114
Регистрация: 13.01.2008
Из: Челябинск
Пользователь №: 4704



Цитата(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)

Сообщение отредактировал nokh - 25.03.2014 - 23:08
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
serg26
сообщение 23.03.2014 - 16:42
Сообщение #9


Дух форума
*

Группа: Пользователи
Сообщений: 4
Регистрация: 22.03.2014
Пользователь №: 26219



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


Дух форума
*

Группа: Пользователи
Сообщений: 717
Регистрация: 23.08.2010
Пользователь №: 22694



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


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

Сообщение отредактировал 100$ - 23.03.2014 - 17:11
Прикрепленные файлы
Прикрепленный файл  demoDA.rar ( 13,83 килобайт ) Кол-во скачиваний: 141
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
serg26
сообщение 23.03.2014 - 17:37
Сообщение #11


Дух форума
*

Группа: Пользователи
Сообщений: 4
Регистрация: 22.03.2014
Пользователь №: 26219



100$, большое Вам спасибо! Как освоюсь с R, буду тренироваться.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
nokh
сообщение 23.03.2014 - 19:36
Сообщение #12


Дух форума
*

Группа: Пользователи
Сообщений: 1114
Регистрация: 13.01.2008
Из: Челябинск
Пользователь №: 4704



Цитата(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 можно работать как в примере выше.

Сообщение отредактировал nokh - 25.03.2014 - 23:45
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
p2004r
сообщение 23.03.2014 - 22:50
Сообщение #13


Дух форума
*

Группа: Пользователи
Сообщений: 1062
Регистрация: 26.08.2010
Пользователь №: 22699



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

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...nce-between-and

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

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


Signature
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
anserovtv
сообщение 24.03.2014 - 20:52
Сообщение #14


Дух форума
*

Группа: Пользователи
Сообщений: 219
Регистрация: 4.06.2013
Из: Тверь
Пользователь №: 24927



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

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

Сообщение отредактировал anserovtv - 31.03.2014 - 17:20
Прикрепленные файлы
Прикрепленный файл  пример_из_учебника.bmp ( 752,88 килобайт ) Кол-во скачиваний: 574
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
nokh
сообщение 25.03.2014 - 23:05
Сообщение #15


Дух форума
*

Группа: Пользователи
Сообщений: 1114
Регистрация: 13.01.2008
Из: Челябинск
Пользователь №: 4704



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

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

2 страниц V   1 2 >
Добавить ответ в эту темуОткрыть тему