BAJAR

Introducción

La recuperación de fluorescencia después del fotoblanqueo (FRAP), una técnica ampliamente utilizada en biología y biomedicina, ofrece una oportunidad única para investigar la movilidad y la dinámica de las moléculas en células vivas. Proporciona información valiosa sobre la recuperación de moléculas marcadas con fluoróforos después de ser sometidas a fotoblanqueo.

Este manual presenta una metodología avanzada para el análisis de la recuperación de fluorescencia en la técnica de FRAP (Fluorescence Recovery After Photobleaching). Su objetivo principal es proporcionar a los investigadores una herramienta completa que les permita comprender y cuantificar la dinámica de las moléculas en células vivas mediante el uso de FRAP.

El contenido de este manual abarca los siguientes puntos clave:

  1. Fundamentos de la técnica de FRAP: Se proporciona una descripción detallada de los principios fundamentales de la técnica de FRAP, incluyendo los conceptos básicos de fotoblanqueo, recuperación de fluorescencia y el uso de fluoróforos en experimentos de FRAP.

  2. Modelos de recuperación de fluorescencia: Se introducen diferentes modelos matemáticos y estadísticos para describir la recuperación de la fluorescencia después del fotoblanqueo. Se explican los fundamentos teóricos de cada modelo y se muestran ejemplos de su aplicación en el análisis de datos de FRAP.

  3. Ajuste de curvas y estimación de parámetros: Se presenta una metodología para ajustar curvas de recuperación de fluorescencia a los datos experimentales obtenidos mediante FRAP. Se discuten las técnicas de optimización y se proporcionan herramientas prácticas para estimar los parámetros del modelo de recuperación.

  4. Análisis de resultados y evaluación de calidad: Se aborda la evaluación de la calidad del ajuste de las curvas de recuperación de fluorescencia mediante métodos estadísticos y visualización de resultados. Se discuten los criterios para determinar la bondad de ajuste y se presentan herramientas gráficas para analizar y comparar los resultados obtenidos.

  5. Simulación de datos y validación del modelo: Se explica el proceso de simulación estocástica de curvas de recuperación de fluorescencia basado en los parámetros estimados. Se discute la importancia de la simulación en el análisis de FRAP y se proporcionan herramientas para validar el modelo de recuperación mediante comparación con datos reales.

En resumen, este manual ofrece una guía completa y práctica para el análisis de la recuperación de fluorescencia en la técnica de FRAP. Los investigadores encontrarán en este manual una referencia útil para comprender los fundamentos teóricos, aplicar modelos estadísticos, ajustar curvas, evaluar resultados y realizar simulaciones que permitan un análisis riguroso y cuantitativo de los datos obtenidos mediante FRAP.

Vamos a comenzar

En la paquetería fraping se implementan las funciones necesarias para realizar el análisis de datos de FRAP. Sin embargo, para que esta funcione correctamente, también es necesario instalar la paquetería itz. Ambos son repositorios de GitHub, y su instalación se lleva a cabo mediante la función install_github de la paquetería devtools de R.

devtools::install_github("artitzco/itz")
devtools::install_github("artitzco/fraping")

De esta forma, las librerías quedarán instaladas en su equipo, por lo que cada que inicie un nuevo proyecto para el análisis de datos de FRAP, únicamente tendrá que importar las librerías correspondientes:

library(itz)
library(fraping)

Comienza Ahora (opcional)

Si deseas comenzar a utilizar la librería fraping de inmediato, puedes descargar un conjunto de datos de ejemplo utilizando la función downloadData. Esta función descargará un archivo con datos de FRAP en la carpeta “data” dentro de tu directorio de trabajo, que puedes utilizar como punto de partida para practicar los métodos de análisis que se describen en este manual. Ten en cuenta que esta descarga es opcional y puedes utilizar tus propios datos de FRAP si los tienes disponibles.

Si deseas utilizar los datos de ejemplo, ejecuta el siguiente código en la consola de comandos de R: fraping::downloadData(). Después de ejecutar esta función, además de la carpeta “data”, encontrarás un script de prueba llamado “test.fraping.R” en la raíz del directorio. Puedes utilizar este script como punto de partida para explorar y analizar los datos de FRAP.


La función newDataFrap crea una base para un nuevo grupo de datos de FRAP, la función sintetiza la información y devuelve una lista que permite al usuario manipular sus datos con mayor facilidad. Los parámetros que admite son el nombre del grupo y la intensidad del fotoblanqueo en porcentaje. Para más detalles ir a newDataFrap.

Para evitar futuros problemas, el nombre del grupo debe cumplir con las siguientes recomendaciones:

  1. No debe incluir espacios,
  2. Debe inicial con una letra,
  3. Sólo se admiten los caracteres especiales “.” y “_“.
A <- newDataFrap("Neurites", 80)
B <- newDataFrap("Secondary.Neurites", 80)
C <- newDataFrap("Dendrites", 80)

Recuerda seguir estas recomendaciones al crear nuevos grupos de datos de FRAP. Esto asegurará la consistencia y la correcta manipulación de los datos en futuros análisis.

Importar datos de FRAP

Una vez inicializados los grupos de datos, es hora de añadir la información. Una forma de hacerlo es mediante la función addDir del objeto newDataFrap. Esta función requiere que el usuario organice las tablas de FRAP en tres ficheros en su equipo: el primero con los datos de recuperación, el segundo con las tablas de control y el tercero con la información del fondo.

La función addDir de la paquetería fraping acepta los siguientes parámetros para agregar la información de los ficheros de datos de FRAP:

  • seconds: Duración del experimento en segundos.
  • photo: Índice del fotograma en el que se aplica el fotoblanqueo.
  • areaColumn: Nombre de la columna que contiene los datos de área.
  • inputColumn: Nombre de la columna que contiene los datos de intensidad.
  • dirR: Ruta del fichero de datos de recuperación.
  • dirC: Ruta del fichero de datos de control.
  • dirB: Ruta del fichero de datos de fondo (opcional).

Es importante tener en cuenta que los datos del fondo son opcionales. Si decides omitir la información del fichero de datos de fondo, debes considerar que esto tendrá un impacto directo en la estandarización de los datos durante el análisis.

A continuación se muestra un ejemplo de cómo utilizar la función addDir:

A$addDir(480, 4, "Area", "IntDen",
         "data/GFP/GFP Secondary Neurite",
         "data/GFP/GFP Secondary Neurite Control",
         "data/GFP/GFP Secondary Neurite Back")

B$addDir(480, 4, "Area", "IntDen",
         "data/LIFEACT GFP/LIFEACT GFP Secondary Neurite",
         "data/LIFEACT GFP/LIFEACT GFP Secondary Neurite Control",
         "data/LIFEACT GFP/LIFEACT GFP Secondary Neurite Back")

C$addDir(480, 4, "Area", "IntDen",
         "data/LIFEACT GFP/LIFEACT GFP Dendrite",
         "data/LIFEACT GFP/LIFEACT GFP Dendrite Control",
         "data/LIFEACT GFP/LIFEACT GFP Dendrite Back")

