27 de junio de 2020

Programas para analizar la evolución de las notas de IMDb con el tiempo


A continuación voy a explicar paso a paso cómo realicé el análisis sobre la evolución de las votaciones de las películas en IMDb que comenté en la anterior entrada del blog por si queréis realizar análisis similares.

La técnica que utilicé para realizar este análisis se denomina Web scraping y consiste en diseñar un programa para extraer información de páginas web y estructurarlo en una base de datos.



Instalación software

La herramienta principal que usé para ello es Puppeteer, una librería de node.js que permite automatizar acciones en Google Chrome. Por tanto, para que os resulte fácil seguir este tutorial os vendría bien ciertos conocimientos de programación con JavaScript. Si no es así voy a intentar ser lo más claro posible para que cualquiera con un mínimo interés por la informática lo pueda entender, pero si estáis interesados en aprender a programar os recomiendo los magníficos tutoriales de Píldoras Informáticas.

Para instalar Puppeteer descargamos Node.j con Node Package Manager (NPM), que nos permitirá instalar la librería con facilidad. Para ello, y con este tutorial en inglés a mano, seguimos lo siguientes pasos:

  1. Descargar en Windows el instalador desde la página web de Node.js
  2. Iniciar el instalador descargado (archivo .msi)
  3. Seguir las indicaciones del instalador asegurándonos que NPM está incluido.
  4. Reiniciar el ordenador

A continuación comprobamos que todo se ha instalado correctamente, para ello iremos a la consola de windows (simbolo de sistema) y teclearemos node -v. La máquina debería devolvernos la versión de node.js instalada (en mi caso v12.2.0). Para comprobar que también se instaló NPM teclearemos npm -v, lo que imprimirá en pantalla el número de versión 6.9.0 o posterior.

Una vez instaladas estas herramientas básicas creamos en nuestro ordenador la carpeta en la que trabajaremos, accedemos a ella a través de la consola (en mi caso cd FilmRatingEvolution) y pulsamos los siguientes comandos:

npm init -y  para genererar un paquete .json en la carpeta
npm install puppeteer para instalar puppeteer junto a Chromium (lleva un rato)

Con esto tendríamos todo lo necesario instalado. A partir de ahí ya podemos trabajar en el programa que nos permitirá recolectar los datos que queramos de Internet. Para iniciarnos utilizaré las bases de esta página web.



Sacando información de una web

Empezaremos creando un primer programa llamado notasimple.js que servirá para tomar la valoración en IMDB de una sola película en una fecha concreta tal y como la registra archive.org, y para ello utilizaremos el editor de código Sublime.

Para sacar el valor concreto de la nota se necesita el selector que la identifica en esa página. Para ello lo que haremos será inspeccionar el código de la página web siguiendo los siguientes pasos:
  1. Pulsar Ctrl + Mayúscula + I
  2. En la consola que se abre se pulsa al símbolo de la flecha que hay arriba a la izquierda
  3. Se recorre con el ratón la página web hasta situarse justo encima de la nota
  4. Al situarse sobre la nota y pulsar el botón izquierdo en la consola se señala dónde está el selector
  5. Con el ratón encima de la línea de código que se destacó en la consola se pulsa botón derecho/copiar/copiar selector.

Por tanto el selector para las nota de IMDb en Archive.org para el 28 de abril del 2019 sería: 

#title-overview-widget > div.vital > div.title_block > div > div.ratings_wrapper > div.imdbRating > div.ratingValue > strong > span

Con esto ya podríamos sacar la nota de una página web y guardarla en un archivo mediante el programa notasimple.js que tendrá la siguiente estructura:

