Usuario:
$.ajax({ type:'POST\', url: \'/getCountryIndicators\', data: JSON.stringify([\'{{select}}\',nlang]), contentType:\'application/json\', dataType: \'json\', success: function(data){ } });


Procesar indicadores

Storyboard

>Modelo

ID:(67, 0)



Interpolación

Descripción

>Top


Para interpolar se ajusta en torno a los puntos a calcular un polinomio con los puntos que existen.

El proceso se puede realizar usando la librería panta:


import pandas as pd
import numpy as np

year = []
value = []

for i in range(dmin,dmax + 1):
if i > dmin:
nmin = int(df.date[i-1])
nmax = int(df.date[i])
for n in range(nmin + 1,nmax):
year.append(n)
value.append(np.nan)

ndate = int(df.date[i])
year.append(ndate)
if df.value[i] == '':
value.append(np.nan)
else:
val = float(df.value[i])
if val > 99.9:
val = 99.9
elif val < 0.01:
val = 0.01
val = (val - 50)/50
val = math.atanh(val)
value.append(val)


servalue = pd.Series(value)
inpvalue = servalue.interpolate(method="polynomial", order=3)

ID:(318, 0)



Extrapolación

Descripción

>Top


Para extrapolar se escala la función y procede a calcular la transformada de Fourier para luego usar la representación de la oscilación para estimar el futuro desarrollo.

El proceso se puede realizar usando la librería panta:


import pandas as pd
import numpy as np
from numpy import fft

def fourierExtrapolation(x, n_predict):

n = x.size
n_harm = 10 # number of harmonics in model
t = np.arange(0, n)
p = np.polyfit(t, x, 1) # find linear trend in x
x_notrend = x - p[0] * t # detrended x
x_freqdom = fft.fft(x_notrend) # detrended x in frequency domain
f = fft.fftfreq(n) # frequencies
indexes = list(range(n))

t = np.arange(0, n + n_predict)
restored_sig = np.zeros(t.size)
for i in indexes[:1 + n_harm * 2]:
ampli = np.absolute(x_freqdom[i]) / n # amplitude
phase = np.angle(x_freqdom[i]) # phase
restored_sig += ampli * np.cos(2 * np.pi * f[i] * t + phase)

return restored_sig + p[0] * t

x = np.array(inpvalue)
z = (x - 50)/50
z = np.arctanh(z)
extrapolation = fourierExtrapolation(z, num)
extrapolation = 50*np.tanh(extrapolation) + 50

for i in range(len(extrapolation)):
if i < len(value):
print(year[i],value[i],inpvalue[i],extrapolation[i])
else:
print(year[0]+i,'-','-',extrapolation[i])

ID:(319, 0)