8 votos

Matemáticas aplicadas: analizar las orientaciones de las células

Estoy analizando la orientación de las células y he tropezado con una peculiaridad al intentar hacer una afirmación sobre la dirección principal de las células y cuántas células están orientadas a lo largo de esta dirección principal. Permítanme dar un ejemplo que muestra una pequeña parte de una imagen de fluorescencia

enter image description here

En primer lugar, tenga en cuenta que no me interesa el dirección pero sólo en la orientación. Por lo tanto, una celda alineada en la dirección pi tiene la misma orientación que una celda alineada en la dirección -pi. En la esquina superior izquierda de la imagen, se ve que hay dos celdas con orientación similar pero con dirección opuesta.

Para esa imagen de células, puedo crear un histograma circular que muestra muy bien que la mayoría de las células tienen la misma orientación. Esto debería ser intuitivamente comprensible:

enter image description here

Sin embargo, un histograma estándar en el que sólo trazamos la mitad superior del círculo revela el problema:

Mathematica graphics

Aunque se ve claramente que las dos partes pertenecen al mismo pico de orientación, están separadas porque representar las orientaciones en ángulos entre 0 y pi es una mala elección aquí.

En este caso particular, se podría arreglar fácilmente transformando todas las orientaciones al rango [-pi,pi). Sin embargo, la orientación primaria no se conoce de antemano, y para algunas imágenes, ni siquiera tiene que existir.

Está claro que el cálculo de algunos parámetros estadísticos descriptivos, como la media o la varianza, no dará los resultados esperados.

Pregunta: Suponiendo que tenemos un gran número de orientaciones de celdas, donde el histograma es periódico (porque la orientación o es la misma que o+pi, o+2pi, ...), ¿hay alguna manera de evaluar las propiedades estadísticas? Si esto no es posible, ¿existe algún método diferente para evaluar

  1. la orientación primaria de las células
  2. la desviación de esta orientación primaria

Tenga en cuenta que tengo varias ideas de cómo abordar esto, pero este problema me parece tan fundamental que estoy seguro de que debe haber una manera estándar de cómo tratar esto.

Editar:

Como me hizo saber @Jim Baldwin, todo esto se llama Estadísticas direccionales

El hecho de que 0 grados y 360 grados sean ángulos idénticos, de modo que, por ejemplo, 180 grados no es una media razonable de 2 grados y 358 grados, proporciona una ilustración de que se necesitan métodos estadísticos especiales para el análisis de algunos tipos de datos (en este caso, datos angulares).

Este es definitivamente el punto de partida que estaba buscando.

3voto

Jim Baldwin Puntos 256

Así es como se podría enfocar este problema con Mathematica :

(* Generate some data *)
mu = 6;   (* Mean for distribution \[Equal] Orientation angle *)
k = 8; (* Variability *)
n = 100;(* Sample size *)
t = Flatten[{RandomVariate[VonMisesDistribution[mu, k], n], 
   Pi + RandomVariate[VonMisesDistribution[mu, k], n]}];
nSamples = 2 n;

(* Plot the directional data *)
(* Add a little jittering to the radius used *)
r = RandomVariate[UniformDistribution[{0.95, 1.05}], 2 n];
ListPlot[Transpose[{r Cos[t], r Sin[t]}],
 PlotRange -> {{-1.1, 1.1}, {-1.1, 1.1}},
 AspectRatio -> 1, PlotLabel -> "Directional data"]

Directional data

(* Determine orientation from the directional data *)
(* Augment the data set by including a reflection through the origin *)
t2 = Mod[Flatten[{t, t + Pi}], 2 Pi];

(* Keep only those values that are between 0 and Pi 
as these values are the orientation values.  This get us
back to the size of the original dataset. Using this
range is arbitrary but convenient and produces identical 
estimates as any other 180 degree range.  *)
orientation = Select[t2, # >= 0 && # < Pi &];
Histogram[orientation, "Scott", Frame -> True, 
 FrameLabel -> {"Radians", "Count"}]

Orientation angles histogram

(* Now because our orientation angles are such that values close to 0 radians
have similar orientations as those close to Pi radians, we can double the angles
which gets the range of angles from 0 to 2 Pi.  We then use the usual estimator
for "mean direction" and divide the results by 2 to get back to the desired 
orientation units.  *)
theta = Mod[ArcTan[Total[Cos[2 orientation]], Total[Sin[2 orientation]]],  2 Pi]/2

(* I'm assuming/guessing that you want a few numbers to summarize the distribution of
orientations rather than some statistical test or the fitting of some specific
probability density function. So far we've estimated the mean orientation.  *)
(* Now for the percentiles that encompass 95% of the data.  Find the 2.5 and 
97.5 percentiles - with respect to the estimated mean. *)
data = Sort[Table[If[orientation[[i]] - theta >= Pi/2, orientation[[i]] - Pi,
     If[theta - orientation[[i]] >= Pi/2, orientation[[i]] + Pi, orientation[[i]]]],
    {i, Length[orientation]}]];
upper = data[[Floor[0.975 nSamples + 0.5]]]
lower = data[[Floor[0.025 nSamples + 0.5]]]

(* Plot results *)
ListPlot[{Transpose[{r Cos[data], r Sin[data]}],
  1.2 {{Cos[theta], Sin[theta]}, {0, 0}},
  1.2 {{0, 0}, {Cos[upper], Sin[upper]}},
  1.2 {{0, 0}, {Cos[lower], Sin[lower]}}},
 Joined -> {False, True, True, True}, 
 PlotLabel -> "Orientation angles",
 PlotRange -> {{-1.1, 1.1}, {-1.1, 1.1}}, AspectRatio -> 1,
 PlotLegends -> {"Data", "Mean orientation", "97.5 Percentile", 
   "2.5 Percentile"}]

Orientation angles and summary statistics

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X