// carga puppeteer:
const puppeteer = require('puppeteer'
// ejecuta el módulo:
void (async () =>
    try { // en caso de que no haya errores:
// crea un navegador virtual:
const browser = await puppeteer.launch() 
// crea una pestaña en el navegador:
const page = await browser.newPage()
        // evita el límite de 30000ms para que se cargue la página:
        await page.setDefaultNavigationTimeout(0);
/// página de la que se va a extraer el valor:
await page.goto('https://web.archive.org/web/20190427190042/https://www.imdb.com/title/tt1392170/')
// Espera a que se cargue el selector que nos interesa:
await page.waitForSelector("#title-overview-widget > div.vital > div.title_block > div > ...
div.ratings_wrapper > div.imdbRating > div.ratingValue > strong > span");
// guarda en la variable "rates" el dato de salida:
const rates = await page.evaluate(() =>
            // guarda el valor del selector en la variable "RATE_SELECTOR":
    const RATE_SELECTOR = "#title-overview-widget > div.vital > div.title_block > div > ...
div.ratings_wrapper > div.imdbRating > div.ratingValue > strong > span" 
    // guarda la nota en formato texto evitando espacios en blanco en la variable "MovieRating"::
    const MovieRating = document.querySelector(RATE_SELECTOR).innerText.trim() 
            //devuelve la variable definida como "MovieRagint" en la variable "rates":
            return MovieRating 
})
// muestra el valor devuelto:
console.log(JSON.stringify(rates, null, 2)) 
        //crea un archivo usando el módulo filesystem:
const fs = require('fs') 
fs.writeFile( // el archivo json se crea en la ubicación indicada con el siguiente nombre:
    './json/rates.json',

    // convierte a formato JSON la variable "rates":
    JSON.stringify(rates, null, 2),
            // indica si se ha escrito el archivo correctamente o no:
    (err) => err ? console.error('Data not written', err) : console.log('Data written'
)
//cierra el navegador:
        await browser.close()
    } catch (error) { // en caso de que haya errores
console.log(error) // escribe error
    }
})()

Para ejecutarlo hay que escribir node notasimple.js, que muestra el valor en pantalla y lo guarda en el archivo rates.json. Ese archivo se puede abrir con TextPad y guardarlo como .txt si lo consideras necesario.

Por tanto ya tenemos un programa que te saca la nota en un día concreto. Lo mismo podemos hacer para extraer el número de votos y el título de la película si añadimos sus respectivos selectores.

El problema de este programa es que solo te sacaría la nota para las fechas comprendidas entre el 23 de enero del 2016 y la fecha en la que estoy escribiendo estas líneas, ya que si modifica el diseño de la página estos selectores pueden cambiar. Como yo realicé el estudio de los últimos diez años tuve que buscar cuándo habían sido realizado cambios en el diseño durante ese periodo y encontré que las fechas en las que cambiaron los selectores fueron aproximadamente el 23/01/2016, 20/02/2013, 01/09/2011 y 10/10/2010. De esta manera, dependiendo del rango de fechas en el que uno quiera sacar la nota, se usarán unos selectores u otros.

Pero para automatizarlo queda un detalle, y es que el programa tiene que recorrer fecha a fecha entre los registros de archive.org, que no necesariamente registra los datos todos los días. A continuación explicaré cómo hacerlo.



Recolectar los registros temporales de una página web

Si se introduce una página web en la Wayback Machine de archive.org, esta muestra un calendario del año actual y coloreadas las fechas de las que existe registro de esa página. En la parte superior de éste se puede ver un histograma del número de registros que existen para cada mes y año hasta 1996 y justo encima el número de registros entre la primera fecha en la que se guardó la web hasta la última. 


Como lo que se quiere es analizar todas las notas registradas en la web durante la última década lo primero que hay que hacer es sacar cual es la primera fecha en la que existen registros y a partir de ahí ir año a año hasta la actualidad. Así que el primer paso consiste en sacar esa fecha con el programa 0.FirstDate.js, que tiene exactamente la misma estructura que notasimple.js pero modificando el selector y añadiendo un línea de código que permite extraer el año del selector de archive.org que tiene el formato Mes Día, Año.
     const year=firstYear.slice(firstYear.length - 4, firstYear.length)
El programa guarda ese año en un archivo llamado FirstData.json ¿Y por qué solo extrae el año cuando nos interesa la fecha exacta del primer registro? Porque para recorrer todos los años en archive.org es necesario ir modificando la dirección de la página añadiendo el año de la siguiente manera:
https://web.archive.org/web/2013*/https://www.imdb.com/title/tt2911666/
https://web.archive.org/web/2014*/https://www.imdb.com/title/tt2911666/
...
https://web.archive.org/web/2020*/https://www.imdb.com/title/tt2911666/
y una vez en la página de cada año, con el siguiente selector 

#react-wayback-search > div.calendar-layout > div.calendar-grid div > div > a

se extraen todos los enlaces que llevan a todos los días registrados, que presentan el siguiente formato: 
https://web.archive.org/web/20130604083143/http://www.imdb.com/title/tt2911666/
donde la parte resaltada se corresponde con el año, el mes, el día, la hora, el minuto y el segundo registrado (08:31:43 del 04 de Junio del 2013 en el ejemplo).

Todo este proceso se realiza con el programa 1.LinksDays.js, que tiene la siguiente estructura:

// cargar en puppeteer:
const puppeteer = require('puppeteer')
// ejecutar el módulo:
void (async () =>
    //crea un archivo usando el módulo filesystem:
    var fs = require('fs');
    // guarda en "ReleaseYear" el primer año registrado en el archivo FirstData.json:
    var ReleaseYear = JSON.parse(fs.readFileSync('Datos_Notas/FirstData.json', 'utf8'));
    // define el año de la última fecha que tendremos en cuenta
    i=2020
    // crea una variable en la que guardaremos los enlaces de todos los días registrados:
    var AllLinks = []
    try { // en caso de que no haya errores
//mientras el año "i" sea igual o posterior al primer año de registro y no anterior a 2010 entra en el bucle
while (i>=ReleaseYear&&i>=2010) { 
    // crea un navegador:
    const browser = await puppeteer.launch() 
    // crea una pestaña en el navegador:
    const page = await browser.newPage()
    // define la parte inicial de la página web:
    var header = 'https://web.archive.org/web/'
    // define la parte final de la página web:
    var ending = '*/https://www.imdb.com/title/tt1598778/'
    // define la página web: 
    var WebSite=header+i+ending
    // evita el límite de 30000ms para que se cargue la página:
    await page.setDefaultNavigationTimeout(0);
    // vamos al calendario de un año del que se van a extraer las fechas en las que hay registro:
    await page.goto(WebSite) 
    // espera a que se cargue el selector que nos interesa:
    await page.waitForSelector("#react-wayback-search > div.calendar-layout > div.calendar-grid ...
                    div > div > a");
    // guarda en la variable "links" el dato de salida del año "i":
    const links = await page.evaluate(() =>
        // guarda en la variable "DataDate" el valor del selector correspondiente a un día registrado:
const DataDate = "#react-wayback-search > div.calendar-layout > div.calendar-grid div > div > a"
// guarda en la lista "Dates" todos los "DataDate" que encuentra en la página web
const Dates = document.querySelectorAll(DataDate) 
// define el vector de salida "Linkdates"
const Linkdates = [] 
// recorre todos los registros de la lista "Dates" con la variable "day"
for (const day of Dates) {
    // introduce en la variable "Linkdates" cada enlace registrado la variable "day"
    Linkdates.push({
        link: day.getAttribute("href"),
    })
}
//devuelve el vector definido como "Linkdates" en la variable "links":
return Linkdates 
    })
    // añade a "AllLinks" los enlaces registrados en la variable "links" para el año "i":
    AllLinks=AllLinks.concat(links)
    // resta 1 al año del que extraeremos datos:
    i--
    //cierra el navegador:
    await browser.close() 
        }
// muestra el valor devuelto
console.log(JSON.stringify(AllLinks, null, 2))
        //crea un archivo usando el módulo filesystem: 
const fs = require('fs')
fs.writeFile( // el archivo json se crea en la ubicación indicada con el siguiente nombre:
    './Datos_Notas/alldates.json',
    // convierte a formato JSON la variable "AllLinks":
    JSON.stringify(AllLinks, null, 2), 
    // indica si se ha escrito el archivo correctamente o no: 
    (err) => err ? console.error('Data not written', err) : console.log('Data written')
)
    } catch (error) { // en caso de que haya errores
console.log(error) // escribe error
    }
})()

