Interpolação de dados

Em matemática, a interpolação é um método que permite construir um novo conjunto de dados a partir de um conjunto discreto de dados pontuais previamente conhecidos. É muito usado para descobrir os valores entre números já conhecidos, o que permite desenhar mapas mais detalhados ou aumentar o número de dados em uma amostra. Para obter essa continuidade, pode-se construir uma função que aproximadamente se “encaixe” nestes dados pontuais.

Exemplo de interpolação no python usando SciPy
Exemplo de interpolação no python usando SciPy

No python, os pacotes numpy e SciPy possuem métodos de interpolação (interp e interpolate, respectivamente). Veja esse exemplo prático para aumentar uma série de 10 para 50 amostras (fonte: stackoverflow):

#!/usr/bin/env python3.7.6
# -*- Coding: UTF-8 -*-
import numpy as np
import scipy.interpolate as interpolate
import matplotlib.pyplot as plt

# Fix seed - optional
#import random
#random.seed(123)
# Generate some random data
y = np.random.random(10)
x = np.arange(y.size)

# Interpolate the data using a cubic spline to "new_length" samples
new_length = 50
new_x = np.linspace(x.min(), x.max(), new_length)
new_y = interpolate.interp1d(x, y, kind='cubic')(new_x)

# Plot the results
plt.figure()
plt.subplot(2,1,1)
plt.plot(x, y, 'bo-')
plt.title('Amostra original')

plt.subplot(2,1,2)
plt.plot(new_x, new_y, 'ro-')
plt.title('Amostra com interpolação')
plt.show()

A primeira parte visa fixar uma semente (opcional) e então gerar um vetor com valores 10 valores randômicos (eixo y) e uma sequência numérica com o mesmo tamanho do primeiro vetor (eixo y). Na segunda parte, são criados dois vetores: um novo eixo x, com o tamanho definido na variável “new_length”, e um novo eixo y interpolado usando os vetores dos eixos x e y originais, com base no novo eixo x. Por fim, são plotadas as duas curvas.

Foi usada a interpolação cúbica, que é muito versátil para vários tipos de problemas, mas existem outros tipos: ‘linear’, ‘nearest’, ‘zero’, ‘slinear’, ‘quadratic’, ‘cubic’, ‘previous’, ‘next’, where ‘zero’, ‘slinear’, ‘quadratic’ e ‘cubic’.

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.