2010-07-30 14 views
7

Tengo muy pocos datos para mi análisis, por lo que quiero producir más datos para el análisis mediante interpolación.Cómo hacer la interpolación

Mi conjunto de datos contiene 23 atributos independientes y 1 atributo dependiente ..... ¿cómo se puede hacer esta interpolación?

EDIT:

mi principal problema es la escasez de datos, i hv para aumentar el tamaño de mi conjunto de datos, n atributos son categóricas, por ejemplo, atribuyo A puede ser baja, alta, meduim, por lo que la interpolación es el derecho enfoque para ello o no ???

+0

¿Obtendrá algún análisis significativo de los datos interpolados? – Blorgbeard

+0

¿Los atributos son numéricos? ¿Y qué tan bueno es tu matemática? Además: puede agregar puntos de datos, pero estos datos son todos imaginarios. No estoy seguro de cómo eso ayuda al análisis, aparte de "comenzar con más datos (reales)" –

+8

¿No es la premisa un poco lejos de aquí? Si su problema es demasiado pequeño con un tamaño de muestra, la interpolación parece ser una aproximación incorrecta, ya que no hará que su muestra demasiado pequeña sea más válida. Es como subir de escala un DVD a calidad HD, no obtendrá una imagen más precisa, solo píxeles duplicados/inferidos/puntos de datos. –

Respuesta

0

En términos generales, para interpolar una matriz:

double[] data = LoadData(); 
double requestedIndex = /* set to the index you want - e.g. 1.25 to interpolate between values at data[1] and data[2] */; 

int previousIndex = (int)requestedIndex; // in example, would be 1 
int nextIndex = previousIndex + 1; // in example, would be 2 

double factor = requestedIndex - (double)previousIndex; // in example, would be 0.25 

// in example, this would give 75% of data[1] plus 25% of data[2] 
double result = (data[previousIndex] * (1.0 - factor)) + (data[nextIndex] * factor); 

Esto es realmente pseudo-código; no realiza la verificación de rango, asume que sus datos están en un objeto o matriz con un indexador, y así sucesivamente.

Espero que eso lo ayude a comenzar - cualquier pregunta por favor publique un comentario.

0

Si las 23 variables independientes se muestrean en una hiper-cuadrícula (regularmente espaciadas), puede elegir particionar en hiperciclos y hacer la interpolación lineal del valor dependiente desde el vértice más cercano al origen a lo largo de los vectores definidos desde ese vértice a lo largo de los bordes hipercubitos alejados del origen. En general, para una partición dada, proyecta el punto de interpolación en cada vector, lo que le da una nueva 'coordenada' en ese espacio particular, que luego puede usarse para calcular el nuevo valor multiplicando cada coordenada por la diferencia del dependiente variable, sumando los resultados y agregando al valor dependiente en el origen local. Para hipercubos, esta proyección es sencilla (simplemente resta la posición del vértice más cercano al origen).

Si las muestras no están uniformemente espaciadas, entonces el problema es mucho más desafiante, ya que tendrías que elegir un partición apropiada si quería realizar una interpolación lineal. En principio, Delaunay triangulation se generaliza a N dimensiones, pero no es fácil de hacer y los objetos geométricos resultantes son mucho más difíciles de entender e interpolar que un simple cubo.

Una cosa que podría considerar es si su conjunto de datos es naturalmente susceptible a la proyección para que pueda reducir el número de dimensiones. Por ejemplo, si dos de sus variables independientes dominan, puede colapsar el problema en 2 dimensiones, que es mucho más fácil de resolver. Otra cosa que podría considerar es tomar los puntos de muestreo y organizarlos en una matriz. Puede realizar una descomposición SVD y observar los valores singulares. Si hay unos pocos valores singulares dominantes, puede usar esto para realizar una proyección al hiperplano definido por esos vectores de base y reducir las dimensiones de su interpolación. Básicamente, si sus datos están distribuidos en un conjunto particular de dimensiones, puede usar esas dimensiones dominantes para realizar su interpolación, ya que realmente no tiene mucha información en las otras dimensiones.

Estoy de acuerdo con los otros comentaristas, sin embargo, que su premisa puede estar apagada. Por lo general, no desea interpolar para realizar análisis, ya que solo está eligiendo interpolar sus datos de diferentes maneras y la elección de la interpolación sesga el análisis. Solo tiene sentido si tiene una razón convincente para creer que una interpolación particular es físicamente consistente y simplemente necesita puntos adicionales para un algoritmo en particular.

1

Esto es un problema matemático pero hay muy poca información en la pregunta para responder correctamente. Dependiendo de la distribución de sus datos reales, puede tratar de encontrar una función que siga. También puede intentar interpolar datos usando redes neuronales artificiales, pero eso sería complejo.El problema es que para encontrar interpolaciones necesitas analizar los datos que ya tienes y que frustran el propósito. Probablemente haya más en este problema pero no explicado. ¿Cuál es la naturaleza de los datos? ¿Puedes colocarlo en el espacio n-dimensional? ¿Qué esperas obtener del análisis?

0

Eche un vistazo a los métodos de regresión presentados en Elements of statistical learning; la mayoría de ellos pueden probarse en R. Hay muchos modelos que se pueden usar: regresión lineal, modelos locales, etc.

Cuestiones relacionadas