Por tanto con este programa ya tendríamos un archivo llamado alldates.json que contendría un enlace por cada día registrado en la Wayback Machine durante el periodo 2010-2020. Esos enlaces se pueden meter en el programa notasimple.js e ir sacando las notas de IMDb para una película para cada día. Para no tenerlo que hacer uno se programa 2.ExtractRates.js, que automatiza lo que hacía notasimple.js añadiendo los siguientes cambios:
  • Lee los enlaces del archivo alldates.json
  • Evita que se cargue toda la página para no ralentizar la captura de datos
  • Extrae el título de la película, la nota, número de voto y día que se registra cada dato
  • Aplica unos selectores u otros en función del diseño de IMDb (ya comenté anteriormente que en los últimos 10 años lo han modificado en cuatro ocasiones).
  • Calcula cuantos días han transcurrido entre cada registro tomado y el primero disponible (en los primeros registros no habrá nota porque suelen realizarse meses o años antes de que se estrene la película)
Este programa, al ser bastante extenso para publicarlo en el blog, lo tenéis disponible, al igual que los dos anteriores,en mi cuenta de GitHub.



Cómo analizar la evolución de las notas de IMDb 

Con los tres programas explicados en los apartados anteriores ya se pueden sacar las notas de IMDb a lo largo del tiempo para una película. Los pasos que hay que seguir son:
  1. Id a IMDb y buscar la película que os interesa
  2. Copiad el enlace de dicha película
  3. En los programas 0.FirstDate.js y 1.LinksDays.js modificad el enlace de la película
  4. Ejecutad 0.FirstDate.js, que crea una archivo llamado FirstData.json
  5. Ejecutad 1.LinksDays.js, que crea un archivo llamado alldates.json
  6. Ejecutad 2.ExtractRates que crea un archivo llamado allRates.json
Ese último archivo tiene el siguiente formato:

Título,      Nota,      Número de votos,      Fecha, Días trascurridos 

Para leer el archivo en excel y realizar las gráficas que pudisteis ver en mi análisis, podéis abrirlo con TextPad, eliminar los saltos de línea reemplazando ,\n y al abrir en excel delimitar por " y recordad que los decimales están con punto y los miles con comas.

Los programas podrían mejorarse o automatizarse todavía más extrayendo los códigos de las películas directamente de la web de IMDb, introduciendo los títulos a través de un input, unificando los tres programas o incluso diseñando una página de este estilo. Son mejoras que igual implemento más adelante.

Por último os dejo una serie de enlaces que os pueden resultar útiles para entender toda esta parte de programación que he explicado:

Con esto doy por terminado este especial sobre las notas de IMDb y continuaré con el repaso al cine de la última década.