Al momento de crear un nuevo grupo de datos utilizando la función newDataFrap, se asigna automáticamente un color aleatorio al grupo. Este color se utiliza para diferenciarlo de los demás en las gráficas. Si deseas reasignar un color específico al grupo, puedes utilizar la función setColor del objeto newDataFrap. Esta función acepta como parámetro el valor del color en formato hex, o puedes elegir un color predefinido del vector grDevices::colors() o utilizar la función color de la paquetería itz.

A$setColor("#05753D")
B$setColor("#0000A6")
C$setColor("#E014F7")

Antes de realizar un ajuste paramétrico, es posible que prefieras visualizar los datos mediante gráficos para hacer una inspección visual. Para lograr esto, puedes utilizar la función plotRecover, que acepta como parámetros las bases creadas con newDataFrap. Puedes personalizar los gráficos utilizando diversos parámetros. Para obtener más detalles sobre esta función, consulta plotRecover.

plotRecover(A, B, C, plot.lines=T)

plotRecover(A, B, C, plot.shadow=T, plot.mean=T)

plotRecover(A, B, C, plot.points=T)

Elegir un modelo de probabilidad

El modelo paramétrico propuesto para describir el comportamiento de la curva de curva de recuperación de la fluorescencia a partir del momento del fotoblanqueo, es el siguiente:

\[F(t)=f_{min}+\alpha\,(1-f_{min})\,p(t-t_0|\Theta),\] donde \(p\) es una función de distribución acumulada parametrizada por \(\Theta\), \(t_0\) es el tiempo del fotoblanqueo y \(f_{min}\) es el valor mínimo de la fluorescencia después del fotoblanqueo, también se define el valor teórico \(f_{max}\) como el valor máximo que puede alcanzar la fluorescencia después del fotoblanqueo, y está dado por: \[f_{max}= f_{min}+\alpha(1-f_{min}).\]

Puede observarse que la función \(F(t)\) está definida en el intervalo de tiempo \(t\in[t_0, \infty)\). De forma análoga, se define la función \(F^{^{AB}}(t)\) para representar a la curva de recuperación de la fluorescencia después del fotoblanqueo la cual está definida en el intervalo de tiempo \(t\in[0, \infty)\):

\[F^{^{AB}}(t)=f_{min}+\alpha\,(1-f_{min})\,p(t|\Theta).\]

En el apéndice de este documento se puede encontrar más información acerca de la construcción del modelo. Para que el usuario pueda realizar el ajuste paramétrico, para el posterior análisis de datos sus datos, tendrá que ocuparse únicamente de elegir el modelo de probabilidad, \(p\), más adecuado. Mediante la función newFit es posible declarar un nuevo modelo de probabilidad, la función recibe como parámetros el nombre que se le quiera dar al modelo, la función de distribución acumulada, el nombre de los parámetros de la función de probabilidad y una lista con los rangos de valores para dichos parámetros. Para más detalles ir a newFit.

Exp<-newFit("Exponential", pexp,"rate", list(c(0,1)))
Gam<-newFit("Gamma", pgamma, c("shape","rate"), list(c(0,5), c(0,5)))
Wei<-newFit("Weibull", pweibull, c("shape","scale"), list(c(0,5),c(0,2000)))

Uno de los criterios más importantes para elegir entre distintos modelos de probabilidad es mediante el error medio cuadrático, aquellos modelos que tengan menor error deben ser mayormente preferidos. El error medio cuadrático está dado por la siguiente expresión: \[E_i =\frac{1}{m_i}\sum_{j=1}^{m_i} [f_i(t_j)-F(t_j)]^2,\] donde \(\{f_1,..,f_n\}\) es un grupo de datos fluorescencia y \(\{t_1,t_2,\cdots,t_{m_i}\}\) son todos aquellos valores mayores al tiempo de fotoblanqueo cuantificados para \(f_i\). La función compareFit comparar el error medio cuadrático de diferentes modelos de probabilidad ajustados a un grupo de datos, por medio de una gráfica Q-Q y el histograma del error de cada uno de los modelos. La función recibe como parámetros al grupo de datos en cuestión, una lista de los modelos que se requieran comparar, así como una serie de parámetros que permiten personalizar el gráfico. Para más detalles ir a compareFit.

compareFit(B, fit=l(Exp, Gam, Wei), col.lines=c("red","yellow"), lty.lines=c(2,1), lwd.lines=2, lwd.mean=2)

compareFit(C, fit=l(Exp, Gam, Wei), col.lines=c("red","yellow"), lty.lines=c(2,1), lwd.lines=2, lwd.mean=2)

Para más información acerca de la elección de un buen modelo de probabilidad ir al apéndice.

Ajustar un modelo paramétrico

Para este caso, en particular, se tiene que el modelo Weibull arroja mejores resultados, por lo que se recurre a la función Wei, para realizar el ajuste correspondiente de los datos, la función Wei, aplicada en un grupo de datos específico, devuelve una lista con la información obtenida por el ajuste paramétrico, así como la estimación de la función de recuperación de la fluorescencia \(F(t)\), entre otros datos relevantes, para más detalles ir a newFit.

Para realizar el gráfico del ajuste paramétrico de la recuperación de la fluorescencia se utiliza la función plotFit la cual recibe como parámetros, en primer lugar, a los grupos de datos por ajustar y posteriormente el modelo de probabilidad que se haya elegido para cada grupo de datos, entre parámetros opcionales que permiten personalizar y dar formato a cada gráfica, ir a plotFit para saber más. Si el modelo de probabilidad elegido es el mismo para todos los grupos de datos, basta con especificarlo una única vez como se ve a continuación:

plotFit(B, C, fit=Wei, plot.lines=T)

plotFit(B, C, fit=Wei, plot.shadow=T, plot.mean=T, alp.shadow=0.2, ylim=c(0.2, 1), xdigits=0)

Con la función plotFit se pueden graficar estimaciones futuras, de la curva de recuperación de la fluorescencia, con solo modificar el rango del gráfico. Las gráficas obtenidas por las funciones plotRecover y plotFit pueden ser apiladas cambiando el parámetro opcional new.plot a FALSE.

plotFit(B, fit=Wei, plot.shadow=T, alp.shadow=0.3, xlim=c(0,500), ylim=c(0.2, 1))
plotRecover(B, AB=T, plot.lines=T, new.plot=F)

Otro uso para la función plotFit es hacer una comparación visual entre dos o más modelos de probabilidad sobre un mismo grupo de datos.

plotRecover(B, plot.shadow =T, ylim=c(0.2, 1.2), xdigits=0,lwd.border=1, col="#808080")
plotFit(B, B, fit=l(Wei, Exp), plot.lines=T, new.plot=F, displacement=T, col=c("blue2","red2"))

Comparar conjuntos de datos

Análisis convencional

Por medio de la función compareParam es posible comparar dos grupos de datos por medio de las variables asociadas al ajuste del modelo paramétrico. Los parámetros que recibe esta función son los dos grupos de datos, el modelo de probabilidad que ajusta a cada grupo de datos, la variable que se desea comparar, entre otros valores que permiten personalizar el gráfico. para saber más ir a compareParam. Los nombres de las variables pueden obtenerse de la siguiente forma:

