Площадь под кривой с вычислением интеграла по формуле трапеций
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | * Subject(!): Re: Площадь под кривой. * Вот синтаксис, который я написал для решения аналогичной проблемы. Площадь считается по формуле трапеции. Если моменты времени будут равномерно распределены, синтаксис может быть упрощен, хотя можно применять и так, без изменений. Нужно только поменять названия переменных и моменты времени. * Надеюсь, это поможет. * David Matheson * Техническая поддержка SPSS * Исходный вопрос. Как заставить SPSS подсчитать площадь под кривой для каждого наблюдения в файле данных? У меня есть измерения уровня лекарства в крови пациента в каждый из 9 моментов времени. Эти моменты неравномерно распределены, но одинаковы для всех пациентов. Предположим, я строю график зависимости уровня лекарства от времени для каждого пациента. Мне нужно, чтобы SPSS подсчитал площадь под кривой каждого графика, используя интегрирование по формуле трапеции, и сохранил результат в новой переменной. * Мне также нужно сохранить максимальный уровень лекарства для каждого пациента и момент времени, в который он впервые наблюдался. * Пример данных:. INPUT PROGRAM. - LOOP id=1 TO 50. - DO REPEAT v=TH00,TH05,TH10,TH15,TH20,TH30,TH40,TH60,TH80. - COMPUTE v=UNIFORM(25). - END REPEAT. - END CASE. - END LOOP. - END FILE. END INPUT PROGRAM. EXECUTE. DO REPEAT h = h00 h05 h10 h15 h20 h30 h40 h60 h80 / t = 0 .5 1 1.5 2 3 4 6 8 . COMPUTE h = t. END REPEAT. EXECUTE. * Интегрирование функции drug = f(time) по формуле трапеции. * drug - лекарство, time - время. VECTOR time = h00 to h80. VECTOR drug = th00 to th80. COMPUTE cmax = MAX(th00 to th80). COMPUTE tmax = $sysmis. COMPUTE lagdrug = $sysmis. COMPUTE lagtime = $sysmis. COMPUTE auc = 0. LOOP #k = 1 to 9. - DO IF (NOT(MISSING(drug(#k)))). - IF (NOT(MISSING(lagdrug))) auc = auc + (time(#k) - lagtime)*(lagdrug + drug(#k))/2 . - IF (drug(#k) = cmax and missing(tmax)) tmax = time(#k) . - COMPUTE lagdrug = drug(#k). - COMPUTE lagtime = time(#k). - END IF. END LOOP. EXECUTE. * Сохраняем файл с добавленными переменными CMAX (максимальный уровень), TMAX (номер момента времени, в который наблюдался максимальный уровень), и AUC (площадь под кривой), удаляя все промежуточные переменные, использованные для их вычисления. save outfile drugauc.sav / drop = h00 to h80 lagdrug lagtime. |
Related pages
...