26 de junio de 2020

¿Cómo cambian las notas de IMDb a lo largo del tiempo?

Hago un pequeño parón en el especial de la década que estoy realizando en el blog para responder algunas dudas que tengo desde hace tiempo y cuya respuesta no he podido encontrar hasta ahora en la red. ¿Cómo varían las notas de IMDb a lo largo del tiempo? ¿Cómo puede ser que nada más estrenarse algunas de las grandes superproducciones de Hollywood sus valoraciones superen a grandes películas que la gente adora de forma unánime? ¿las puntuaciones de este tipo de páginas siguen patrones particulares? ¿hay una correlación directa entre el número de espectadores y el número de votos de IMDb?

A continuación explico con gráficas interactivas la extensa investigación que he hecho al respecto  y podréis encontrar al final un resumen con las conclusiones a las que he llegado.



Las notas medias en IMDb

Como muchos sabréis IMDb es la base de datos sobre cine y televisión más importante de Internet. Con más de dos décadas de historia y 83 millones de usuarios registrados, la página posee multitud de información sobre más de 6 millones y medio de títulos, entre la que suele destacar la valoración media de los usuarios.

Aunque hay multitud de páginas de cine que permiten hacerse una idea de la opinión que tienen los espectadores y críticos sobre las películas, como por ejemplo Rotten Tomatoes, Metacritic, Filmaffinity o Letterboxd, la Internet Movie Database siempre se usa como referente pese a no estar libre de críticas. Hay análisis estadísticos que dudan de su precisión, gente que critica que sus resultados no son representativos debido a que un gran porcentaje de sus votantes son hombres entre 30 y 45 años o personas que analizan por qué sus valoraciones casi siempre se encuentran un punto por debajo de la nota media; sin embargo su importancia es incuestionable.

Un punto a favor que tiene IMDb es que permite descargarse gran parte de la información que tiene en sus servidores desde su propia página web. Sin embargo, dado que los archivos se actualizan cada día, no hay un registro que permita conocer como varían las valoraciones de las películas a lo largo del tiempo —o yo no he sido capaz de encontrarlo ni en librerías de machine learning—, por lo que he tenido que ingeniármelas para sacar esos valores.
Para ello he utilizado la web Archive.org que, como descubrí en Microsiervos, registra de forma periódica millones de páginas y las guarda en sus servidores para que no se las lleve el viento. De esta manera, introduciendo el enlace de IMDb de una película en concreto, se puede ver como ha ido variando su nota a lo largo tiempo. Pero sacar estos datos a mano llevaría mucho tiempo si quería hacer un análisis medianamente preciso, así que con ayuda de un amigo programé un par de archivos en javascript que me permitieron hacer web scraping y cuyo desarrollo explico en esta entrada del blog.

Para limitar el número de datos a analizar me centré en una serie de películas que agrupé en distintas temáticas —cine de Superhéroes, sagas, películas nominadas al Óscar, originales de Netflix y clásicos— y tuve en cuenta únicamente la información registrada en los últimos 10 años, ya que la Wayback Machine no siempre tiene suficiente registros en periodos anteriores al 2010. De igual manera solo he considerado las notas medias calculadas con al menos 1000 datos para que fueran los suficientemente representativas de la opinión de los espectadores.



El duelo de Marvel y DC

Empiezo este estudio con el cine de superhéroes porque la idea de todo esto me surgió al ver como a lo largo de esta última década, cuando se estrenaban algunas de estas películas, los fans hablaban maravillas durante los primeros días para que luego el público general las bajara de su pedestal con mayor o menor velocidad. Para quien no recuerde este tipo de comentarios os enlazo las primeras opiniones de Suicide Squad o la comparación de Avengers: Endgame con alguno de los grandes títulos del cine. Solo hay que ver tiempo después cuales son las valoraciones de los usuarios sobre la película de DC y el puesto que ocupa actualmente la producción de Marvel para ver que esos primeros textos pecaban de eufóricos (sobre todo en el primer caso).

Para comparar como cambian las notas de IMDb a lo largo del tiempo lo primero que hice fue representar la primera puntuación que tuvo cada película una vez que alcanzó las 1000 votaciones y la nota que tenía un año después. El tamaño de cada punto representa la diferencia que hay entre ambos valores, de manera que cuanto mayor es, mayor es la diferencia entre la primera nota y la última.

Al hacer esa representación se observa que la mayoría de las películas se encuentran por debajo de la diagonal, lo que indica que su nota disminuye con el tiempo. Sin embargo la película que más destaca es Capitana Marvel que, además de encontrarse por encima de la diagonal, es la película que tuvo la menor nota en su estreno, estando muy por debajo del resto (se ve claramente si pasáis a la segunda diapositiva).

Uno podría pensar que la película simplemente no gustó. Sin embargo, cuando se ve la nota un año después (diapositiva 3). se ve que la nota se encuentra en el mismo rango que el resto de las películas. ¿Y como puede ser eso? Pues uno de los principales motivos podría ser el comentado boicot que sufrió la cinta de Marvel debido al giro feminista que dio Disney a sus producciones de superhéroes con esta película.