colnames(Wei(B)$table)
## [1] "shape" "scale" "alpha" "fmax"  "UF"    "MF"    "error"

La función compareParam realiza un gráfico Q-Q de la variable elegida, cambiando el parámetro new.plot=FALSE es posible apilar los gráficos. Los detalles de la prueba \(t\mbox{-}student\) para la diferencia de medias al \(95\%\) de confianza se obtienen cambiando el parámetro return=TRUE (en consecuencia, se omitirá el gráfico), el nivel de confianza y la hipótesis alternativa pueden se modificados mediante los parámetros alternative y conf.level respectivamente, para más detalles ir a compareParam.

compareParam(B, C, fit=Wei, param="shape")

De esta forma es posible realizar un análisis convencional de la recuperación de la fluorescencia, es decir, comparar la Fracción Inmóvil (UF) y la Fracción Móvil (MF). Recuerde que \[UF=\frac{1-f_{max}}{1-f_{min}}\] \[MF=\frac{f_{max}-f_{min}}{1-f_{min}}\] \[UF+MF=1\]

compareParam(B, C, fit=Wei, param="UF", xlim=c(0,1), ylim=c(0,1),lty.lines=c(2,1), col.lines=c("white","red"), lwd.lines=2)
compareParam(B, C, fit=Wei, param="MF", new.plot=F, lwd.lines=2)

compareParam(B, C, fit=Wei, param="UF", return=T)#>>><<<
## 
##  Welch Two Sample t-test
## 
## data:  UF_Weibull_Secondary.Neurites and UF_Weibull_Dendrites
## t = -0.51751, df = 4.2562, p-value = 0.6305
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.2846008  0.1933821
## sample estimates:
##  mean of x  mean of y 
## 0.08361768 0.12922699
compareParam(B, C, fit=Wei, param="MF", return=T)#>>><<<
## 
##  Welch Two Sample t-test
## 
## data:  MF_Weibull_Secondary.Neurites and MF_Weibull_Dendrites
## t = 0.51751, df = 4.2562, p-value = 0.6305
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.1933821  0.2846008
## sample estimates:
## mean of x mean of y 
## 0.9163823 0.8707730

También, con la función compareParam es posible comparar dos modelos de probabilidad, ajustados a un mismo grupo de datos, con respecto al error que produce cada ajuste, puede notar que esta gráfica ya se encuentra incluida dentro del mosaico que arroja la función compareFit vista anteriormente.

compareParam(B, B, fit=l(Exp,Wei), param="error", col.lines=c("red", "yellow"), lwd.lines=2, lty.lines=c(2,1), ydigits=2, xdigits=2)

compareParam(B, B, fit=l(Exp,Wei), param="error", return=T)#>>><<<
## 
##  Welch Two Sample t-test
## 
## data:  error_Exponential_Secondary.Neurites and error_Weibull_Secondary.Neurites
## t = 1.2307, df = 21.424, p-value = 0.2318
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.09746458  0.38089484
## sample estimates:
## mean of x mean of y 
## 0.7222331 0.5805180

Análisis del comportamiento medio

El análisis del comportamiento medio implica evaluar la recuperación promedio de la fluorescencia a lo largo del tiempo. La curva media se calcula de la siguiente manera:

\[\overline F(t)=\frac{1}{n}\sum_{i=1}^{n}F^{^{AB}}_i(t),\]

donde \(n\) es el tamaño del conjunto de datos y \(F^{AB}_i\) representa la curva de recuperación de la fluorescencia después del fotoblanqueo asociada a la cuantificación de la fluorescencia \(f_i\).

plotFit(B, fit=Wei, plot.lines=T, plot.mean=T, col.mean="purple",lwd.mean=2, xdigits=0, ydigits=2, alp.lines=0.5)

La función compareMean permite contrastar las curvas medias de dos grupos de datos por medio de una prueba \(t\mbox{-}student\) para la diferencia de medias aplicada de manera continua en un periodo de tiempo. La función recibe como parámetros a los grupos de datos por comparar, el modelo probabilidad que ajusta a los datos, entre otros valores que permiten personalizar la gráfica.

El gráfico que devuelve representa al \(p\mbox{-}value\) de la prueba \(t\mbox{-}student\), la línea de referencia indica el nivel de significancia. Cambiando el parámetro return=TRUE se obtienen los detalles de la prueba almacenados en una lista (omitiendo la realización de la gráfica), el nivel de confianza y la hipótesis alternativa pueden ser modificados mediante los parámetros alternative y conf.level respectivamente, para más detalles ir a compareMean.

compareMean(B, C, fit=Wei, lty.lines=c(2,1), col.lines=c("red","purple"), ydigits=2)

Cambiando el parámetro p.value=FALSE se calculará la diferencia de medias entre los dos grupos de datos, la línea de referencia estará situada en cero. En este caso al cambiar el parámetro return=TRUE se obtiene un vector con la diferencia de medias entre ambas curvas.

compareMean(B, C, fit=Wei, p.value=F, lty.lines=c(2,1), col.lines=c("red","magenta"), ydigits=3)

Simulación

La implementación de métodos de simulación para el análisis de la recuperación de la fluorescencia es una de las principales aportaciones de este trabajo. La simulación permite incrementar el tamaño de una muestra sin alterar sus medidas de tendencia centra ni dispersión, esto es especialmente útil para los casos en los que no se cuenta con un tamaño de muestra suficientemente grande, recuerde que las pruebas de hipótesis que dependen de procesos límite son particularmente sensibles al tamaño de la muestra. Por otro lado, el proceso de simulación se retroalimenta con una elección adecuada del modelo de probabilidad, esto se explica más adelante.

La simulación del modelo de recuperación de la fluorescencia \(F(t)\) se logra gracias a la simulación de los parámetros \(\Theta\) del modelo de probabilidad \(p(t|\Theta)\), ir al apéndice para saber más. La función simFit permite simular los datos ajustados a un modelo de probabilidad, recibe como parámetro obligatorio a un grupo de datos ajustados a un modelo de probabilidad y como parámetros opcionales el tamaño de la muestra simulada y una semilla de simulación, para más detalles sobre la semilla de simulación ir al apéndice.

Para el caso del ajuste Weibull la simulación de los datos se realiza de la siguiente forma simFit(Wei(B)) y simFit(Wei(C)), para más especificaciones sobre los datos que arroja esta función ir simFit. Por otro lado, las funciones plotFit, compareParam y compareMean tienen implementado el método de simulación, para acceder a esta función es necesario cambiar el parámetro simulated=FALSE. Podemos replicar las gráficas hechas anteriormente ahora con datos simulados:

plotFit(B, C, fit=Wei, simulated=T, plot.lines=T)

plotFit(B, C, fit=Wei, simulated=T, plot.shadow=T, plot.mean=T, alp.shadow=0.2, ylim=c(0.2, 1), xdigits=0)

plotFit(B, fit=Wei, simulated=T, plot.shadow=T, alp.shadow=0.3, xlim=c(0,500), ylim=c(0.2, 1))
plotRecover(B, AB=T, plot.lines=T, new.plot=F)

