Привет. Задача такая: есть три набора данных (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. попытка посчитать площадь по известной формуле
.
Код:
(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% работы сделано уже в ней.