Mitjana mòbil

El mètode de les mitjanes mòbils s’utilitza per a analitzar la tendència de sèries temporals de dades, com ara els valors de les accions de la borsa. Consisteix en crear una nova sèrie temporal cada nombre de la qual és la mitjana aritmètica d’un subconjunt de les dades originals.

Per exemple, si es tenen 100 dades i es vol obtenir les mitjanes mòbils de cada 25 dades, el primer valor de la sèrie de mitjanes mòbils és la mitjana de les primeres 25 dades, el segon la mitjana de les dades 2 a la 26, el tercer la mitjana de les dades 3 a la 27 i així successivament, fins a la mitjana de les darreres 25 dades (de la dada número 76 a la 100).

Guardeu les funcions següents en el fitxer mitjanam.py.

  1. Dissenyeu el generador següent:

    mitjanam.finestra3(it)

    Genera un iterador compost per tuples de cada 3 elements consecutius de l’iterador it.

    L’iterador it ha de tenir tres elements com a mínim.

    Per exemple:

    >>> import mitjanam
    
    >>> it = iter([1,113,4,5,6,22,77])
    >>> it2 = mitjanam.finestra3(it)
    >>> for t in it2:
    ...     print(t)
    (1, 113, 4)
    (113, 4, 5)
    (4, 5, 6)
    (5, 6, 22)
    (6, 22, 77)
    

    Disposeu de més jocs de proves al fitxer mitjanam-1.txt.

  2. Dissenyeu el generador següent:

    mitjanam.mitjanes_mobils3(it)

    Genera l’iterador de mitjanes mòbils de cada 3 elements de l’iterador it.

    L’iterador it ha de tenir tres elements com a mínim. Els elements de it han de ser nombres.

    Per exemple:

    >>> import mitjanam
    
    >>> it = iter([1,21,5,4,-6,14,10,-9])
    >>> it2 = mitjanam.mitjanes_mobils3(it)
    >>> for t in it2:
    ...     print(t)
    9.0
    10.0
    1.0
    4.0
    6.0
    5.0
    

    Per a resoldre aquest apartat cal fer servir l’iterador mitjanam.finestra3().

    Disposeu de més jocs de proves al fitxer mitjanam-2.txt.

  3. Dissenyeu el generador següent:

    mitjanam.finestra_n(it, n)

    Genera un iterador compost per tuples de cada n elements consecutius de l’iterador it.

    L’iterador it ha de tenir n elements com a mínim.

    Per exemple:

    >>> import mitjanam
    
    >>> it = iter([1,113,4,5,6,22,77])
    >>> it2 = mitjanam.finestra_n(it,4)
    >>> for t in it2:
    ...     print(t)
    (1, 113, 4, 5)
    (113, 4, 5, 6)
    (4, 5, 6, 22)
    (5, 6, 22, 77)
    

    Disposeu de més jocs de proves al fitxer mitjanam-3.txt.

  4. Dissenyeu el generador següent:

    mitjanam.mitjanes_mobils_n(it, n)

    Genera l’iterador de mitjanes mòbils de cada n elements de l’iterador it.

    L’iterador it ha de tenir n elements com a mínim. Els elements de it han de ser nombres.

    Per exemple:

    >>> import mitjanam
    
    >>> it = iter([1,21,5,4,-6,14,10,-9])
    >>> it2 = mitjanam.mitjanes_mobils_n(it, 3)
    >>> for t in it2:
    ...     print(t)
    9.0
    10.0
    1.0
    4.0
    6.0
    5.0
    

    Per a resoldre aquest apartat cal fer servir l’iterador mitjanam.finestra_n()

    Disposeu de més jocs de proves al fitxer mitjanam-4.txt.

  5. Anàlogament a la mitjana mòbil, es defineix la mediana mòbil com la mediana de cada n nombres consecutius d’una sèrie numèrica. Dissenyeu el generador següent:

    mitjanam.medianes_mobils_n(it, n)

    Genera l’iterador de medianes mòbils de cada n elements de l’iterador it.

    L’iterador it ha de tenir n elements com a mínim. Els elements de it han de ser nombres.

    Per exemple:

    >>> import mitjanam
    
    >>> it = iter([1,21,5,34,46,7,24, 9])
    >>> it2 = mitjanam.medianes_mobils_n(it, 4)
    >>> for t in it2:
    ...     print(float(t))
    13.0
    27.5
    20.5
    29.0
    16.5
    
    >>> it = iter([1,21,76,34,46,77,50, 9])
    >>> it2 = mitjanam.medianes_mobils_n(it, 5)
    >>> for t in it2:
    ...     print(float(t))
    34.0
    46.0
    50.0
    46.0
    

    Per a resoldre aquest apartat cal fer servir l’iterador mitjanam.finestra_n()

    Disposeu de més jocs de proves al fitxer mitjanam-5.txt.

Solució

Disposeu d’una solució al fitxer mitjanam.py.