plotRecover(B, AB=T, plot.shadow=T,ylim=c(0.2, 1.2), xdigits=0,lwd.border=1, col="#808080")
plotFit(B, B, fit=l(Wei, Exp), simulated=T, plot.lines=T, new.plot=F, displacement=T, col=c("blue2","red2"))

compareParam(B, C, fit=Wei, simulated=T, param="shape")

compareParam(B, C, fit=Wei, param="UF", simulated=T, xlim=c(0,1), ylim=c(0,1),lty.lines=c(2,1), col.lines=c("white","red"), lwd.lines=2)
compareParam(B, C, fit=Wei, param="MF", simulated=T, new.plot=F, lwd.lines=2)

compareParam(B, C, fit=Wei, simulated=T, param="UF", return=T)
## 
##  Welch Two Sample t-test
## 
## data:  UF_WeibullSim_Secondary.Neurites and UF_WeibullSim_Dendrites
## t = -1.4645, df = 97.842, p-value = 0.1463
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.0891179  0.0134351
## sample estimates:
##  mean of x  mean of y 
## 0.07055279 0.10839419
compareParam(B, C, fit=Wei, simulated=T, param="MF", return=T)
## 
##  Welch Two Sample t-test
## 
## data:  MF_WeibullSim_Secondary.Neurites and MF_WeibullSim_Dendrites
## t = 1.4645, df = 97.842, p-value = 0.1463
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.0134351  0.0891179
## sample estimates:
## mean of x mean of y 
## 0.9294472 0.8916058
plotFit(B, fit=Wei, simulated=T, plot.lines=T, plot.mean=T, col.mean="purple",lwd.mean=2, xdigits=0, ydigits=2, alp.lines=0.5)

compareMean(B, C, fit=Wei, simulated=T, lty.lines=c(2,1), col.lines=c("red","purple"), ydigits=2)

compareMean(B, C, fit=Wei, simulated=T, p.value=F, lty.lines=c(2,1), col.lines=c("red","magenta"), ydigits=3)

Apéndice

El modelo de recuperación de fluorescencia

La cuantificación de la fluorescencia en el proceso de la técnica de FRAP sigue un patrón específico de recuperación. Inicialmente, la fluorescencia se mantiene constante, pero al momento del fotoblanqueo (también conocido como \(t_0\)), la intensidad de la fluorescencia disminuye hasta alcanzar un valor mínimo denominado \(f_{min}\). A partir de ese punto, se inicia un proceso gradual de recuperación de la fluorescencia que se caracteriza por dos condiciones fundamentales: en primer lugar, la recuperación no disminuye a medida que transcurre el tiempo, y en segundo lugar, la fluorescencia alcanza un límite máximo (\(f_{max}\)) que no puede superar el valor inicial antes del fotoblanqueo. Esta evolución se representa de manera gráfica para una mejor comprensión del proceso.

En ese sentido, el modelo propuesto para la recuperación de la fluorescencia debe cumplir con las características anteriores, el modelo general para la recuperación de la fluorescencia después del fotoblanqueo es el siguiente:

\[F(t)=f_{min}+\alpha\,(1-f_{min})\,p(t-t_0|\Theta)\]

En donde \(p\) es una función de distribución acumulada continua (CDF), parametrizada por \(\Theta\).

Observaciones
  • La función \(F(t)\) está definida en el intervalo \([t_0,\infty)\)

  • El valor \(f_{max}\) está dado por \[f_{max} =\lim_{t\to\infty}F(t)\]

  • El valor \(\alpha\) está acotado por los valores \[\alpha\in[0,1]\]

  • La función de distribución acumulada \(p\) debe estar asociada a una variable aleatoria que con soporte en \((0,\infty)\), recuerde que la CDF se define de la siguiente manera:

    \[p(t|\Theta)=\int_0^td(x|\Theta)\,\mbox{d}x\] donde \(d\) es una función de densidad paramétrica.

De forma análoga, se define la función \(F^{^{AB}}(t)\) para representar a la curva de recuperación de la fluorescencia después del fotoblanqueo la cual está definida en el intervalo de tiempo \(t\in[0, \infty)\):

\[F^{^{AB}}(t)=f_{min}+\alpha\,(1-f_{min})\,p(t|\Theta).\]


Probemos que \(F\) cumple con las características de la recuperación de la fluorescencia después del fotoblanqueo:
  1. \(F(t_0)=f_{min}\)
  2. Se evalua

    \[\begin{aligned} F(t_0) &=f_{min}+\alpha\,(1-f_{min})\,p(t_0-t_0|\Theta)\\ &=f_{min}+\alpha\,(1-f_{min})\,p(0|\Theta)\\ &=f_{min}+\alpha\,(1-f_{min})\int_0^0d(x|\Theta)\,\mbox{d}x\\ &=f_{min}+\alpha\,(1-f_{min})\,(0)\\ &=f_{min} \end{aligned}\] \[\therefore F(t_0)=f_{min}\]

  3. \(F(t)\) es no decreciente
  4. Considere a \(t_1,t_2\in\mathbb R^+\) tales que \(t_1\leq t_2\), entonces

    \[\begin{aligned} t_1-t_0\leq &\;t_2-t_0\\ \Rightarrow p(t_1-t_0|\Theta)\leq &\;p(t_2-t_0|\Theta)\\ f_{min}+\alpha\,(1-f_{min})\,p(t_1-t_0|\Theta)\leq &\;f_{min}+\alpha\,(1-f_{min})\,p(t_2-t_0|\Theta) \end{aligned}\] \[\therefore F(t_1)\leq F(t_2)\]

    Lo anterior prueba que el modelo paramétrico \(F\) es no decreciente a lo largo del tiempo.

  5. \(f_{max}=f_{min}+\alpha\,(1-f_{min})\) and \(f_{max}\in[f_{min}, 1]\)
  6. Se calcula el límite de \(F(t)\) cuando \(t\) tiende a infinito:

    \[\begin{aligned} f_{max}=\lim_{t\to\infty}F(t) &=\lim_{t\to\infty}f_{min}+\alpha\,(1-f_{min})\,p(t-t_0|\Theta)\\ &=f_{min}+\alpha\,(1-f_{min})\lim_{t\to\infty}\,p(t-t_0|\Theta)\\ &=f_{min}+\alpha\,(1-f_{min})\lim_{t\to\infty}\int_0^{t-t_0}d(x|\Theta)\,\mbox{d}x\\ &=f_{min}+\alpha\,(1-f_{min})\int_0^{\infty}d(x|\Theta)\,\mbox{d}x\\ &= f_{min}+\alpha\,(1-f_{min})\,(1) \end{aligned}\]

    \[\therefore f_{max}=f_{min}+\alpha\,(1-f_{min})\] Por otro lado se tiene que \(\alpha\in[0,1]\), entonces

    \[\begin{aligned} &0\leq \alpha\leq 1\\ \Rightarrow &0\leq \alpha\,(1-f_{min})\leq 1-f_{min}\\ \Rightarrow &f_{min}\leq f_{min}+\alpha\,(1-f_{min})\leq f_{min}+1-f_{min}\\ \Rightarrow &f_{min}\leq f_{min}+\alpha\,(1-f_{min})\leq 1\\ \Rightarrow &f_{min}\leq f_{max}\leq 1\\ \end{aligned}\] \[\therefore f_{max}\in[f_{min},1]\]

