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

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

> Анализ медицинских данных в R и SAS
hot_assay
сообщение 26.03.2014 - 17:47
Сообщение #1





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



Здравствуйте!
Буду благодарен за рекомендации по использованию R и SAS в анализе данных клинических исследований (хотя бы минимальные, общего характера, с учётом того, что пользователю, привыкшему к Graphical user interface, нужно въехать в специфику рассматриваемо ПО laugh.gif )) . Интересуют преимущества данных систем по сравнению с другими (например, Statsoft STATISTICA). Какие модули необходимо иметь для решения медицинских задач? Заменяют ли R и SAS друг друга в плане фукционала? Отдельное спасибо за ссылки с практическими примерами по рассматриваемому вопросу.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
 
Открыть тему
Ответов
TheThing
сообщение 15.09.2014 - 13:59
Сообщение #2





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



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

Решил глянуть, как реализован пакет MDR в R - все хорошо, практически ничем по фичам не уступает аналогу GUI на JAVA http://sourceforge.net/projects/mdr/. Но ВРЕМЯ выполнения!! Массив из 250 наблюдений 25 предикторов - время анализа в R: 221 секунда, MDR Java: 1.2 секунд; массив 250 наблюдений 50 предикторов - R: 1950 секунд!!!, Java: 3,9 секунды. Ну и так далее...50 предикторов в генетических исследованиях - это очень мало, следовательно MDR в R пока сложно пользоваться (мне хотелось еще прикрутить алгоритм в shiny, там вообще браузер зависнет навека (((. Подобные пакеты,как mbMDR и другие работают также..

Решил взять другой пример, вычислить массивный полином (100) 500 000 раз. Код в R (время выполнения 4 минуты)

trpol2 <- function(n,x) {
mu <<- 10.0
pu <<- 0.0
pol <<- 1:100
tp1 <<- 2.0
tm1 <<- 1/2.0
for (i in 1:n) {
for (j in 1:100) {
mu <<- (mu + tp1) * tm1
pol[j] <<- mu
}
s <<- 0.0;
for (j in 1:100) {
s <<- x*s + pol[j];
}
pu <- s+pu;
}
print(pu)
}

trpol2(500000,0.2)

Код на Java, время выполнения в браузере! http://www.browxy.com/ - 2 секунды.

public class HelloWorld {
static public void main(String argv[]) {
float mu = (float)10.0;
float x,s;
float pu = (float)0.0;
int su, i, j, n;
float pol[] = new float[100];

n = 500000;
x = (float)0.2;
for(i=0; i<n; i++) {
for (j=0; j<100; j++) {
mu = (mu + (float)2.0) / (float)2.0;
pol[j] = mu;
}
s = (float)0.0;
for (j=0; j<100; j++) {
s = x*s + pol[j];
}
pu += s;
}
System.out.println(pu);
}
}

Самое смешное, код на Python, время выполнения 6 секунд:

n = 500000
x = 0.2

def t(x):
mu = 10.0
pu = 0.0
pol =[0] * 100
r = range(0,100)

for i in range(0,n):
for j in r:
pol[j] = mu = (mu + 2.0) / 2.0
su = 0.0
for j in r:
su = x * su + pol[j]
pu = pu + su
print pu

t(x)

Немного расстроился..Ладно с этими полиномами, но мне реально хотелось работать с многофакторным уменьшением размерности в R, видимо, не судьба.. weep.gif

Сообщение отредактировал TheThing - 15.09.2014 - 19:00
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
p2004r
сообщение 13.10.2014 - 13:10
Сообщение #3





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



Цитата(TheThing @ 15.09.2014 - 13:59) *
Не с целью продолжения холивара на тему языков программирования, а просто обыденный случай.


да да, конечно smile.gif

1) если так непосильно писать векторизированный код, а писать портянки с рекурсивными форами "массивного полинома" чувствуете себя в силе, то в Вашем распоряжении Rcpp и практически без изменений "код на ява" (в силу весьма ограниченного объема использования возможностей языка smile.gif ) можно вставить в инлайн вставку кода c++ smile.gif


2) никакого примера о тормозах MDR в письме нет -- и комментировать собственно нечего.


Signature
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 
TheThing
сообщение 23.10.2014 - 07:09
Сообщение #4





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



Цитата(p2004r @ 13.10.2014 - 13:10) *
1) если так непосильно писать векторизированный код, а писать портянки с рекурсивными форами "массивного полинома" чувствуете себя в силе, то в Вашем распоряжении Rcpp и практически без изменений "код на ява" (в силу весьма ограниченного объема использования возможностей языка smile.gif ) можно вставить в инлайн вставку кода c++ smile.gif


