Площадь под кривой с вычислением интеграла по формуле трапеций

Автор: David Matheson
Создано: ?
Загрузить как файл:

* 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.

Изменено: 2010-09-18 22:45:33

 

Raynald's SPSS Tools по-русски © Raynald Levesque 2001—11, Антон Балабанов 2005–11