Dados un conjunto de datos de fluorescencia \(f\) y una función de distribución acumulada \(p(\bullet|\Theta)\), entonces los parámetros \((\alpha,\Theta)\) son estimados por medio del metodo de mínimos cuadrados, que consiste en minimizar el error medio cuadrático producido entre las curvas \(f\) y \(F\), la función del error medio cuadrático es la siguiente:

\[\begin{aligned}E(\alpha,\Theta)&=\sum_{j=1}^m\left[f(t_j)-F(t_j)\right]^2\\&=\sum_{j=1}^m\left[f(t_j)-f_{min}-\alpha\,(1-f_{min})\,p(t_j-t_0|\Theta)\right]^2\end{aligned}\] donde \(\{t_1,t_2,\cdots,t_m\}\) son todos aquellos tiempos mayores a \(t_0\) cuantificados para \(f\).

Elegir un modelo de probabilidad

La función de distribución acumulada \(p(t|\Theta)\) es la base para construir el modelo paramétrico de recuperación de la fluorescencia \(F(t|\Theta)\). La elección de la función \(p\) queda a libre criterio del usuario, sin embargo, es indispensable que \(p\) tenga soporte en \((0,\infty)\), otro aspecto del que debe encargarse el usuario es la asignación de los intervalos donde toman valores los parámetros \(\Theta\), esto se logra por medio de la función newFit.


Ejemplo:

Suponga que el usuario ha decidido utilizar una función de probabilidad Pareto, entonces \[p(t|\,\mbox{shape},\mbox{scale})=1-\left(\frac{\mbox{scale}}{t+\mbox{scale}}\right)^{\mbox{shape}}\] \[t>0,\;\;\mbox{scale}>0\;\;\&\;\;\mbox{shape}>0\] Se implementa la función de distribución acumulada Pareto y se declara su ajuste paramétrico asociado:

ppareto <- function(t, shape, scale){
  ppar <- NULL
  for (t in t) 
    ppar <- c(ppar, 1-(scale/(t+scale))^shape)
  ppar
}

Par <- newFit("Pareto", ppareto, c("shape","scale"), list(c(0,a), c(0,b)))

El código anterior establece que \(\mbox{shape}\in(0,a)\) y \(\mbox{scale}\in(0,b)\). Después de ajustar el modelo Par a un grupo de datos el usuario debe verificar que los valores shape y scale se encuentren completamente contenidos en el interior de los intervalos \((0,a)\) y \((0,b)\) respectivamente, de lo contrario, tendrá que modificar los valores de \(a\) y/o \(b\) y repetir el procedimiento. Lo anterior se consigue mediante una inspección visual de las variables devueltas por el ajuste: se deben ejecutar los códigos Par(B)$table$shape y Par(B)$table$scale e inspeccionar los resultados, donde B es un conjunto de datos de FRAP obtenido por medio de la función newDataFrap.


Las funciones creadas por newFit tienen el propósito de encontrar los mejores valores \(\Theta\) tales que minimicen el error cuadrático entre el modelo \(F(t|\Theta)\) y los datos reales de recuperación de la fluorescencia. Por lo que el principal criterio para elegir el modelo de probabilidad \(p\) más adecuado debe ser: preferir el modelo que produzca el menor error cuadrático medio, esto se logra, como se vio anterior mente, por medio de la función compareFit.

compareFit(B, fit=l(Exp, Gam, Wei, Par), col.lines=c("red","yellow"), lty.lines=c(2,1), lwd.lines=2, lwd.mean=2)

Por otro lado, un segundo criterio para evaluar la viabilidad de un modelo de probabilidad \(p\) es viendo cómo se comportan las simulaciones de \(F\). Si existen discrepancias entre los datos reales de fluorescencia y las simulaciones de \(F\) entonces lo más razonable es descartar el modelo \(p\). Ya que esto implicaría que no hay una relación causal entre los parámetros \(\Theta\) y los datos de recuperación de la fluorescencia y, como se verá en el siguiente apéndice, las simulaciones de \(f_{max}\) son particularmente sensibles a las variaciones de \(\Theta\).

plotFit(B, B, fit=l(NULL,Exp), col=c("#916F91","#FF4D66"), plot.lines=c(F,T), plot.mean=c(T,F), lwd.mean=2, plot.shadow=c(T,F), lwd.border=1, alp.border=0.4, alp.shadow=0.3, ylim=c(0.2, 1), xdigits=0, simulated=T, seed=1992, main="Exponential simulation", cex.main=1.5)

plotFit(B, B, fit=l(NULL,Gam), col=c("#916F91","#4DB34D"), plot.lines=c(F,T), plot.mean=c(T,F), lwd.mean=2, plot.shadow=c(T,F), lwd.border=1, alp.border=0.4, alp.shadow=0.3, ylim=c(0.2, 1), xdigits=0, simulated=T, seed=1992, main="Gamma simulation", cex.main=1.5)

plotFit(B, B, fit=l(NULL,Wei), col=c("#916F91","#664DFF"), plot.lines=c(F,T), plot.mean=c(T,F), lwd.mean=2, plot.shadow=c(T,F), lwd.border=1, alp.border=0.4, alp.shadow=0.3, ylim=c(0.2, 1), xdigits=0, simulated=T, seed=1992, main="Weibull simulation", cex.main=1.5)

plotFit(B, B, fit=l(NULL,Par), col=c("#916F91","#B34DB3"), plot.lines=c(F,T), plot.mean=c(T,F), lwd.mean=2, plot.shadow=c(T,F), lwd.border=1, alp.border=0.4, alp.shadow=0.3, ylim=c(0.2, 1), xdigits=0, simulated=T, seed=1992, main="Pareto simulation", cex.main=1.5)

Teoría de la simulación estocástica

La simulación estocástica es un proceso mediante el cual se pretende reproducir el comportamiento de una variable aleatoria, la base de la simulación se sigue del siguiente teorema:

Sea \(X\) es una variable aleatoria y \(\mathbb F_X\) su función de distribución acumulada, sea \(U\) una variable aleatoria con distribución \(\mbox{Uniform}(0,1)\), entonces la variable aleatoria \(\mathbb F^{-1}_X(U)\) tiene la misma distribución que \(X\), es decir:

\[\mathbb F_X = \mathbb F_{\mathbb F^{-1}_X(U)}\]


Proof:

    \[\begin{aligned}\mathbb F_{\mathbb F^{-1}_X(U)} &=\mathbb P\left[\mathbb F^{-1}_X(U)\leq t\right] =\mathbb P\left[\mathbb F_X\left(\mathbb F^{-1}_X(U)\right)\leq \mathbb F_X\left(t \right)\right]\\ &=\mathbb P\left[U\leq \mathbb F_X\left(t \right)\right] =\int_0^{\mathbb F_X\left(t \right)}f_U(u)\,\mbox{d}u =\int_0^{\mathbb F_X\left(t \right)}1\,\mbox{d}u\\ &=\left.u\right|_0^{\mathbb F_X\left(t \right)}={\mathbb F_X\left(t \right)}-0={\mathbb F_X\left(t \right)} \end{aligned}\] \[\therefore {\mathbb F_X\left(t \right)}=\mathbb F_{\mathbb F^{-1}_X(U)}\]

    Nótese que como \(U\) es una variable uniforme, se tiene que \(f_U(u)=1,\;\; 0<u<1\). (\(f_U\) es la función de densidad de \(U\))


