2009-06-25 53 views
20

Estoy seguro de que este es el tipo de problema que otros han resuelto muchas veces anteriormente.Interpolación de puntos de datos en Excel

Un grupo de personas va a hacer mediciones (consumo de energía en el hogar para ser exactos). Todos ellos harán eso en diferentes momentos y en diferentes intervalos.

Así que lo que obtendré de cada persona es un conjunto de {fecha, valor} pares donde faltan fechas en el conjunto.

Lo que necesito es un conjunto completo de {date, value} pares donde para cada fecha dentro del rango se conoce un valor (ya sea medido o calculado). Espero que una simple interpolación lineal sea suficiente para este proyecto.

Supongo que debe hacerse en Excel. ¿Cuál es la mejor manera de interpolar en un conjunto de datos así (por lo que tengo un valor para cada día)?

Gracias.

NOTA: Cuando se completen estos conjuntos de datos determinaré la pendiente (es decir, el uso por día) y a partir de eso podemos comenzar a hacer comparaciones de hogar a hogar.

INFORMACIÓN ADICIONAL Después de las primeras sugerencias: No quiero averiguar manualmente dónde están los agujeros en mi conjunto de medidas (¡demasiados conjuntos de medición incompletos!). Estoy buscando algo (existente) automático para hacer eso por mí. Así que si mi entrada es

{2009-06-01, 10} 
{2009-06-03, 20} 
{2009-06-06, 110} 

Entonces me esperan obtener de forma automática

{2009-06-01, 10} 
{2009-06-02, 15} 
{2009-06-03, 20} 
{2009-06-04, 50} 
{2009-06-05, 80} 
{2009-06-06, 110} 

Sí, me puede escribir software que hace esto. Solo espero que alguien ya tenga una función de software "lista para funcionar" (Excel) para este problema (bastante genérico).

+1

