Вопрос по корреляционной адаптометрии |
Здравствуйте, гость ( Вход | Регистрация )
Вопрос по корреляционной адаптометрии |
29.02.2012 - 18:14
Сообщение
#1
|
|
Группа: Пользователи Сообщений: 3 Регистрация: 21.12.2011 Пользователь №: 23375 |
Уважаемые форумчане и эксперты, возник вопрос по корреляционной адаптометрии: а именно как сделать преобразование Фишера для коэффициентов корреляций?
Можно ли это сделать в spss statistics или где-нибудь еще? Или же вообще можно без него обойтись? |
|
29.02.2012 - 19:11
Сообщение
#2
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 26.08.2010 Пользователь №: 22699 |
Уважаемые форумчане и эксперты, возник вопрос по корреляционной адаптометрии: а именно как сделать преобразование Фишера для коэффициентов корреляций? Можно ли это сделать в spss statistics или где-нибудь еще? Или же вообще можно без него обойтись? Бутстрепом посчитайте 95% доверительный интервал суммы коэффициентов корреляции для своей выборки. |
|
3.03.2012 - 07:49
Сообщение
#3
|
|
Группа: Пользователи Сообщений: 1202 Регистрация: 13.01.2008 Из: Челябинск Пользователь №: 4704 |
Уважаемые форумчане и эксперты, возник вопрос по корреляционной адаптометрии: а именно как сделать преобразование Фишера для коэффициентов корреляций? Можно ли это сделать в 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 |
|
3.03.2012 - 16:59
Сообщение
#4
|
|
Группа: Пользователи Сообщений: 3 Регистрация: 21.12.2011 Пользователь №: 23375 |
Спасибо за качественное и понятное разъяснение
|
|
22.03.2014 - 19:06
Сообщение
#5
|
|
Группа: Пользователи Сообщений: 4 Регистрация: 22.03.2014 Пользователь №: 26219 |
Бутстрепом посчитайте 95% доверительный интервал суммы коэффициентов корреляции для своей выборки. Здравствуйте! Подскажите, пожалуйста, в какой программе это можно сделать? Может дадате ссылку на аналогичный пример? Облазил новый PAST, там практически для всего реализован бутстреп, но для своей задачи не нашел. На предзащите член совета сказал, что необходимо оценить 95%ДИ для суммы коэффициентов корреляции, но как и в чем это можно реализовать он не знает. Ученый совет его предложение поддержал и что теперь мне делать - не знаю. Буду Вам очень благодарен! |
|
22.03.2014 - 19:22
Сообщение
#6
|
|
Группа: Пользователи Сообщений: 1202 Регистрация: 13.01.2008 Из: Челябинск Пользователь №: 4704 |
Здравствуйте! Подскажите, пожалуйста, в какой программе это можно сделать? Может дадате ссылку на аналогичный пример? Облазил новый PAST, там практически для всего реализован бутстреп, но для своей задачи не нашел. На предзащите член совета сказал, что необходимо оценить 95%ДИ для суммы коэффициентов корреляции, но как и в чем это можно реализовать он не знает. Ученый совет его предложение поддержал и что теперь мне делать - не знаю. Буду Вам очень благодарен! Что вы подразумеваете под суммой коэффициентов корреляции? |
|
22.03.2014 - 19:49
Сообщение
#7
|
|
Группа: Пользователи Сообщений: 4 Регистрация: 22.03.2014 Пользователь №: 26219 |
Что вы подразумеваете под суммой коэффициентов корреляции? Спасибо за отклик! Подразумеваю сумму модулей коэффициентов корреляции (вес корреляционного графа) в корреляционной матрице. Допустим, есть корреляционная матрица признаков, оцениваем вес корреляционного графа как сумму модулей коэффициентов. А как можно рассчитать 95% ДИ для полученного веса графа? |
|
22.03.2014 - 21:02
Сообщение
#8
|
|
Группа: Пользователи Сообщений: 1202 Регистрация: 13.01.2008 Из: Челябинск Пользователь №: 4704 |
Спасибо за отклик! Подразумеваю сумму модулей коэффициентов корреляции (вес корреляционного графа) в корреляционной матрице. Допустим, есть корреляционная матрица признаков, оцениваем вес корреляционного графа как сумму модулей коэффициентов. А как можно рассчитать 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 |
|
23.03.2014 - 16:42
Сообщение
#9
|
|
Группа: Пользователи Сообщений: 4 Регистрация: 22.03.2014 Пользователь №: 26219 |
Уважаемый nokh!
Огромное Вам спасибо за мудрый совет. До последнего надеялся, что все мои хотелки можно реализовать в PAST. Увы. Видимо, придется осваивать R. Ох и страшный он, этот R. Впрочем, глаза боятся, руки делают. Подскажите, а где можно взять файл данных с ирисами (чтобы потренироваться "на кошках")? С благодарностью за помощь, serg26 |
|
23.03.2014 - 17:09
Сообщение
#10
|
|
Группа: Пользователи Сообщений: 902 Регистрация: 23.08.2010 Пользователь №: 22694 |
Подскажите, а где можно взять файл данных с ирисами? А вот он. На нем все тренируются, начиная с Фишера Сообщение отредактировал 100$ - 23.03.2014 - 17:11
Прикрепленные файлы
|
|
23.03.2014 - 17:37
Сообщение
#11
|
|
Группа: Пользователи Сообщений: 4 Регистрация: 22.03.2014 Пользователь №: 26219 |
100$, большое Вам спасибо! Как освоюсь с R, буду тренироваться.
|
|
23.03.2014 - 19:36
Сообщение
#12
|
|
Группа: Пользователи Сообщений: 1202 Регистрация: 13.01.2008 Из: Челябинск Пользователь №: 4704 |
... Видимо, придется осваивать R. Ох и страшный он, этот R. Впрочем, глаза боятся, руки делают. Подскажите, а где можно взять файл данных с ирисами (чтобы потренироваться "на кошках")? Самому страшно, а куда деваться? 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 |
|
23.03.2014 - 22:50
Сообщение
#13
|
|
Группа: Пользователи Сообщений: 1091 Регистрация: 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).... ну посочувствуем фирме набравшей бомжей на работу и будем продолжать форматировать код нормально? |
|
24.03.2014 - 20:52
Сообщение
#14
|
|
Группа: Пользователи Сообщений: 219 Регистрация: 4.06.2013 Из: Тверь Пользователь №: 24927 |
Подобный анализ легко сделать с применением структурного моделирования SEM.
Не уверен, правда, что вам удастся убедить в правомерности подхода уважаемых членов совета!!! Бутстреп-оценка для коэффициентов корреляций есть в SPSS. Сообщение отредактировал anserovtv - 31.03.2014 - 17:20
Прикрепленные файлы
|
|
25.03.2014 - 23:05
Сообщение
#15
|
|
Группа: Пользователи Сообщений: 1202 Регистрация: 13.01.2008 Из: Челябинск Пользователь №: 4704 |
Всё хорошо, но "<-" "->" "->>" "<<-" и "=" неэквивалентны. ... PS стоило каким то идиотам в гугле начать нести бред про _гипотетическую_ ошибку вида (x<-2).... ну посочувствуем фирме набравшей бомжей на работу и будем продолжать форматировать код нормально? Да я не то чтобы ереси начитался... Просто тупо лень 2 знака вместо одного набивать, т.к. пока не столнулся с проблемами при замене <- на = и даже в книгах видел. Но из уважения к языку, кодерам и в дидактических целях сейчас подкорректирую код. |
|