El teorema anterior permite simular cualquier variable aleatoria \(X\) siempre que se conozca su función de distribución acumulada \(F_X\). Sea \(\{u_1,u_2,\cdots,u_n\}\) una muestra aleatoria de valores observados de la variable aleatoria \(\mbox{Uniform}(0,1)\), entonces \(\{\mathbb F_X^{-1}(u_1),\mathbb F_X^{-1}(u_2),\cdots,\mathbb F_X^{-1}(u_n)\}\) es una muestra de valores simulados de la variable \(X\). En términos computacionales, para realizar el proceso de simulación de simulación, la generación de una muestra aleatoria uniforme se lleva a cabo por medio de algoritmos de generación de números pseudoaleatorios.

Habrá situaciones en las que se requiera simular el comportamiento de una muestra de datos \(x_1,x_2,\cdots,x_n\) de alguna distribución desconocida, por lo que no se dispone de función de distribución acumulada, en estos caso para realizar la simulación se utiliza a la función de distribución acumulada empírica (ecdf), la cual se define de la siguiente manera:

\[\widehat{\mathbb F}_{x_1,x_2,\cdots,x_n}(t)=\frac{1}{n}\sum_{i=1}^n\mathbb {I}_{x_i\leq t}\]

donde \(\mathbb{I}_{x_i\leq t}=\left\lbrace\begin{aligned} 1,\; x_i\leq t\\ 0,\; x_i> t\end{aligned}\right.\)

Simulación de una curva de FRAP

Cosidere el conjunto de datos de cuantificación de fluorescencia denotados por \(\{f_1,f_2,...,f_n\}\) y el conjunto de curvas de FRAP asociadas \(\{F^{^{AB}}_1,F^{^{AB}}_2,...,F^{^{AB}}_n\}\), el proceso de simulación permite generar un conjunto de \(N_{sim}\) nuevas curvas de FRAP \(\{\mathcal F^{^{AB}}_1,\mathcal F^{^{AB}}_2,...,\mathcal F^{^{AB}}_{N_{sim}}\}\). Cada curva \(\mathcal F^{^{AB}}_j\) no se encuentra directamente asociada a ningún dato de florescencia \(f_i\), en cambio, \(\mathcal F^{^{AB}}_j\) es producto de un proceso se simulación estocastica sobre el conjunto de parámetros \(\{(\alpha_1, \Theta_1),(\alpha_2, \Theta_2),\cdots,(\alpha_n, \Theta_n)\}\), donde \((\alpha_i, \Theta_i)\) son aquellos valores que se obtuvieron por medio de la optimización por mínimos cuadrados entre \(f_i\) y \(F_i\).

De manera más específica, el proceso de simulación de las curvas de FRAP es el siguiente:

Por medio de la función de distribución acumulada empírica (vista en la sección anterior de este apéndice) de \(\{\Theta_1,\Theta_2,\cdots,\Theta_n\}\) se generan los valores \(\{ \Theta^{sim}_1,\Theta^{sim}_2,\cdots,\Theta^{sim}_m\}\), es decir:

\[\Theta_j^{sim}=\widehat{\mathbb F}_{\Theta_1,\Theta_2,\cdots,\Theta_n}^{-1}(U_j)\]

\[\mathcal F^{^{AB}}_j(t)=f_{min}+\alpha_j^{sim}\,(1-f_{min})\,p(t|\Theta_j^{sim}).\]

fraping-doc

newDataFrap

# Function: newDataFrap
#
# Description: Create a new instance of the "frapclass" class.
#
# Parameters:
#   - name: Name of the FRAP object.
#   - bleach: Percentage of sample bleaching.
#
# Returns: An instance of the "frapclass" class.
#
# Usage:
#   frap_obj <- newDataFrap(name, bleach)
A <- newDataFrap("Neurites", 80)
B <- newDataFrap("Secondary.Neurites", 80)
C <- newDataFrap("Dendrites", 80)

plotRecover

# Function: plotRecover
#
# Description: Plot the fluorescence recovery curves.
#
# Parameters:
#   - ...: Additional parameters for the plot function.
#   - index: Index or indices of the FRAP objects to plot.
#   - type: Type of recovery curve to plot (default: "RCB").
#   - area: Whether to include area normalization in the plot (default: TRUE).
#   - stand: Whether to standardize the recovery curve (default: TRUE).
#   - AB: Whether to include only the recovery phase of the curve (default: FALSE).
#   - new.plot: Whether to create a new plot (default: TRUE).
#   - plot.lines: Whether to plot lines (default: FALSE).
#   - plot.points: Whether to plot points (default: FALSE).
#   - plot.shadow: Whether to plot shadowed areas (default: FALSE).
#   - plot.mean: Whether to plot the mean curve (default: FALSE).
#   - col: Color of the curves (default: NULL).
#   - getGroup: Whether to return the group information (default: FALSE).
#
# Usage:
#   plotRecover(..., index = NA, type = "RCB", area = TRUE, stand = TRUE, AB = FALSE,
#               new.plot = TRUE, plot.lines = FALSE, plot.points = FALSE, plot.shadow = FALSE,
#               plot.mean = FALSE, col = NULL, getGroup = FALSE)
# Example 1: Plotting fluorescence recovery curves for FRAP objects A, B, and C.
plotRecover(A, B, C, plot.lines = TRUE, col = c("blue", "red", "green"))

# Example 2: Plotting specific indices of recovery curves.
plotRecover(A, B, C, index = c(1, 3), plot.points = TRUE, col = "purple")

# Example 3: Customizing the plot with shadowed areas and mean curve.
plotRecover(A, B, C, plot.lines = TRUE, plot.shadow = TRUE, plot.mean = TRUE)

# Example 4: Plotting standardized recovery curves without area normalization.
plotRecover(A, B, C, area = FALSE, stand = TRUE, plot.lines = TRUE, col = "orange")

# Example 5: Plotting recovery curves from different FRAP objects in the same plot.
plotRecover(A, Exp, plot.lines = TRUE, col = "blue")
plotRecover(B, Gam, new.plot = FALSE, plot.lines = TRUE, col = "red")
plotRecover(C, Wei, new.plot = FALSE, plot.lines = TRUE, col = "green")

newFit

# Function: newFit
#
# Description: Create a new instance of the "fitclass" class for FRAP data fitting.
#
# Parameters:
#   - name: Name of the fitting model.
#   - fun: Fitting function.
#   - param: Names of the fitting parameters.
#   - interval: Interval for each fitting parameter.
#
# Usage:
#   newFit(name, fun, param, interval)
# Example 1: Creating a new fitting model using the Exponential function.
Exp <- newFit("Exponential", pexp, "rate", list(c(0, 1)))