Si volvemos a la primera diapositiva podemos observar que junto a la heroína rubia, la otra película que se encuentra por encima de la diagonal, y por tanto subió de nota en su primer año, fue Thor: Ragnarok. En un principio pensé que en este caso la anomalía podría deberse al cambio de rumbo que tomó la saga del rey del trueno en esa tercera parte respecto a sus antecesoras. Sin embargo, buscando en internet, me enteré de que por esas fechas Disney no había permitido a Los Angeles Times acudir a la premiere de la película debido a un artículo crítico con la compañía del ratón, lo que despertó las críticas del resto de medios de comunicación hacia la productora por socavar la libertad de prensa. Sea por una u otra razón estoy seguro que eso afectó a las primeras valoraciones de la película.

Además de estas dos películas, llaman la atención por su tamaño tres películas que se encuentran en el lado opuesto de la diagonal, lo que indicaría que son las películas más sobrevaloradas en sus inicios, y que corresponden a tres producciones de DC: Batman v. Superman: El amanecer de la JusticiaEscuadrón suicidaLiga de la Justicia. Esto podría indicar que las primeras personas que vieron la película eran grandes fans del universo DC e hincharon mucho la nota, y a medida que más gente las fue viendo se acabaron deshinchando. Este efecto solo se observa en una película de Marvel, Vengadores: La era de Ultrón.

Si quitamos las 6 películas que acabo de comentar se observa una clara tendencia en cómo disminuye la nota de IMDb en un año, y que guarda una relación que cumple la siguiente ecuación con un coeficiente de determinación R2 de 0.78:

IMDb_rating1-year = 0,7628xIMDb_ratinginitial + 1,1312



Por tanto, si Capitana Marvel no hubiese sufrido el boicot, en lugar de haber tenido una nota de 5.6 en su estreno habría tenido una valoración de los usuarios de 7.6 (±0.5). De igual manera Escuadrón Suicida, de haberse valorado con criterios más objetivos, en lugar de empezar su andadura comercial con un 9.0 habría tenido una nota de 6.6 (±0.5).

Estas tendencias anómalas se observan también cuando nos fijamos en cómo varían con el tiempo las notas de la películas normalizándolas respecto a la nota que tiene al final de año (esto es, restando a la nota de cada día la nota que tendrá a los 365 días). Para ello primero represento todas aquellas que presentan una tendencia similar (diapositiva 1), que son la gran mayoría, y posteriormente calculo una aproximación de cómo es esa tendencia (diapositiva 2).

Si comparo esa tendencia con las cuatro películas que estaban sobrevaloradas en su estreno (diapositiva 3) se observa que esas notas tan altas ajustan sus valores en apenas una semana, que es cuando más público va a verlas.

Esta comparación temporal también permite observar en la diapositiva 4, que además de la subestimación de Capitana Marvel y Thor 3, que ya destacaban en las primeras gráficas, también se observan pequeñas desviaciones en las primeras notas de Capitán América: Civil War y Spider-Man: Homecoming, pero sobre todo, una gran bajada en los primeros días del Black Panther.

Mirando las fechas a las que se corresponde ese periodo de bajada se observa que los primeros votos se produjeron el 30 de Enero del 2018, tras la premiere mundial en Los Ángeles, y la nota alcanzó su valle el 12 de Febrero del 2018, el día antes de su estreno mundial en varios países. En ese periodo votaron más de 10000 personas, cifra difícil de alcanzar sin haberse estrenado oficialmente. Para encontrar el motivo de estas cifrase solo hay que buscar en google para comprobar que, al igual que Capitana Marvel, el superhéroe de Wakanda pudo sufrir un boicot de tintes racistas o por parte de fans de DC.

Para terminar con este análisis sobre las películas de superhéroes he representado cómo varían el número de votos en IMDb a lo largo del tiempo. Para ello muestro únicamente 4 películas de forma representativa ya que casi todas presentan una tendencia similar.

Se puede ver en la gráfica superior que los primeros 90 días la mayoría de las películas siguen una función logística, algo que concuerda con la recaudación de las películas en la taquilla estadounidense esos meses (diapositiva 2). Intenté relacionar ambas variables mediante alguna constante que las relacionara, pero al tener únicamente los datos de recaudación diarios de Estados Unidos me resultó complicado vincular las cifras de taquilla con los datos de una página web que tiene usuarios de todo el mundo. Aún así, con películas que se estrenaron casi simultáneamente en todo el mundo como Infinity War o Liga de la Justicia, sí que fue posible relacionar ambos valores mediante una constante de un voto en IMDb por cada 2000$ conseguidos en la taquilla americana (gráfica inferior).

Si vamos más allá de esa franja temporal se observa que a partir de los 90 días las películas suelen tener otro repunte de votos (diapositiva 1), algo que se explica porque en muchos países las películas salen en DVD y streaming 3 meses después de su estreno en cine.

