Показаны сообщения с ярлыком R. Показать все сообщения
Показаны сообщения с ярлыком R. Показать все сообщения

вторник, 5 января 2010 г.

Определение IC50 в R

IC50 - при проверке токсичности какого-либо вещества in vitro это концентрация вещества при которой 50% клеток погибают. Большинство исследователей находят IC50 графическим способом. Это не точно и не дает возможности корректно сравнивать результаты разных экспериментов. Мы будем рассчитывать IC50 как положено.
Данные по токсичности как правило не линейные, поэтому сначала необходимо их аппроксимировать подходящей нелинейной функцией и затем по этой функции найти значение IC50. Наиболее часто для аппроксимации используется логарифмическая функция вида:

Здесь 4 параметра - b, c, d, e. e - это как раз IC50, d и с - наибольшее и наименьшее значение, а b - наклон прямой, касательной в точке IC50. Все коэффициенты вычисляются методом наименьших квадратов.
Всего этого можно и не знать если использовать функцию drm в R (функция доступна в пакете drc). Все не просто, а очень просто:
>results<-drm(yx,fct=LL.4())

Здесь yx исходный данные. При этом в первом столбце сигнал (процент выживших клеток, например), в во втором - концентрация. fct - (function type) - тип аппроксимирующей функции. LL.4 - логарифмическая функция с четырьмя параметрами. Переменная results теперь содержит значения b,c,d,e и их стандартные отклонения. Теперь не трудно узнать IC50.
Саму функцию можно построить на графике и увидеть насколько хорошо она описывает
экспериментальные данные.


Все подробности о пакете drc описаны его авторами в статье: Ritz, C. & Streibig, J. C. (2005) Bioassay Analysis using R. J. Statist. Software, Vol 12, Issue 5.

понедельник, 4 января 2010 г.

Графики с планками погрешностей в R


Хороший способ предлагается пакетом gplots. В стандартной поставке его нет, нужно устанавливать дополнительно. После команды
>install.packages("gplots")

R попросит выбрать зеркало и затем сама все скачает и установит.
Загружаем новый пакет:
>library(gplots)

Теперь в R доступна команда plotCI, которая как раз и строит графики "с усами".
>plotCI(x,mean(y), uiw=sd(y), ylim=yy, xlab= (expression("C, "*mu*"M")), ylab="Cell growth, % of control", log="x", bty="l")

По оси X - концентрация в мкМ. Для каждой точки Y есть несколько измерений, поэтому используется среднее - mean(y). uiw это размер усов, т.е. стандартное отклонение sd(y). ylim=yy - жестко задает диапазон значений для шкалы Y (здесь yy вектор 0;120). log(x) указывает, что шкала X - логарифмическая. xlab и ylab подписи осей. bty=l задает тип рамки. L (прямо по форме буквы) обозначает, что рамки будут слева и внизу графика.
Команда построила только точки с усами, если нужно соединить их линией, то достраиваем еще один график, но уже с типом "line":
>plotCI(x,mean(y), ylim=yy, type="line", xlab="", ylab="", log="x", axes=F)

На одном графике можно изобразить множество рядов данных. На рисунке вверху их два.