4 votos

¿Cuántos puntos son necesarios para la desviación estándar?

En primer lugar, no soy un matemático, y nunca tomé estadísticas en la universidad, lo que sé sobre la desviación estándar lo he aprendido en las últimas semanas, así que sea amable...

Estoy trabajando en un software que calcula la desviación estándar de la concentración de oxígeno en una muestra de agua a lo largo del tiempo. Estoy usando un array numérico rodante de 600 dobles tomados a intervalos de 1 segundo (10 minutos de datos). Por matriz rodante quiero decir que a lo largo del tiempo, a medida que la matriz se llena, incremento un contador hasta que llega al límite de la matriz (600 elementos), y entonces pongo el contador a cero para empezar a sobrescribir los elementos anteriores de la matriz. De esta manera, a medida que el porcentaje de oxígeno se asienta, la desviación estándar disminuye con el tiempo. Cuando el llega al nivel requerido, el sensor de oxígeno toma una lectura sobre la concentración de oxígeno y luego pasa al siguiente punto de gas.

Mi pregunta es: ¿Estoy tomando demasiados puntos? Puede tomar un muy mucho tiempo para que baje al nivel solicitado para el experimento antes de tomar una lectura de calibración en ese punto de gas. Como tarda tanto, en realidad estoy permitiendo que el software se mueva al siguiente punto cuando el es un orden de magnitud mayor que el solicitado ( = 0,02 vs = 0,002).

Si reduzco el número de elementos de la matriz, creo que el cálculo sería mucho más rápido porque simplemente hay menos elementos que calcular y el conjunto de datos resultante es más pequeño para manipular. Al software no le importa el tamaño del array, sólo calcula el tamaño del array que se le pase. ¿Reducir el número de elementos de la matriz reduciría significativamente la precisión del cálculo? ¿Cambiando básicamente la precisión por la velocidad?

El software que utilizo para calcular la desviación estándar lo puedes encontrar aquí: http://www.devx.com/vb2themax/Tip/19007 . Se ha modificado ligeramente a partir de este ejemplo, pero no mucho:

Function ArrayStdDev(arr As Variant, Optional SampleStdDev As Boolean = True, _
Optional IgnoreEmpty As Boolean = True) As Double
Dim sum As Double
Dim sumSquare As Double
Dim value As Double
Dim count As Long
Dim Index As Long

' evaluate sum of values
' if arr isn't an array, the following statement raises an error
For Index = LBound(arr) To UBound(arr)
    value = arr(Index)
    ' skip over non-numeric values
    If value <> 0 Then
        ' add to the running total
        count = count + 1
        sum = sum + value
        sumSquare = sumSquare + value * value
     End If
Next

' evaluate the result
' use (Count-1) if evaluating the standard deviation of a sample
If count < 2 Then
ArrayStdDev = -9.99999

ElseIf SampleStdDev Then
    ArrayStdDev = Sqr((sumSquare - (sum * sum / count)) / (count - 1))
Else
    ArrayStdDev = Sqr((sumSquare - (sum * sum / count)) / count)
End If

End Function

Espero haber formulado una pregunta que tenga respuesta y agradezco cualquier idea que se ofrezca.

1voto

Alex_Bender Puntos 33

Basándome en las diversas sugerencias de los comentarios anteriores, he reducido el número de elementos de la matriz de 600 a 200. Las pruebas empíricas me mostraron que cualquier cosa por debajo de 200 y el cálculo abarcaba una muestra demasiado corta y el sensor preciso se dispararía demasiado pronto (antes de que los ml/L de oxígeno medidos σ se hubieran asentado lo suficiente como para ser una medición precisa). Esto hizo que se modificaran otros parámetros del baño de agua para acomodar los cambios. Esto no era inesperado, después de todo, estamos en las etapas experimentales de este nuevo tipo de calibración. Gracias a las sugerencias de ustedes, ahora estamos en la parte de ajustes del experimento, en lugar de la parte de "por qué no funciona bien".

Así que la respuesta a mi pregunta parece ser "200". Esperaba que fueran 42...

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