Además, si nos fijamos en Avengers: Infinity War se observa que, a pesar de que la curva se va aplanando (¿cuántas veces habremos escuchado esa expresión en tiempos de coronavirus?), al año tiene otro pequeño repunte, que coincide con el estreno de su secuela, Avengers: Endgame (diapositiva 2). Esto podría significar que cuando una secuela se estrena, repercute en las votaciones de las películas anteriores. Algo que explicaría que películas como ThorIron Man 2 y Capitán América en lugar de estancarse a largo plazo tengan un gran aumento a lo largo del tiempo (diapositiva 3), ya que se benefician de cómo ha ido creciendo el Universo Cinematográfico de Marvel a lo largo de la década.

Para comprobar esa teoría pasamos al siguiente apartado...



Cómo influyen las secuelas a las notas de IMDb

Para analizar cómo las secuelas influyen en las votaciones de IMDb y completar lo comentado en el apartado anterior he estudiado las notas de cuatro sagas importantes que se han hecho durante la última década: John Wick, Los juegos del hambre, El planeta de los simios y Cómo entrenar a tu dragón.

Como se puede ver en la gráfica de número de votos, la primera parte de John Wick no tuvo un gran número de votaciones durante sus primeros meses (hay que tener en cuenta que en España ni se estrenó en cines), sino que fue cuando llegó al mercado doméstico cuando realmente aumentó su popularidad. El interés creciente en la primera película creció cuando llegó su secuela a los cines y posteriormente hubo un repunte de las dos primeras al estrenarse la tercera. Esto en cuanto al número de votos, ¿pero y la puntuación? Pues al igual que sucedía con las películas de superhéroes la nota de la primera película fue disminuyendo con el tiempo durante el primer año, sin embargo cuando se estrenan las secuelas y llega a más público su valoración mejoró, algo poco habitual que podría asociarse a una película de culto que va ganando fama con el tiempo.

En el caso de Cómo entrenar a tu dragón el aumento de votos de la película que inicia la saga no se ha estancado en una década, siendo su popularidad creciente año a año (diapositiva 1), y su valoración apenas ha variado en todo ese tiempo, mientras que sus secuelas siguen las mismas tendencias que hemos venido observando hasta ahora (diapositiva 2).

La nueva trilogía de El planeta de los simios presenta el típico aumento en el número de votos en IMDb cuando se estrena una secuela (diapositiva 1) y un menor estancamiento en la primera parte de la saga (diapositiva 2), pero mucho menos marcado que en las dos sagas vistas anteriormente o en las primeras películas de Marvel. La nota que otorgan los usuarios a la primera película de la saga permanece bastante constante a lo largo del tiempo (diapositiva 3), pero la ausencia de datos durante los primeros días en salas no permite sacar resultados concluyentes en ese aspecto. Aún así no parece que afecte el estreno de las secuelas a la valoración del El origen del planeta de los simios (diapositiva 3).

En cuanto a la saga protagonizada por Jennifer Lawrence todas las películas presentan una tendencia prácticamente similar en cuanto al incremento de votos notándose muy poco el efecto de las secuelas (diapositiva 1), seguramente porque todas fueron exitosas en taquilla. Aún así la primera película se estanca ligeramente menos que el resto (diapositiva 2). El cuanto a la nota de IMDb la disminución a lo largo del tiempo de todas ellas son prácticamente idénticas (diapositiva 3) y coincide con la curva ya estimada en el cine de superhéroes (diapositiva 4).

Por tanto se confirma que contra más secuelas se producen más gente se anima a darle una oportunidad a la película que inicia cada saga, aunque esa tendencia no siempre sea tan marcada como en las películas del Universo de Marvel o Cómo entrenar a tu dragón. En cuanto a la nota media, la primera película también suele sufrir menos desgaste con el tiempo e incluso subir ligeramente de nota, pero en este caso no se muestran resultandos tan concluyentes.



Las votaciones de IMDb en los Óscars

Hasta ahora nos hemos enfocado en el cine más comercial de Hollywood, ¿pero se comportarán igual las notas de las películas nominadas a los Óscars? Pasemos a analizar algunas de ellas.

Empezamos con las que fueron las dos grandes competidoras de la gala de los Óscars del 2017: La la land y Moonlight. La primera tuvo su primera valoración en IMDb al día siguiente de presentarse en el Festival de Venecia (31 agosto) pero no alcanzó los 1000 votos hasta el 13 de Octubre. Por otro lado Moonlight tuvo su primera nota poco después de presentarse en el festival de Toronto (10 de septiembre) pero no llegó a los 1000 votos con los que empezamos a considerar una nota representativa hasta finales de Octubre. 

En la gráfica de la diapositiva 1 se observa que Moolight recibió muy pocos votos durante sus primeros días en pantalla, algo habitual en las películas independientes, pero desde que la película ganó el Globo de Oro a mejor drama sus valoraciones crecieron considerablemente. Un incremento de tal calibre casi un mes y medio después de su estreno es un buen indicador de la importancia que tienen estos premios para las películas pequeñas. Por otro lado La la land no notó tanto el efecto de los Globos de Oro ya que por aquellas fechas ya era un éxito de taquilla.