# Example 2: Creating a new fitting model using the Gamma function.
Gam <- newFit("Gamma", pgamma, c("shape", "rate"), list(c(0, 5), c(0, 5)))

# Example 3: Creating a new fitting model using the Weibull function.
Wei <- newFit("Weibull", pweibull, c("shape", "scale"), list(c(0, 5), c(0, 2000)))

# Example 4: Creating a new fitting model with custom parameters and intervals.
fit_custom <- newFit("Custom", myfitfunction, c("param1", "param2", "param3"),
    list(c(0, 10), c(-1, 1), c(0, 100)))

compareFit

# Function: compareFit
#
# Description: Compare the goodness of fit between data and multiple fits.
#
# Parameters:
#   - data: Data to compare (numeric vector or data frame).
#   - fit: List of fits to compare (list of numeric vectors or data frames).
#   - col.lines: Color palette for the fit lines (default: NULL).
#   - lty.lines: Line type for the fit lines (default: 1).
#   - lwd.lines: Line width for the fit lines (default: 1).
#   - lwd.mean: Line width for the mean fit line (default: 1).
#   - digits: Number of digits to round the fit statistics (default: 4).
#   - ...: Additional parameters for the plot function.
#
# Usage:
#   compareFit(data, fit, col.lines = NULL, lty.lines = 1, lwd.lines = 1, lwd.mean = 1,
#              digits = 4, ...)
# Example 1: Comparing the goodness of fit for different models using pre-loaded data
compareFit(B, list(Exp, Wei), col.lines = c("red", "yellow"), lty.lines = c(2, 1),
           lwd.lines = 2, lwd.mean = 2)

# Example 2: Comparing the goodness of fit for different models with custom colors and line types
compareFit(B, list(Exp, Gam, Wei), col.lines = c("blue", "green", "purple"),
           lty.lines = c(1, 3, 2), lwd.lines = 2, lwd.mean = 2)

plotFit

# Function: plotFit
#
# Description: Plot the fit of fluorescence recovery curves.
#
# Parameters:
#   - ...: Additional parameters for the plot function.
#   - fit: Fit objects obtained from the newFit function.
#   - index: Index or indices of the fit objects to plot.
#   - type: Type of recovery curve to plot (default: "RCB").
#   - area: Whether to include area normalization in the plot (default: TRUE).
#   - stand: Whether to standardize the recovery curve (default: TRUE).
#   - simulated: Whether to include simulated recovery curves (default: FALSE).
#   - Nsim: Number of simulated curves to generate (default: 50).
#   - seed: Seed value for reproducibility of simulated curves (default: NA).
#   - npoints: Number of points to generate in simulated curves (default: 100).
#   - displacement: Whether to add random displacement to simulated curves (default: FALSE).
#   - new.plot: Whether to create a new plot (default: TRUE).
#   - plot.lines: Whether to plot lines (default: FALSE).
#   - plot.points: Whether to plot points (default: FALSE).
#   - plot.shadow: Whether to plot shadowed areas (default: FALSE).
#   - plot.mean: Whether to plot the mean curve (default: FALSE).
#   - col: Color of the curves (default: NULL).
#
# Usage:
#   plotFit(..., fit, index = NA, type = "RCB", area = TRUE, stand = TRUE, simulated = FALSE,
#           Nsim = 50, seed = NA, npoints = 100, displacement = FALSE,
#           new.plot = TRUE, plot.lines = FALSE, plot.points = FALSE, plot.shadow = FALSE,
#           plot.mean = FALSE, col = NULL)
# Example 1: Plotting the fit of fluorescence recovery curves for objects B and C with Exp, Wei, and Gam fits
plotFit(B, C, fit = Exp, plot.lines = TRUE, col = c("blue", "red", "green"), ylim = c(0.2, 1), xdigits = 0)

# Example 2: Plotting the fit of fluorescence recovery curves for object B with Exp, Wei, and Gam fits
plotFit(B, fit = Gam, plot.lines = TRUE, col = c("blue", "red", "green"), ylim = c(0.2, 1), xdigits = 0)

# Example 3: Plotting the fit of fluorescence recovery curves for objects B and C with Exp, Wei, and Gam fits and points
plotFit(B, C, fit = c(Exp, Gam), plot.lines = TRUE, plot.points = TRUE, col = c("blue", "red", "green"), ylim = c(0.2, 1), xdigits = 0)

# Example 4: Plotting the fit of fluorescence recovery curves for object B with Exp, Wei, and Gam fits and shadowed areas
plotFit(C, fit = Wei, plot.lines = TRUE, plot.shadow = TRUE, col = c("blue", "red", "green"), ylim = c(0.2, 1), xdigits = 0)

compareParam

# Function: compareParam
#
# Description: Compare parameter estimates between two datasets based on the fit results.
#
# Parameters:
#   - data1: First dataset of fluorescence recovery curves.
#   - data2: Second dataset of fluorescence recovery curves.
#   - fit: Fit object containing the results of fitting the data.
#   - param: Parameter to compare between the datasets.
#   - type: Type of recovery curve to consider (default: "RCB").
#   - area: Whether to include area normalization in the comparison (default: TRUE).
#   - stand: Whether to standardize the recovery curves (default: TRUE).
#   - simulated: Whether to use simulated data for the comparison (default: FALSE).
#   - Nsim: Number of simulated datasets to generate (default: 50).
#   - seed: Seed for random number generation (default: NA).
#   - conf.level: Confidence level for the confidence interval (default: 0.95).
#   - alternative: Type of alternative hypothesis in the statistical test (default: "two.sided").
#   - return: Whether to return the comparison results (default: FALSE).
#   - new.plot: Whether to create a new plot (default: TRUE).
#   - plot.lines: Whether to plot lines in the comparison plot (default: TRUE).
#   - plot.points: Whether to plot points in the comparison plot (default: FALSE).
#   - col: Color of the curves in the comparison plot (default: NULL).
#   - ...: Additional parameters for the comparison plot.
#
# Usage:
#   compareParam(data1, data2, fit, param, type = "RCB", area = TRUE, stand = TRUE,
#                simulated = FALSE, Nsim = 50, seed = NA, conf.level = 0.95,
#                alternative = "two.sided", return = FALSE, new.plot = TRUE,
#                plot.lines = TRUE, plot.points = FALSE, col = NULL, ...)
# Example 1: Comparing the parameter "MF" between datasets B and C using the Wei fit
compareParam(B, C, fit = Wei, param = "MF", lwd.lines = 2, col.lines = "#9084c9",
             simulated = TRUE, seed = 516)

# Example 2: Comparing the parameter "UF" between datasets B and C using the Wei fit
# with a different confidence level and alternative hypothesis
compareParam(B, C, fit = Wei, param = "UF", lwd.lines = 2, col.lines = "#d65b22",
             simulated = TRUE, seed = 6544, conf.level = 0.99, alternative = "greater")

# Example 3: Comparing the parameter "alpha" between datasets B and B using the Exponential and Wei fits
# and returning the comparison results
results <- compareParam(B, B, fit = c(Exp, Wei), param = "alpha", lwd.lines = 2, col.lines = "#2e337e",
                        simulated = TRUE, seed = 44648)

