2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 ROC Curve в Wolfram Mathematica
Сообщение01.02.2016, 09:41 
Аватара пользователя


15/02/15
13
Привет. Задача такая: есть три набора данных (A,B,C), для каждого из них находим распределения с помощью SmoothKernelDistribution: DistA, DistB, DistC. После этого необходимо построить параметрическую ROC кривую (кривую ошибок), для чего нужно интегрировать полученные распределения, где параметр t находится в нижнем пределе интегрирования. В Mathematica
Код:
ParametricPlot[{NIntegrate[PDF[DistA, x], {x, t, 4}], (NIntegrate[PDF[DistB, x], {x, t, 4}] + NIntegrate[PDF[DistC, x], {x, t, 4}])/2}, {t, 0, 4}]
с большим трудом рисуется ROC кривая. Но крайне важным в этой всей задаче, является определение площади под ней. Есть несколько методов:
1. попытка посчитать площадь по известной формуле $S=\int_a^by(t)x'(t)\,dt$.
Код:
(NIntegrate[(PDF[DistB, t] + PDF[DistC, t])*NIntegrate[PDF[DistA, x], {x, t, 4}], {t, 0, 1}])/(-2)

Ошибка:
Код:
NIntegrate::nlim: x = t is not a valid limit of integration. >>
понятно на что она ругается, но непонятно как ей описать задачу правильно.

2. Попытка построить параметрическую область ParametricRegion и вычислить ее площадь с помощью Area
Код:
x[t_] = Integrate[PDF[DistA, x], {x, t, 4},  Assumptions -> t \[Element] Reals]
y[t_] = (Integrate[PDF[DistB, x], {x, t, 4},   Assumptions -> t \[Element] Reals] + Integrate[PDF[DistC, x], {x, t, 4},    Assumptions -> t \[Element] Reals])/2
R = ParametricRegion[{x[t], s*y[t]}, {{t, 0, 4}, {s, 0, 1}}]
RegionPlot[R]
Area[R]

Ошибок вроде нет, но Mathematica думает чрезмерно долго и не может даже осилить RegionPlot, я так и не дождался решения, а у меня этих наборов данных еще 60 штук.
Бьюсь над простецкой задачей уже несколько дней. Подскажите, как сделать правильно, быстро, просто. Может есть совсем иной способ получить эти ROC-кривые и площади под ними, но хочется уже добить этот! Кажется, что просто команды и синтаксис неудачные. Знаю что в SPSS Statistics все делается автоматом из набора данных по клику, но надо все сделать в Mathematica, так как 95% работы сделано уже в ней.

 Профиль  
                  
 
 Re: ROC Curve в Wolfram Mathematica
Сообщение01.02.2016, 11:16 
Заслуженный участник


25/02/11
1786
Не удивительно, что команда Nintegrate не работает, ей численные значения пределов нужны. Определить функцию
Код:
f[t_]:=-PDF[DistA, t] (NIntegrate[PDF[DistB, x], {x, t, 4}] + NIntegrate[PDF[DistC, x], {x, t, 4}])/2

а затем ее проинтегрировать: NIntegrate[f[t],{t,0,4}]. Если вдруг считает слишком долго, можно в опциях NIntegrate указать что метод попроще, Эйлера, например и точность поменьше.

 Профиль  
                  
 
 Re: ROC Curve в Wolfram Mathematica
Сообщение01.02.2016, 11:35 
Аватара пользователя


15/02/15
13
Так же
Изображение

 Профиль  
                  
 
 Re: ROC Curve в Wolfram Mathematica
Сообщение01.02.2016, 14:24 
Заслуженный участник


25/02/11
1786
И что, разве ответ не выдает?

 Профиль  
                  
 
 Re: ROC Curve в Wolfram Mathematica
Сообщение01.02.2016, 17:03 
Аватара пользователя


15/02/15
13
:facepalm: Выдает! И мое выражение выдает. Считает очень долго. И параметрическую область посчитал часов за 6, я уж забыл о ней. Есть ли возможность уменьшить время расчета пункта (2) в моем первом сообщении.
Большое спасибо!

 Профиль  
                  
 
 Re: ROC Curve в Wolfram Mathematica
Сообщение01.02.2016, 17:30 
Заслуженный участник


25/02/11
1786
Во-первых, зачем Integrate? x[t_]: = NIntegrate[...] и без всяких Assumptions.

Если так долго, а точность большая не нужна, то можно по точкам и область и площадь приближенно посчитать, например
Код:
tb1=ParallelTable[{x[i],y[i]},{i,0,4,10^-2}];
ListPlot[tb1,Joined->True]
tb2=ParallelTable[-PDF[DistA, i]tb1[[i,2]],{i,0,4,10^-2}];
area=Total@tb2  10^-2

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group