Экспорт результатов cor.test в таблицу

Вопросы по статистическому пакету R. Не обязательно гео.
gamm
Гуру
Сообщения: 4056
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1054
Ваше звание: программист
Откуда: Казань

Re: Экспорт результатов cor.test в таблицу

Сообщение gamm » 16 июл 2013, 19:14

Максим Дубинин писал(а):Я ничего не говорил про изучение ядра, я говорил про изучения языка, вместо просьб готовых решений.
я понял, но ядро и есть собственно язык R, все остальное на нем написано (с привлечением внешних библиотек на С и Фортране). Т.е. пакеты - это не язык, это надстройки.

В самом языке R слишком много разных встроенных средств, все не запомнишь. Я имел в виду, что учить нужно базовые алгоритмы (работу со списками, векторами, матрицами, таблицами), и какие-нибудь варианты их реализации. Реализации лучше учить на примерах (поскольку в R есть проблемы с циклами, и их лучше заменять на готовые итераторы). Для примеров нужно прочитать книжку на 100 страниц в документации, и подключить рассылку R-bloggers, там есть что почитать.

ymr3R9Jge
Активный участник
Сообщения: 117
Зарегистрирован: 31 окт 2011, 00:18
Репутация: 14
Откуда: Кривий Ріг

Re: Экспорт результатов cor.test в таблицу

Сообщение ymr3R9Jge » 16 июл 2013, 22:28

Итого, сухой остаток: последовательность создания корреляционной матрицы для таблицы:

Код: Выделить всё

>num.col.gneis<- ncol(gneis)#создаём вектор-привязку, равный по длине количеству столбцов в исследуемой таблице
>p.val.gneis<- matrix(NA, ncol=num.col.gneis, nrow=num.col.gneis)#создаём матрицу-пустышку для занесения значений p-value
>p.cor.gneis<- matrix(NA, ncol=num.col.gneis, nrow=num.col.gneis)#создаём матрицу-пустышку для занесения значений коэффициентов корреляции
>for (i in 1:(num.col.gneis-1)) {#начинаем внешний цикл для расчёта по строкам
+for(j in (i+1):num.col.gneis) {#начинаем вложенный цикл для расчёта по столбцам
+tmp<- cor.test(gneis[, i], gneis[, j], method="kendall", use="pairwise.complete.obs")#рассчитываем коэффициенты корреляции с требуемыми опциями
+p.val.gneis[i, j]=p.val.gneis[j, i]=tmp$p.value#записываем в матрицу p.val.gneis результаты рассчёта p-value
+p.cor.gneis[i, j]=p.cor.gneis[j, i]=tmp$estimate#записываем в матрицу p.cor.gneis результаты рассчёта коэффициентов корреляции
+}#закрываем вложенный цикл
+}#закрываем внешний цикл
>diag(p.val.gneis)=0#заносим в главную диагональ матрицы p.val значение "0" (уровень значимости корреляции показателя с самим собой)
>diag(p.cor.gneis)=1#заносим в главную диагональ матрицы p.cor значение "1" (коэффициент корреляции показателя с самим собой)
>p.val.gneis[lower.tri(p.val.gneis)]<- NA#заполняем элементы матрицы ниже главной диагонали значениями "NA" (для последующей замены в табличном процессоре)
>p.cor.gneis[lower.tri(p.cor.gneis)]<- NA#аполняем элементы матрицы ниже главной диагонали значениями "NA" (для последующей замены в табличном процессоре)
>gneis.correl<- matrix(NA, ncol=ncol(p.cor.gneis), nrow=2*nrow(p.cor.gneis))#создаём матрицу-пустышку для занесения данных из матриц p.cor.gneis и p.val.gneis
>ind=1:nrow(p.cor.gneis)#создаём вектор-привязку для черезстрочного заполнения матрицы gneis.correl данными матриц p.cor.gneis и p.val.gneis
>ind1=2*ind-1#вектор-привязка для заполнения нечётных строк
>ind2=2*ind-0#вектор-привязка для заполнения чётных строк
>gneis.correl[ind1, ]<- p.cor.gneis#заносим в матрицу gneis.correl данные матрицы p.cor.gneis с интервалом в 1 строку начиная с нечётной
>gneis.correl[ind2, ]<- p.val.gneis#заносим в матрицу gneis.correl данные матрицы p.val.gneis с интервалом в 1 строку начиная с чётной
>colnames(gneis.correl)<- colnames(gneis)#присваиваем столбцам матрицы имена в соответствии с первичной таблицей данных gneis
>write.table(gneis.correl, file="gneis_correl.csv", sep=";", dec=",")#экспортируем матрицу в CSV-файл

Ответить

Вернуться в «R»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 33 гостя