Estimados gurús de R, mi nombre es Félix Navarro y escribo desde el hospital regional de Málaga para hacer una consulta sobre R. Me gustaría saber como solucionaríais un problema con R porque nuestra decisión no tiene demasiado argumento más allá de que parece que funciona. Os comento: Estamos haciendo una herramienta para hacer unas medidas con la resonancia magnética y facilitarle los resultados a los radiólogos como ayuda a sus diagnósticos. Lo que hacemos es adquirir repetidas veces imágenes de los pacientes cambiando determinados parámetros de la exploración y luego, píxel a píxel, hacemos un ajuste de esos valores a una función. En esta función el valor del píxel en las imágenes de cada adquisición depende del tejido y ese parámetro modificado. Alguno de los coeficientes ajustados es el valor que buscamos y el que se usará para el diagnóstico. Cada vez que repetimos la exploración para tener una muestra más de la función a ajustar conlleva tener al paciente algún minuto más dentro de la resonancia y, a la larga, tener que reducir el número de pacientes/mes a los que damos servicio. Entenderéis que ajustar con las mínimas exploraciones posibles controlando la incertidumbre es crítico para nosotros. Ninguno de nosotros es un experto en este tema del ajuste y elegí la función glm de R exclusivamente porque permitía fijar límites y valores máximo y mínimo para los parámetros que buscamos. De esta forma podemos garantizar que, al menos, el resultado sea razonable pues muchas de las muestras además vienen contaminadas con ruido o artefactos de la exploración. Os muestro dos ejemplos y ¿me diríais como lo haríais? Una de las funciones a ajustar es S(b)/S(0) = (1-f)·e^(-b·D)+f·e^(-b·D*) con 6 muestras b=0, 15, 65, 300, 685 y 1000. Esta se ajusta primero para b>=300 despreciando el sumando con D* y, en una segunda iteración, se obtiene D* con todos los valores de b (conocidos de la la primera iteración D y f). Esto se hace porque sabemos que D* >= 4·D y ese exponente decaerá mucho antes. Otra de las funciones es esta [1] de abajo, donde lo que se busca es T1 y se va variando alfa (todo lo demás excepto k[H] es conocido, pero k[H] que carece de interés médico por ahora) Esta función sabemos que tiene un máximo y exploramos con un par de valores de alfa antes y otro par después de donde suponemos que estará el máximo (pues alguna idea de por donde anda T1 tenemos en función de la zona explorada). ¿Cómo lo haríais vosotros? Ya os digo que usamos glm sin demasiado argumento más allá del práctico. Muchas gracias por el tiempo. -- Félix Navarro Guirado felix.navarro.sspa en juntadeandalucia.es Radiofísica hospitalaria. H.R.U. de Málaga. TLF: 951291436 Av Carlos Haya S/N 290010 Málaga Links: ------ [1] http://mriquestions.com/uploads/3/4/5/7/34572113/7502602.png?348 [[alternative HTML version deleted]]
Hola, Para cada uno de los temas que planteas: A) Ajuste de ecuación. - Puedes utilizar un ajuste no-lineal. - Utiliza el paquete *nlstools*. - En la propia ayuda de "nlstools" verás que incluso puedes incluir una restricción sobre el valor de tu D* y de que b>300. - Aunque puedes utilizar la misma estrategia que comentas de hacer una primera iteración sin D* y con el resultado, volver a correr otra iteración incluyendo la restricción de D* > 4*D. - En todo momento estoy suponiendo que para cada valor de "b" tienes un valor de S(b)/S(0). Vaya que tienes las "x" y las "y". B) Maximizar función. - En este caso, hay una función en R "optim()" que permite maximizar/minimizar sobre un intervalo para tu variable. - Incluso eligiendo el método de optimización adecuado, puedes establecer restricciones sobre relaciones entre variables. - Antes de decirte esto, he probado si había alguna forma de encontrar una expresión analítica para dejar "T1" como variable dependiente (Mathematica no la ha podido encontrar... :-)). Gracias, Carlos Ortega www.qualityexcellence.es El 21 de junio de 2016, 17:18, Félix Navarro Guirado < felix.navarro.sspa en juntadeandalucia.es> escribió:> > > Estimados gurús de R, mi nombre es Félix Navarro y escribo desde el > hospital regional de Málaga para hacer una consulta sobre R. > > Me > gustaría saber como solucionaríais un problema con R porque nuestra > decisión no tiene demasiado argumento más allá de que parece que > funciona. > Os comento: > Estamos haciendo una herramienta para hacer unas > medidas con la resonancia magnética y facilitarle los resultados a los > radiólogos como ayuda a sus diagnósticos. > Lo que hacemos es adquirir > repetidas veces imágenes de los pacientes cambiando determinados > parámetros de la exploración y luego, píxel a píxel, hacemos un ajuste > de esos valores a una función. En esta función el valor del píxel en las > imágenes de cada adquisición depende del tejido y ese parámetro > modificado. Alguno de los coeficientes ajustados es el valor que > buscamos y el que se usará para el diagnóstico. > Cada vez que repetimos > la exploración para tener una muestra más de la función a ajustar > conlleva tener al paciente algún minuto más dentro de la resonancia y, a > la larga, tener que reducir el número de pacientes/mes a los que damos > servicio. Entenderéis que ajustar con las mínimas exploraciones posibles > controlando la incertidumbre es crítico para nosotros. > Ninguno de > nosotros es un experto en este tema del ajuste y elegí la función glm de > R exclusivamente porque permitía fijar límites y valores máximo y mínimo > para los parámetros que buscamos. De esta forma podemos garantizar que, > al menos, el resultado sea razonable pues muchas de las muestras además > vienen contaminadas con ruido o artefactos de la exploración. > Os > muestro dos ejemplos y ¿me diríais como lo haríais? > > Una de las > funciones a ajustar es S(b)/S(0) = (1-f)·e^(-b·D)+f·e^(-b·D*) con 6 > muestras b=0, 15, 65, 300, 685 y 1000. Esta se ajusta primero para > b>=300 despreciando el sumando con D* y, en una segunda iteración, se > obtiene D* con todos los valores de b (conocidos de la la primera > iteración D y f). Esto se hace porque sabemos que D* >= 4·D y ese > exponente decaerá mucho antes. > Otra de las funciones es esta [1] de > abajo, donde lo que se busca es T1 y se va variando alfa (todo lo demás > excepto k[H] es conocido, pero k[H] que carece de interés médico por > ahora) > > Esta función sabemos que tiene un máximo y exploramos con un > par de valores de alfa antes y otro par después de donde suponemos que > estará el máximo (pues alguna idea de por donde anda T1 tenemos en > función de la zona explorada). > ¿Cómo lo haríais vosotros? Ya os digo > que usamos glm sin demasiado argumento más allá del práctico. > Muchas > gracias por el tiempo. > > -- > Félix Navarro > Guirado > felix.navarro.sspa en juntadeandalucia.es > Radiofísica > hospitalaria. > H.R.U. de Málaga. > TLF: 951291436 > Av Carlos Haya S/N > 290010 > Málaga > > > Links: > ------ > [1] > http://mriquestions.com/uploads/3/4/5/7/34572113/7502602.png?348 > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Estimado Félix Navarro Guirado Hay posibilidades de evaluar, aunque hay una parte muy complicada entre lo médico y lo estadístico, porque puede ser que por estadística descarte algo médico poco frecuente, y justamente eso poco frecuente es lo que tiene realmente el valor diagnóstico. Vi algunas tesis donde utilizan imágenes médicas, pero entrenando con redes neuronales luego de ?descomponer? los pixeles, algunos luego utilizan algoritmos genéticos, de partículas, o algunos de ese tipo. No vi ejemplos de utilización de métodos ?más clásicos?, pero sí leí mucho sobre como entrenar el reconocimiento de patrones médicos, yo buscaría algo de DICOM y R, luego pensaría que puedo llegar a utilizar con las herramientas que tengo disponible. El punto crítico está en su capacidad de entrenamiento al modelo estadístico que crea conveniente a los fines de no caer en errores médicos (aunque estadísticamente sea correcto). Javier Rubén Marcuzzi De: Félix Navarro Guirado Enviado: martes, 21 de junio de 2016 12:18 Para: r-help-es en r-project.org Asunto: [R-es] Ajuste a una función arbitraria Estimados gurús de R, mi nombre es Félix Navarro y escribo desde el hospital regional de Málaga para hacer una consulta sobre R. Me gustaría saber como solucionaríais un problema con R porque nuestra decisión no tiene demasiado argumento más allá de que parece que funciona. Os comento: Estamos haciendo una herramienta para hacer unas medidas con la resonancia magnética y facilitarle los resultados a los radiólogos como ayuda a sus diagnósticos. Lo que hacemos es adquirir repetidas veces imágenes de los pacientes cambiando determinados parámetros de la exploración y luego, píxel a píxel, hacemos un ajuste de esos valores a una función. En esta función el valor del píxel en las imágenes de cada adquisición depende del tejido y ese parámetro modificado. Alguno de los coeficientes ajustados es el valor que buscamos y el que se usará para el diagnóstico. Cada vez que repetimos la exploración para tener una muestra más de la función a ajustar conlleva tener al paciente algún minuto más dentro de la resonancia y, a la larga, tener que reducir el número de pacientes/mes a los que damos servicio. Entenderéis que ajustar con las mínimas exploraciones posibles controlando la incertidumbre es crítico para nosotros. Ninguno de nosotros es un experto en este tema del ajuste y elegí la función glm de R exclusivamente porque permitía fijar límites y valores máximo y mínimo para los parámetros que buscamos. De esta forma podemos garantizar que, al menos, el resultado sea razonable pues muchas de las muestras además vienen contaminadas con ruido o artefactos de la exploración. Os muestro dos ejemplos y ¿me diríais como lo haríais? Una de las funciones a ajustar es S(b)/S(0) = (1-f)·e^(-b·D)+f·e^(-b·D*) con 6 muestras b=0, 15, 65, 300, 685 y 1000. Esta se ajusta primero para b>=300 despreciando el sumando con D* y, en una segunda iteración, se obtiene D* con todos los valores de b (conocidos de la la primera iteración D y f). Esto se hace porque sabemos que D* >= 4·D y ese exponente decaerá mucho antes. Otra de las funciones es esta [1] de abajo, donde lo que se busca es T1 y se va variando alfa (todo lo demás excepto k[H] es conocido, pero k[H] que carece de interés médico por ahora) Esta función sabemos que tiene un máximo y exploramos con un par de valores de alfa antes y otro par después de donde suponemos que estará el máximo (pues alguna idea de por donde anda T1 tenemos en función de la zona explorada). ¿Cómo lo haríais vosotros? Ya os digo que usamos glm sin demasiado argumento más allá del práctico. Muchas gracias por el tiempo. -- Félix Navarro Guirado felix.navarro.sspa en juntadeandalucia.es Radiofísica hospitalaria. H.R.U. de Málaga. TLF: 951291436 Av Carlos Haya S/N 290010 Málaga Links: ------ [1] http://mriquestions.com/uploads/3/4/5/7/34572113/7502602.png?348 [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]]
Félix, según entiendo, tienes medidas repetidas sobre individuos y tu modelo es nolineal. Por su aspecto sospecho que sale de un modelo compartimental o algo similar. En todo caso, no es un modelo lineal generalizado (glm) y con estos datos longitudinales lo suyo sería ajustar un modelo multinivel. Es decir, un modelo que tome en cuenta la correlación potencial de las medidas sobre un mismo individuos. O en otras palabras, estimar una curva S para cada individuo. El paquete de referencia en R para estos modelos es nlme. Un saludo. Olivier ----- Mensaje original ----- De: "Félix Navarro Guirado" <felix.navarro.sspa en juntadeandalucia.es> Para: r-help-es en r-project.org Enviados: Martes, 21 de Junio 2016 17:18:12 Asunto: [R-es] Ajuste a una función arbitraria Estimados gurús de R, mi nombre es Félix Navarro y escribo desde el hospital regional de Málaga para hacer una consulta sobre R. Me gustaría saber como solucionaríais un problema con R porque nuestra decisión no tiene demasiado argumento más allá de que parece que funciona. Os comento: Estamos haciendo una herramienta para hacer unas medidas con la resonancia magnética y facilitarle los resultados a los radiólogos como ayuda a sus diagnósticos. Lo que hacemos es adquirir repetidas veces imágenes de los pacientes cambiando determinados parámetros de la exploración y luego, píxel a píxel, hacemos un ajuste de esos valores a una función. En esta función el valor del píxel en las imágenes de cada adquisición depende del tejido y ese parámetro modificado. Alguno de los coeficientes ajustados es el valor que buscamos y el que se usará para el diagnóstico. Cada vez que repetimos la exploración para tener una muestra más de la función a ajustar conlleva tener al paciente algún minuto más dentro de la resonancia y, a la larga, tener que reducir el número de pacientes/mes a los que damos servicio. Entenderéis que ajustar con las mínimas exploraciones posibles controlando la incertidumbre es crítico para nosotros. Ninguno de nosotros es un experto en este tema del ajuste y elegí la función glm de R exclusivamente porque permitía fijar límites y valores máximo y mínimo para los parámetros que buscamos. De esta forma podemos garantizar que, al menos, el resultado sea razonable pues muchas de las muestras además vienen contaminadas con ruido o artefactos de la exploración. Os muestro dos ejemplos y ¿me diríais como lo haríais? Una de las funciones a ajustar es S(b)/S(0) = (1-f)·e^(-b·D)+f·e^(-b·D*) con 6 muestras b=0, 15, 65, 300, 685 y 1000. Esta se ajusta primero para b>=300 despreciando el sumando con D* y, en una segunda iteración, se obtiene D* con todos los valores de b (conocidos de la la primera iteración D y f). Esto se hace porque sabemos que D* >= 4·D y ese exponente decaerá mucho antes. Otra de las funciones es esta [1] de abajo, donde lo que se busca es T1 y se va variando alfa (todo lo demás excepto k[H] es conocido, pero k[H] que carece de interés médico por ahora) Esta función sabemos que tiene un máximo y exploramos con un par de valores de alfa antes y otro par después de donde suponemos que estará el máximo (pues alguna idea de por donde anda T1 tenemos en función de la zona explorada). ¿Cómo lo haríais vosotros? Ya os digo que usamos glm sin demasiado argumento más allá del práctico. Muchas gracias por el tiempo. -- Félix Navarro Guirado felix.navarro.sspa en juntadeandalucia.es Radiofísica hospitalaria. H.R.U. de Málaga. TLF: 951291436 Av Carlos Haya S/N 290010 Málaga Links: ------ [1] http://mriquestions.com/uploads/3/4/5/7/34572113/7502602.png?348 [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es