# Example 4: Comparing the parameter "MF" between datasets B and C using the Gamma fit
# and customizing the comparison plot
compareParam(B, C, fit = Gam, param = "MF", simulated = TRUE, seed = 5959, return = TRUE)
## 
##  Welch Two Sample t-test
## 
## data:  MF_GammaSim_Secondary.Neurites and MF_GammaSim_Dendrites
## t = 1.773, df = 93.713, p-value = 0.07948
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.005227574  0.092406709
## sample estimates:
## mean of x mean of y 
## 0.8700160 0.8264265

compareMean

# Function: compareMean
#
# Description: Compare the mean values between two datasets using FRAP fits.
#
# Parameters:
#   - data1: Dataset 1 for comparison.
#   - data2: Dataset 2 for comparison.
#   - fit: FRAP fit object(s) to use for the comparison.
#   - type: Type of recovery curve to use for the comparison (default: "RCB").
#   - area: Whether to include area normalization in the comparison (default: TRUE).
#   - stand: Whether to standardize the recovery curves for comparison (default: TRUE).
#   - simulated: Whether to perform simulated comparisons (default: FALSE).
#   - Nsim: Number of simulated comparisons to perform (default: 50).
#   - seed: Seed value for reproducible simulations (default: NA).
#   - saveable: Whether to enable saving of simulation results (default: TRUE if seed is specified, FALSE otherwise).
#   - conf.level: Confidence level for the comparison (default: 0.95).
#   - alternative: Type of alternative hypothesis for the comparison (default: "two.sided").
#   - return: Whether to return the comparison results (default: FALSE).
#   - p.value: Whether to include p-values in the comparison results (default: TRUE).
#   - npoints: Number of points to use for plotting the comparison curve (default: 100).
#   - new.plot: Whether to create a new plot (default: TRUE).
#   - plot.lines: Whether to plot lines for the comparison curve (default: TRUE).
#   - plot.points: Whether to plot points for the comparison curve (default: FALSE).
#   - col: Color of the comparison curve (default: NULL).
#   - ...: Additional parameters for the plot function.
#
# Usage:
#   compareMean(data1, data2, fit, type = "RCB", area = TRUE, stand = TRUE,
#               simulated = FALSE, Nsim = 50, seed = NA, saveable = !is.na(seed),
#               conf.level = 0.95, alternative = "two.sided", return = FALSE,
#               p.value = TRUE, npoints = 100, new.plot = TRUE, plot.lines = TRUE,
#               plot.points = FALSE, col = NULL, ...)
# Example 1: Comparing the mean values of FRAP fits between datasets B and C using multiple fits
compareMean(B, C, fit = c(Exp, Gam), lwd.lines = 2,
            col.lines = c("red", "green", "purple"))

# Example 2: Comparing the mean values of FRAP fits between datasets B and C using the Gam fit
# and customizing the plot
compareMean(B, C, fit = Gam, lwd.lines = 2, col.lines = "orange",
             plot.lines = TRUE, plot.points = TRUE)

# Example 3: Comparing the mean values of FRAP fits between datasets B and C using the Wei fit
compareMean(B, C, fit = Wei, lwd.lines = 2, lty.lines = c(2, 1),
            ylim = c(0, 0.2), col.lines = c("red", "#C65153"),
            xdigits = 0, ydigits = 4)
compareMean(B, C, fit = Wei, lwd.lines = 2, col.lines = "#79189F",
            simulated = TRUE, seed = 486, new.plot = FALSE)

# Example 4: Comparing the mean values of FRAP fits between datasets B and C using the Exp fit
compareMean(B, C, fit = Exp, lwd.lines = 2, col.lines = "blue",return = T)[[2]]
##   [1]          NA 0.029525886 0.027422980 0.025492571 0.023720499 0.022093724
##   [7] 0.020600301 0.019229335 0.017970933 0.016816144 0.015756895 0.014785925
##  [13] 0.013896714 0.013083421 0.012340811 0.011664198 0.011049384 0.010492605
##  [19] 0.009990487 0.009540001 0.009138429 0.008783335 0.008472540 0.008204102
##  [25] 0.007976303 0.007787636 0.007636795 0.007522667 0.007444326 0.007401027
##  [31] 0.007392196 0.007417423 0.007476454 0.007569180 0.007695623 0.007855923
##  [37] 0.008050327 0.008279167 0.008542848 0.008841830 0.009176611 0.009547712
##  [43] 0.009955656 0.010400959 0.010884114 0.011405578 0.011965762 0.012565020
##  [49] 0.013203648 0.013881870 0.014599841 0.015357641 0.016155279 0.016992687
##  [55] 0.017869728 0.018786197 0.019741822 0.020736275 0.021769168 0.022840066
##  [61] 0.023948488 0.025093914 0.026275789 0.027493531 0.028746533 0.030034167
##  [67] 0.031355792 0.032710757 0.034098401 0.035518062 0.036969075 0.038450777
##  [73] 0.039962510 0.041503620 0.043073462 0.044671400 0.046296806 0.047949065
##  [79] 0.049627571 0.051331730 0.053060963 0.054814700 0.056592383 0.058393469
##  [85] 0.060217423 0.062063725 0.063931863 0.065821337 0.067731658 0.069662347
##  [91] 0.071612931 0.073582950 0.075571949 0.077579483 0.079605113 0.081648406
##  [97] 0.083708936 0.085786284 0.087880033 0.089989773

simFit

# Function: simFit
#
# Description: Simulate fluorescence recovery curves based on a given FRAP fit.
#
# Parameters:
#   - fit: FRAP fit object to use for simulation.
#   - Nsim: Number of simulations to perform (default: 50).
#   - seed: Seed for random number generation (default: NA).
#   - saveable: Whether the simulation results can be saved (default: !is.na(seed)).
#
# Usage:
#   simFit(fit, Nsim = 50, seed = NA, saveable = !is.na(seed))
#
# Examples:
#
# # Simulate fluorescence recovery curves based on the Wei fit with 100 simulations
# simFit(Wei(B), Nsim = 100)
#
# # Simulate fluorescence recovery curves based on the Exp fit with a specific seed for reproducibility
# simFit(Exp(C), seed = 12345)
#
# # Simulate fluorescence recovery curves based on the Gam fit and save the results
# simFit(Gam(B), saveable = TRUE)

tableFit

# Function: tableFit
#
# Description: Create a table summarizing the fit results for multiple FRAP objects.
#
# Parameters:
#   - ...: Multiple FRAP objects or a list of FRAP objects.
#   - fit: FRAP fit objects to include in the table.
#   - digits: Number of digits to round the table values (default: 4).
#
# Usage:
#   tableFit(..., fit, digits = 4)
#
# Examples:
#
# # Create a table summarizing the fit results for objects A, B, and C using the Wei fit
# tableFit(A, B, C, fit = Wei)
#
# # Create a table summarizing the fit results for objects B and C using multiple fits
# tableFit(B, C, fit = c(Exp, Gam, Wei))
#
# # Create a table summarizing the fit results for objects B, C, and D using custom digits
# tableFit(B, C, D, fit = Exp, digits = 2)

Contáctame ✉️

SUBIR