En cuanto a la valoración de las películas (diapositiva 2) se observa que Moonlight se mantuvo constante mientras tuvo pocas votaciones pero se hundió cuando ganó en los Globos de Oro. Algo comprensible ya que no es una propuesta pensada para al gran público y cuando más gente empezó a interesarse por ella no la valoró tan positivamente. La La Land sin embargo, pese a tener en todo momento más espectadores que Moonlight, mantuvo su nota mucho más estable durante todo el año y solo estuvo peor valorada que su competidora antes de que estrenara en cines en Estados Unidos. 

Otra competición reñida estos últimos años fue la que enfrentó a Green Book con Roma. En este caso se observa que Green Book tampoco tuvo una gran cantidad de votaciones en sus primeras semanas, y su premio en los Globos de Oro tampoco significó un aumento tan considerable en el número de votos como Moonlight. Un mayor aumento se empezó a notar a finales de enero, que fue cuando se anunciaron las nominaciones de los Óscars, pero lo que seguramente influyó más es que es cuando se estrenó en casi toda Europa. Aunque cuando no se realizan estrenos simultáneos en todo el mundo resulta más difícil interpretar el número de votos es difícil no darse cuenta que el mayor incremento en el número de votaciones se alcanzó en fechas cercanas a la ceremonia de los Óscars.

Roma, por otro lado, al estrenarse directamente en Netflix y no ganar el Globo de Oro a mejor drama tuvo un crecimiento prácticamente constante durante toda la temporada de premios, pero al perder el Óscar en la mejor película sus votaciones se estancaron casi de golpe.  

En cuanto a las notas de ambas películas se observa que la película protagonizada por Viggo Mortensen y Mahershala Ali tuvo un comportamiento que no habíamos visto hasta ahora, y es que fue aumentando día a día hasta que se anunciaron los Globos de Oro, momento en el que alcanzó una nota que apenas ha disminuido con el tiempo a pesar de llegar a una gran cantidad de público. Sin duda esto es debido a que los críticos, que son las primeras personas que votan, no la valoraron lo suficientemente alto, sin embargo el público la aupó con sus votaciones. 

Roma presenta la tendencia inversa, y al igual que le pasó a Moonlight, empezó con una nota alta, y a medida que más gente se animó a verla su nota disminuyó considerablemente. Sin embargo una ganó y la otra no, por lo que no parece fácil encontrar una relación entre las tendencias en las notas y su probabilidad de ganar el premio aunque seguramente habría que hacer un análisis más completo de todos los años disponibles. 

Lo que si se puede observar es que tanto estas cuatro películas como otras películas nominadas a los Óscars (Ladybird, The Artist y Spotlight), si consideramos como primera nota válida la que tiene al menos 1000 votos (diapositiva 1), las votaciones normalizadas no presentan una tendencia clara, pero sí que observa que tienen un periodo inicial en el que su nota asciende, que suele corresponde al periodo en el que las películas se proyectan en Festivales. Sin embargo, si se considera como fecha inicial la fecha en la que el público mayoritario puede verlas en salas (diapositiva 2), entonces las puntuaciones presentan un descenso en la nota ligeramente inferior a la media que presentaban las superproduciones antes vistas, con la excepción de Moonlight, que tiene un descenso más acusado, y de Green Book, que apenas disminuye su nota con el tiempo.



Netflix y las notas de IMDb

Una de las cosas que me ha llamado la atención de las películas de los Óscars ha sido ver que el número de votos de Roma no aumentan de forma logística sino que son prácticamente lineales. Para comprobar si era una anomalía de la película de Cuarón o una tendencia generalizada de Netflix he representado el número de votos de algunas de las producciones más populares de Netflix durante la década pasada.

En la diapositiva 1 se puede ver que aquellas producciones que tienen espíritu de blockbuster son las que presentan una curva más similar a las superproducciones estrenadas en cine, mientras que el resto de películas no tienen un crecimiento inicial tan marcado ni se estancan tan rápidamente. Esta gráfica también permite comparar el número de visionados que tiene cada película, algo interesante porque Netflix rara vez información sobre el número de visionado de sus películas.

Así, se constata que A ciegas es con diferencia su película más exitosa seguida a bastante distancia por Bright. Después le siguen Roma y La balada de Buster Scruggs, lo que es un buen indicador de la importancia de los directores de renombre para promocionar las películas de la plataforma de streaming. De hecho, si las comparamos con las curvas de películas de las que disponemos datos de taquilla (diapositiva 2), las películas de Cuarón y los Coen tuvieron cifras similares de votos que La guerra del planeta de los Simios y Thor en los tres primeros meses. Por contra, entre sus producciones menos vistas se encuentra su primera producción original, —la estupenda Beast of No Nation—, El juego de Gerard y Okja.