Me tropecé en este hoy. Aquí hay un fantástico ejemplo de trabajo que es similar a una respuesta a continuación, pero tiene un ejemplo descargable que no requiere complementos (http://www.blueleafsoftware.com/Products/Dagra/LinearInterpolationExcel.php) – EvilDr

Respuesta

5

La forma más fácil de hacerlo, probablemente, es la siguiente:

  1. Descargar Excel add-on aquí: XlXtrFun™ Extra Functions for Microsoft Excel

  2. Uso intepolate función(). = Interpolar ($ A $ 1: $ A $ 3, $ B $ 1: $ B $ 3, D1, FALSO, FALSE)

las columnas A y B deben contener su entrada, y la columna G deben contener toda su fecha valores. La fórmula entra en la columna E.

+0

Gracias. Esperaba que esto fuera una parte estándar de Excel. Esto hace lo que necesito. –

+7

Xlxtrfun ya no está disponible para descargar. Ver [mensaje de error 403 en el sitio web] (http://www.xlxtrfun.com/cgi-bin/formmail/formmail.pl). – davidbourguignon

+0

¿Alguien sabe dónde puede obtener el XLxtrfun ahora que el sitio web ya no es compatible con la descarga? –

5

Hay dos funciones, LINEST y TREND, que puede intentar ver para obtener los mejores resultados. Ambos toman conjuntos de X e Y conocidos junto con un nuevo valor X, y calculan un nuevo valor Y. La diferencia es que LINEST hace una regresión lineal simple, mientras que TREND primero intentará encontrar una curva que se ajuste a sus datos antes de hacer la regresión.

+0

Gracias por el consejos. Intenté estas dos funciones y aparentemente ambas funciones trazan una sola línea recta a través de todos los puntos de datos. Eso no es lo que estaba buscando. Mi requisito principal es que los puntos medidos permanezcan como están. Estas funciones 'rompen' este requisito. –

+0

Utilice solo dos puntos para sus entradas conocidas para hacer la interpolación lineal. Entonces, si tiene mediciones a las 8:30, 9:00, 10:00, 10:30 ... y quiere estimar la medición a las 9:30, solo necesitará las mediciones de 9:00 y 10:00 en la función ESTIMACION.LINEAL, no en todo el conjunto. Haga esto para cada punto de datos para el que necesite una estimación, utilizando los dos puntos de límite más cercanos. –

+5

Quizás malinterprete su sugerencia, pero para mí esto implica que determino manualmente "Donde están los agujeros". Soy un desarrollador, inherentemente flojo, quiero que el software lo descubra por mí. –

2

una manera gráfica agradable ver qué tan bien sus resultados interpolados encajan:

tomar la fecha, pares de valores y el gráfico usando el gráfico XY en Excel (no el gráfico de líneas). Haga clic derecho en la línea resultante en el gráfico y haga clic en 'Agregar línea de tendencia'. Hay muchas opciones diferentes para elegir qué tipo de ajuste de curva se utiliza. Luego puede ir a las propiedades de la línea de tendencia recién creada y visualizar la ecuación y el valor R-cuadrado.

Asegúrese de que al formatear la etiqueta de ecuación de la línea de tendencia, configure el formato numérico para que tenga un alto grado de precisión, de modo que se muestren todos los dígitos significativos de las constantes de ecuación.

29

Me encontré con esto y era reacio a usar un complemento porque hace difícil compartir la hoja con personas que no tienen el complemento instalado.

Mi compañero de oficina diseñó una fórmula limpia que es relativamente compacta (al precio de usar un poco de magia).

A tener en cuenta:

  • La fórmula funciona por:

    • usando la función MATCH para encontrar la fila en el rango inputs justo antes de que el valor que se busca (por ejemplo, 3 es el valor justo antes de 3.5)
    • usando OFFSET s para seleccionar el cuadrado de esa línea y el siguiente (en color violeta claro)
    • usando FORECAST para construir una interpolación lineal usando sólo esos dos puntos, y conseguir el resultado
  • Esta fórmula no puede hacer extrapolaciones; asegúrese de que su valor de búsqueda esté entre los puntos finales (hago esto en el ejemplo de abajo teniendo valores extremos).

No estoy seguro si esto es demasiado complicado para la gente; pero tenía el beneficio de ser muy portátil (y más simple que muchas soluciones alternativas).

Si desea copiar y pegar la fórmula, que es:

=FORECAST(F3,OFFSET(inputs,MATCH(F3,inputs)-1,1,2,1),OFFSET(inputs,MATCH(F3,inputs)-1,0,2,1

(inputs ser un rango con nombre)

+2

+1 Todo un truco útil. Aunque la fórmula que ofrece para copiar y pegar no coincide con la de su captura de pantalla. Este último es el correcto; el primero contiene errores. En mi caso utilicé: '= PRONÓSTICO (W33, DESPLAZAMIENTO (T38: T59, PARTIDO (W33, S38: S59) -1,0,2,1), DESPLAZAMIENTO (S38: S59, PARTIDO (W33, S38: S59) -1,0,2,1)) 'donde S38: S59 contiene los valores xy T38: T59 los valores y. –

+0

¡Gracias! Corregido la fórmula. – YGA

+2

La imagen está rota. –

1

alternativamente.

=INDEX(yVals,MATCH(J7,xVals,1))+(J7-MATCH(J7,xVals,1))*(INDEX(yVals,MATCH(J7,xVals,1)+1)-INDEX(yVals,MATCH(J7,xVals,1)))/(INDEX(xVals,MATCH(J7,xVals,1)+1)-MATCH(J7,xVals,1)) 

donde j7 es el valor x.

xvals es gama de valores de x yvals es gama de valores de y

más fáciles de poner esto en código.

2

La respuesta anterior de YGA no maneja casos de fin de rango donde el valor X deseado es el mismo que el valor X del rango de referencia. Usando el ejemplo dado por YGA, la fórmula excel devolvería # DIV/0! error si se solicitó un valor interpolado en 9999. Esto es obviamente parte de la razón por la cual YGA agregó los puntos finales extremos de 9999 y -9999 al rango de datos de entrada, y luego asume que todos los valores pronosticados se encuentran entre estos dos números. Si dicho relleno no es deseado o no es posible, ¡otra forma de evitar un # DIV/0!error es comprobar para una coincidencia exacta valor de entrada utilizando la siguiente fórmula:

=IF(ISNA(MATCH(F3,inputs,0)),FORECAST(F3,OFFSET(inputs,MATCH(F3,inputs)-1,1,2,1),OFFSET(inputs,MATCH(F3,inputs)-1,0,2,1)),OFFSET(inputs,MATCH(F3,inputs)-1,1,1,1)) 

donde F3 es el valor donde se desean resultados interpolados.

Nota: Acabo de agregar esto como un comentario a la publicación original de YGA, pero todavía no tengo suficientes puntos de reputación.

0

Puede averiguar qué fórmula se ajusta mejor a sus datos, utilizando la función de "línea de tendencia" de Excel. Usando esta fórmula, se puede calcular para cualquier yx

  1. Crear dispersión lineal (XY) para él (Insertar => Dispersión);
  2. Crear línea de tendencia promedio polinominal o móvil, marque "Mostrar ecuación en gráfico" (haga clic derecho en series => Agregar línea de tendencia);
  3. Copia la ecuación en la celda y reemplazar x 's con su valor x deseada

En pantalla de abajo A12: A16 sostiene x' s, B12: B16 sostiene y 's, y C12 contiene fórmula que calcula y para cualquier x.

Excel Interpolation

que por primera vez una respuesta here, pero más tarde encontraron esta pregunta

Cuestiones relacionadas