Acabo de encontrar este gran análisis que es interesante y hermoso visualmente:
http://www.nytimes.com/interactive/2012/11/02/us/politics/paths-to-the-white-house.html
Tengo curiosidad por saber cómo se puede construir un "árbol de ruta" con R. ¿Qué datos y algoritmos se necesitan para construir un árbol de ruta?
Gracias.
r
data-visualization
politics
Tal Galili
fuente
fuente
Respuestas:
Es natural usar una solución recursiva.
Los datos deben consistir en una lista de los estados en juego, sus votos electorales y la presunta ventaja inicial para el candidato de la izquierda ("azul"). (Un valor de se acerca a la reproducción del gráfico del NY Times). En cada paso, se examinan las dos posibilidades (la izquierda gana o pierde); la ventaja se actualiza; si en ese momento se puede determinar el resultado (victoria, derrota o empate), en base a los votos restantes, entonces el cálculo se detiene; de lo contrario, se repite recursivamente para los estados restantes en la lista. Así:47
Esto poda efectivamente el árbol en cada nodo, lo que requiere mucho menos cómputo que explorar todos los resultados posibles. El resto es solo un detalle gráfico, por lo que analizaré solo aquellas partes del algoritmo que son esenciales para una visualización efectiva.29=512
El programa completo sigue. Está escrito de manera moderadamente flexible para permitir al usuario ajustar muchos de los parámetros. La parte crucial del algoritmo gráfico es el diseño del árbol. Para hacer esto,1/512
plot.path
utiliza unwidth
campo para asignar proporcionalmente el espacio horizontal restante a los dos descendientes de cada nodo. Este campo se calcula inicialmentepaths.compute
como el número total de hojas (descendientes) debajo de cada nodo. (Si no se realiza algún cálculo de este tipo, y el árbol binario simplemente se divide por la mitad en cada nodo, entonces, en el noveno estado, solo hay del ancho total disponible para cada hoja, que es demasiado angosto. Cualquiera que ha comenzado a dibujar un árbol binario en papel, ¡pronto experimentó este problema!)Las posiciones verticales de los nodos están dispuestas en una serie geométrica (con una relación común
a
) para que el espacio se acerque en las partes más profundas del árbol. Los grosores de las ramas y los tamaños de los símbolos de las hojas también se escalan por profundidad. (Esto causará problemas con los símbolos circulares en las hojas, porque sus relaciones de aspecto cambiarán según lasa
variaciones. No me he molestado en arreglar eso).fuente
partitions
paquete que podría haber proporcionado una estructura para enumerar las posibilidades.