Pero resulta que lo más interesante de la información que proporciona la evolución de las notas de IMDb no es el número de visionados de Netflix, sino lo poco que varían sus notas a lo largo del tiempo comparada con todas las películas vistas anteriormente. Posiblemente sea debido a que al cine suele acudir la gente dispuesta a pagar por una historia que realmente le interesa, siendo por ello las primeras notas más altas, mientras que en Netflix todo el público puede acceder desde el principio a los estrenos sin pagar más dinero que el de la suscripción, por lo que los espectadores están mas equilibrados entre los apasionados por un tipo de en concreto película y el público más casual, que es el que accede más tarde a las películas estrenadas en cine y que reduce su nota.



¿Cambian las notas de los clásicos en IMDb?

Hasta ahora me he centrado sobre todo en analizar cambios en los datos de IMDb a lo largo del  primer año porque es el periodo en el que la nota cambia más. Sin embargo, al ver el considerable aumento de votos de la película Contagio tras declararse la pandemia quería comprobar como cambiaban los datos de varias películas clásicas de las últimas décadas que podían modificar su nota debido a nuevos estrenos sucedidos durante la última década.

El primero de los clásicos que he analizado es El rey de la comedia, el clásico de Scorsese que ha estado en boca de todos los cinéfilos al hablar del Joker de Joaquin Phoenix. Como se puede ver en la diapositiva 1, desde que ese estrenó en el Festival de Venecia y se empezó a comparar con la película protagonizada por Robert de Niro el número de votos aumentó considerablemente. Aún así la nota media apenas aumentó una décima, moviéndose en el rango en el que se ha movido durante toda la década.

Me he decantado por un título de culto como Blade Runner para analizar cómo ha cambiado su nota tras el estreno de su tardía secuela en 2017. En este caso también se observa un repunte en el número de votaciones (diapositiva 1), pero eso no afectó a la valoración de la película (diapositiva 2).

Y para terminar una de las películas más famosas de Spielberg, Jurassic Park, que ya conoce 4 secuelas, dos de las cuales se estrenaron estos últimos años. En este caso el repunte de votos es muy pequeño (diapositiva 1), algo lógico teniendo en cuenta que es una de las películas más populares de la historia. Sin embargo, la valoración entre los usuarios ha ido creciendo los últimos años, coincidiendo su último aumento de nota cuando se estrenó Jurassic World. Es de las pocas películas que han aumentado más de 3 décimas en 10 años, cuando la tendencia suele ser disminuir, y además hay que tener en cuenta que en octubre del 2003, que es la primera fecha registrada en archive.org, la nota era de 7.3, por lo que la película ha aumentado 8 décimas en los últimos tres lustros. Todo un logro.

Por tanto, pese a la anomalía de la película de Spielberg parece observarse que aunque ciertos acontecimientos aumenten considerablemente el número de votos en IMDb las notas de las películas rara vez varían más allá de ±0.2 pasado el primer año desde su estreno, aún así sería necesario realizar un análisis más completo para confirmarlo con rotundidad.



Conclusiones

A continuación resumo brevemente las conclusiones a las que he ido llegando a lo largo de este estudio: 
  • La disminución de la nota en las superproducciones de Hollywood sigue una distribución exponencial negativa fácilmente parametizable
  • La evolución de las notas permite detectar boicots a ciertas películas
  • Las anomalías en las primeras votaciones suelen ajustarse en menos de dos semanas, independientemente del número de votos
  • Cuando se estrena una película de forma simultánea en todo el mundo parece observarse una relación entre la recaudación en Estados Unidos y el número de votos en IMDb
  • El número de votos suele presentar una función logística que presenta un repunte a los 3 meses, cuando se estrena en DVD o streaming
  • La función logística de una película no se aplana si se estrenan secuelas o remakes
  • No parece observarse una relación entre la evolución de las notas en IMDb y las probabilidades de ganar un Óscar
  • Las valoraciones de las películas nominadas a los Óscars suelen tener más altibajos que las superproducciones de Hollywood, posiblemente debido a su paso por festivales antes de estrenarse y al aumento de número de votos al tener más visibilidad por los premios
  • Las películas de Netflix (e intuyo que de todas las películas de streaming) no tienen un crecimiento inicial tan marcado ni se estancan tan rápidamente
  • Con las votaciones de IMDb se podría comprobar cómo de exitosas son las películas de las plataformas de streaming sin depender de los pocos y dudosos datos que da la compañía
  • Las notas de las películas de Netflix en IMDb no disminuyen tanto con el tiempo como las estrenadas en cine, seguramente porque todo tipo de público tiene acceso a ellas al mismo tiempo
  • La puntuación de las películas varían considerablemente a lo largo de su primer año, a partir de entonces apenas se modifican dentro de un rango ±0.2


Con esto doy por terminado este análisis y continuaré las siguientes semanas con mi especial dedicado al cine de la década. Espero que os haya resultado interesante y cualquier comentario o sugerencia sobre el análisis será bienvenido.