Значит, чтобы решить задачу с полиномом (а таких примеров множество), человек должен знать как R так и с++? В вышеприведенном примере я использовал базовые возможности языка Java, Python и т.д., не пользуясь никакими сторонними библиотеками. Хотелось бы увидеть Вашу PRO-версию векторизированного родного R кода, которая бы могла составить конкуренцию хотя бы Python по скорости выполнения..

Цитата
2) никакого примера о тормозах MDR в письме нет -- и комментировать собственно нечего.


Прокомментируйте, пожалуйста и запаситесь терпением:

library(MDR)
data(mdr2)

fit.cv<-mdr.cv(data = mdr2, K = 3, cv = 10, ratio = NULL, equal = "HR", genotype = c(0, 1, 2))

Эта база имеет всего лишь 100 предикторов, у меня в реальной работе их тысячи. На Java и в SAS у меня это занимает секунды, а сколько у Вас в R? smile.gif

Сообщение отредактировал TheThing - 23.10.2014 - 09:35
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
 

Сообщений в этой теме
- hot_assay   Анализ медицинских данных в R и SAS   26.03.2014 - 17:47
- - p2004r   Цитата(hot_assay @ 26.03.2014 - 17:4...   26.03.2014 - 18:56
- - hot_assay   Цитата(p2004r @ 26.03.2014 - 19:56) ...   27.03.2014 - 05:34
|- - DoctorStat   Цитата(hot_assay @ 27.03.2014 - 06:3...   27.03.2014 - 09:59
||- - TheThing   1) Первая и, наверное, самая главная причина, поче...   27.03.2014 - 10:44
|||- - p2004r   Цитата(TheThing @ 27.03.2014 - 10:44...   27.03.2014 - 10:53
||||- - TheThing   Цитата(p2004r @ 27.03.2014 - 11:53) ...   27.03.2014 - 12:45
||||- - p2004r   Цитата(TheThing @ 27.03.2014 - 12:45...   27.03.2014 - 22:33
||||- - TheThing   Цитата(p2004r @ 27.03.2014 - 22:33) ...   28.03.2014 - 11:17
||||- - p2004r   Цитата(TheThing @ 28.03.2014 - 11:17...   29.03.2014 - 10:49
|||- - DoctorStat   Цитата(TheThing @ 27.03.2014 - 11:44...   27.03.2014 - 12:53
||- - p2004r   Цитата(DoctorStat @ 27.03.2014 - 09...   27.03.2014 - 10:52
||- - Вале а   Цитата(DoctorStat @ 27.03.2014 - 10...   11.10.2014 - 16:33
|- - p2004r   Цитата(hot_assay @ 27.03.2014 - 05:3...   27.03.2014 - 10:57
- - hot_assay   Всем большое спасибо за информацию! Возникает ...   27.03.2014 - 16:34
|- - p2004r   Цитата(hot_assay @ 27.03.2014 - 16:3...   27.03.2014 - 22:36
- - DrgLena   Ответ есть не только в сети, но и на этом форуме...   27.03.2014 - 18:04
- - TheThing   Не с целью продолжения холивара на тему языков про...   15.09.2014 - 13:59
|- - p2004r   Цитата(TheThing @ 15.09.2014 - 13:59...   13.10.2014 - 13:10
|- - TheThing   Цитата(p2004r @ 13.10.2014 - 13:10) ...   23.10.2014 - 07:09
|- - p2004r   Цитата(TheThing @ 23.10.2014 - 07:09...   23.10.2014 - 19:35
||- - TheThing   Цитата(p2004r @ 23.10.2014 - 19:35) ...   23.10.2014 - 21:07
||- - p2004r   Цитата(TheThing @ 23.10.2014 - 21:07...   23.10.2014 - 22:16
|- - p2004r   Цитата(TheThing @ 23.10.2014 - 07:09...   23.10.2014 - 20:49
|- - TheThing   Цитата(p2004r @ 23.10.2014 - 20:49) ...   23.10.2014 - 21:21
|- - p2004r   Цитата(TheThing @ 23.10.2014 - 21:21...   23.10.2014 - 22:03
|- - TheThing   Цитата(p2004r @ 23.10.2014 - 22:03) ...   23.10.2014 - 23:29
|- - p2004r   Цитата(TheThing @ 23.10.2014 - 23:29...   24.10.2014 - 11:33
|- - p2004r   Кодfunction (mat, vec, k) { b <- 1 ...   24.10.2014 - 19:48
- - Вале а   Вы смотрели научно-художественный боевик "R п...   24.10.2014 - 17:48


Добавить ответ в эту темуОткрыть тему