488.1. La posición de un nodo y la consecuencia de actuar

Una medida de centralidad resume una propiedad de la posición que ocupa un nodo en una red, mientras que una decisión de intervención compara las consecuencias de varias acciones posibles. Pasar de lo primero a lo segundo exige un modelo que conecte estructura, dinámica y acción, y además un criterio para valorar el resultado. Un nodo puede tener muchas conexiones y ser difícil de modificar; otro puede tener pocas y sostener una dinámica persistente que prolonga cualquier cambio que se le imponga. Por eso la conveniencia de intervenir no puede leerse directamente en un índice topológico.

Bajo la palabra «central» conviven medidas distintas. El grado cuenta conexiones, la fuerza suma sus pesos y otras medidas dependen de los caminos que atraviesan el nodo o de la importancia de sus vecinos. Dos índices pueden ordenar los mismos nodos de manera diferente precisamente porque responden a propiedades diferentes, y elegir uno obliga a justificar qué representa en el sistema estudiado. Una red de transporte y una red de correlaciones entre variables psicológicas admiten el mismo cálculo de grado, pero el número resultante no significa lo mismo en ambas.

Bringmann y colaboradores (2019) examinaron este problema en las redes psicológicas a propósito del grado, la intermediación y la cercanía. Señalan que en esas redes las aristas no son datos observados, sino parámetros estimados con un modelo estadístico, habitualmente correlaciones parciales en datos transversales o modelos vectoriales autorregresivos en datos longitudinales intensivos. Los índices, desarrollados para redes sociales, presuponen procesos como un flujo que recorre caminos más cortos, supuesto que no siempre corresponde a una teoría sobre cómo se relacionan las variables psicológicas. Los autores juzgan la intermediación y la cercanía especialmente inadecuadas en ese contexto y llegan a considerar el abandono del concepto de centralidad nodal como una de las salidas posibles. Su análisis no declara inútil toda medida de red, pero exige explicitar los supuestos de la medida elegida y comprobar que corresponden al proceso estudiado.

El seminario construirá una red dinámica conocida y comparará acciones bajo restricciones explícitas. Los cálculos son sintéticos y no constituyen recomendaciones clínicas. Conocer el generador permite que ninguna discrepancia se confunda con incertidumbre causal. Más adelante se introducirá incertidumbre en un parámetro, lo que permitirá identificar qué información falta cuando un ranking topológico sustituye a una comparación entre intervenciones.

488.2. Una red pequeña con persistencia desigual

Se consideran cinco variables que representan desviaciones respecto de un estado de referencia y que evolucionan según una dinámica lineal y estable. La primera influye directamente en otras tres; la quinta influye solo en la cuarta. Las cuatro primeras conservan una quinta parte de su desviación de un paso al siguiente, mientras que la quinta conserva cuatro quintas partes. Los coeficientes son supuestos del ejercicio, y las variables no representan síntomas ni puntajes de un instrumento clínico.

xt+1=Axt,A=(0.200000.30.20000.300.2000.3000.20.600000.8).x_{t+1}=Ax_t,\qquad A=\begin{pmatrix} 0.2&0&0&0&0\\ 0.3&0.2&0&0&0\\ 0.3&0&0.2&0&0\\ 0.3&0&0&0.2&0.6\\ 0&0&0&0&0.8 \end{pmatrix}.

Cada columna contiene los efectos de una variable sobre las filas de destino. La primera columna indica, por ejemplo, que la variable 1 transmite 0,3 de su desviación a cada una de las variables 2, 3 y 4 en el paso siguiente. Excluida la persistencia propia, el primer nodo tiene tres conexiones salientes y fuerza saliente 0,9; el quinto tiene una sola conexión saliente, de peso 0,6, y los nodos 2, 3 y 4 no tienen ninguna. Con cualquiera de esos criterios de salida, el primero ocupa la posición más conectada. La observación es exacta para esta matriz, aunque describe la estructura y todavía no compara respuestas a intervenciones.

La estabilidad se comprueba mediante los valores propios. Si las variables se reordenan como 1, 5, 2, 3, 4, toda influencia va de una variable anterior a otra posterior y la matriz queda triangular inferior. Sus valores propios son entonces los elementos diagonales, es decir, 0,2 con multiplicidad cuatro y 0,8, todos de módulo menor que uno, de manera que cualquier perturbación termina por decaer. La duración y la propagación de esa perturbación dependen, sin embargo, de la columna en que se inicia. La persistencia de la quinta variable permite que una acción sobre ella tenga consecuencias acumuladas grandes aunque su conectividad inmediata sea menor. La multiplicidad del valor 0,2 parece un detalle técnico, pero reaparecerá en la sección 488.7, cuando se estudie cuántas entradas hacen falta para controlar esta red.

488.3. Definir el beneficio antes de calcularlo

Se aplica un pulso que reduce una variable en el instante inicial y luego se deja evolucionar el sistema sin nuevas acciones. El resultado de interés es la reducción acumulada de la suma de las cinco desviaciones a lo largo de todo el horizonte. Las cinco variables reciben el mismo peso para simplificar el cálculo, elección que no pretende representar una valoración universal. Si algunas importaran más, o si el horizonte fuera corto, la comparación podría cambiar.

Δx0=−gjej,Bj=−∑t=0∞1TΔxt=gj1T(I−A)−1ej.\Delta x_0=-g_j e_j,\qquad B_j=-\sum_{t=0}^{\infty}\mathbf 1^T\Delta x_t =g_j\mathbf 1^T(I-A)^{-1}e_j.

La expresión cerrada se obtiene sumando la serie geométrica matricial ∑tAt=(I−A)−1\sum_t A^t=(I-A)^{-1}, que converge porque el radio espectral de AA es menor que uno. El factor gjg_j, que aquí se llamará modificabilidad, indica cuánto cambia realmente el estado con la acción considerada y no tiene por qué ser igual en todos los nodos. Como se suman desviaciones de instantes sucesivos, el beneficio se mide en desviación multiplicada por pasos de tiempo, y el costo, en una unidad de recurso definida aparte. Si la misma inversa se usara para el nivel estacionario que produce una entrada sostenida uu, la expresión (I−A)−1u(I-A)^{-1}u tendría unidades de desviación, pese a la semejanza algebraica.

Primero se calcula la respuesta a un pulso unitario idéntico en todos los nodos. El primer nodo produce una reducción acumulada de 2,65625 unidades, que en aritmética exacta es 85/32, y el quinto produce 8,75. Cada uno de los nodos 2, 3 y 4 produce 1,25, que es simplemente 1/(1−0,2)1/(1-0{,}2), porque su desviación solo decae sin propagarse. La quinta variable contribuye directamente durante más tiempo, ya que decae con factor 0,8, y transmite parte de esa persistencia a la cuarta. Contar conexiones inmediatas no recoge esta propagación temporal.

import numpy as np
A = np.diag([.2,.2,.2,.2,.8])
A[1,0] = A[2,0] = A[3,0] = .3
A[3,4] = .6
assert max(abs(np.linalg.eigvals(A))) < 1
R = np.linalg.inv(np.eye(5)-A)
unit_benefit = np.ones(5)@R
assert np.allclose(unit_benefit,[2.65625,1.25,1.25,1.25,8.75])
print("Beneficios de pulsos unitarios:",unit_benefit)

El cálculo usa una matriz causal conocida por construcción. Si procediera de correlaciones parciales, no sería legítimo darle automáticamente la misma interpretación interventiva; habría que justificar que sus coeficientes representan la respuesta del sistema a las operaciones consideradas. Una red temporal estimada tampoco garantiza esa identificación sin supuestos sobre variables omitidas, medición y entradas externas.

488.4. Incorporar modificabilidad y costo

Las acciones disponibles producen cambios iniciales distintos. Se supone que las magnitudes logradas son 1; 0,6; 1; 1 y 0,2 para los nodos 1 a 5, que actuar sobre el primero cuesta cuatro unidades de recurso y que cada una de las demás acciones cuesta una. Estas cantidades también son sintéticas. Su función es mostrar cómo cambia la comparación cuando se evalúan acciones realizables en lugar de perturbaciones abstractas idénticas sobre todas las variables.

NodoGrado saliente sin autorrelaciónCambio inicial logradoCostoBeneficio acumuladoBeneficio por costo
131,042,656250,6640625
200,610,750,75
301,011,251,25
401,011,251,25
510,211,751,75

Con estos supuestos, el quinto nodo ofrece el mayor beneficio por unidad de costo. El primero, pese a ser el más conectado, queda incluso por debajo del segundo, que no tiene conexiones salientes, y lo que lo relega es su costo. La tabla muestra también la situación inversa: en beneficio acumulado sin dividir por el costo, el primer nodo ocupa el primer lugar, con 2,65625 frente a 1,75 del quinto, de modo que si solo puede ejecutarse una acción y el presupuesto alcanza para cualquiera, el nodo más conectado es la mejor elección. La centralidad y el beneficio pueden coincidir, pero la coincidencia depende de condiciones que el índice no contiene, como el costo, la modificabilidad y la regla de decisión.

g = np.array([1.,.6,1.,1.,.2])
cost = np.array([4.,1.,1.,1.,1.])
benefit = g*unit_benefit
ratio = benefit/cost
assert np.allclose(benefit,[2.65625,.75,1.25,1.25,1.75])
assert np.argmax(ratio) == 4    # mejor razón: nodo 5
assert np.argmax(benefit) == 0  # mayor beneficio total: nodo 1
print("Beneficios realizados:",benefit)
print("Beneficios por costo:",ratio)

La razón entre beneficio y costo es apropiada para algunas decisiones y no para otras. El caso recién descrito, con una sola acción y presupuesto holgado, pide maximizar el beneficio total. Si las acciones fueran divisibles y sus efectos lineales, la razón orientaría la asignación marginal de recursos. Con costos fijos, interacciones o umbrales el problema cambia de naturaleza. El criterio debe corresponder a la decisión real y no escogerse porque produce una clasificación conveniente.

488.4.1. Comparar carteras de acciones bajo un presupuesto

Si el presupuesto permite varias acciones, la decisión debe comparar conjuntos factibles. En la red lineal construida, las respuestas a pulsos simultáneos se suman. Con un presupuesto de cuatro unidades y la posibilidad de aplicar cada acción una sola vez, puede elegirse la acción sobre el primer nodo o combinar las cuatro restantes. La combinación produce cinco unidades de beneficio acumulado, frente a 2,65625 de la acción aislada. El resultado se apoya tanto en la aditividad del modelo como en la ausencia de otras restricciones compartidas.

from itertools import product
options = []
for mask in product([0,1],repeat=5):
    mask = np.array(mask)
    total_cost = mask@cost
    if total_cost <= 4:
        options.append((float(mask@benefit),tuple(mask.tolist()),float(total_cost)))
best = max(options,key=lambda item:item[0])
assert best == (5.0,(0,1,1,1,1),4.0)
print("Cartera óptima en el ejemplo lineal:",best)

La enumeración recorre los 32 subconjuntos posibles y verifica la decisión sin recurrir a un algoritmo opaco. En redes mayores hará falta un método más eficiente, aunque el problema conserva su significado: comparar el beneficio de acciones admisibles bajo una restricción de recursos. Aquí, elegir acciones por orden de beneficio por costo hasta agotar el presupuesto conduce a la misma cartera, pero esa coincidencia no está garantizada con costos fijos o acciones indivisibles de costos dispares, y la decisión debe comprobarse sobre conjuntos.

La suma de efectos es válida porque las acciones solo modifican el estado inicial y la dinámica es lineal. Si una acción alterara la eficacia de otra, o si existiera un límite de mejora con rendimientos decrecientes, los beneficios individuales dejarían de sumarse, y un análisis cuidadoso podría concluir que faltan datos sobre combinaciones antes de recomendar su ejecución conjunta.

Fuera del modelo lineal aparece otro riesgo. Si el beneficio crece con la intensidad de la acción con rendimiento marginal decreciente y el costo es proporcional a esa intensidad, el cociente entre beneficio y costo es mayor cuanto menor es la dosis. Una dosis casi nula puede tener la mejor razón sin producir ninguna mejoría apreciable. El problema necesita entonces una restricción sobre el resultado mínimo aceptable o una función de utilidad que valore la magnitud total, y los objetivos deben formularse antes de leer un cociente como recomendación.

488.5. El horizonte puede invertir la preferencia

La suma infinita favorece las consecuencias persistentes. Si solo interesan los tres primeros instantes, t=0,1,2t=0,1,2, el beneficio se calcula con la suma de la identidad, la matriz y su cuadrado. En ese horizonte la acción sobre la quinta variable todavía no ha desplegado buena parte de su efecto, y su beneficio por costo baja a 0,728. Los nodos tercero y cuarto, con 1,24, pasan al primer lugar, seguidos del segundo (0,744), el quinto y el primero (0,625). La topología no ha cambiado; lo que cambió fue la pregunta temporal, y una recomendación necesita indicar durante cuánto tiempo se evalúan las consecuencias.

Bj(T)=gj1T(∑t=0TAt)ej.B_j^{(T)}=g_j\mathbf1^T\left(\sum_{t=0}^{T}A^t\right)e_j.
short_R = np.eye(5)+A+A@A
short_benefit = g*(np.ones(5)@short_R)
short_ratio = short_benefit/cost
assert np.allclose(short_benefit,[2.5,.744,1.24,1.24,.728])
assert short_ratio[2] > short_ratio[4]
print("Beneficio hasta el instante dos:",short_benefit)
print("Beneficio por costo hasta el instante dos:",short_ratio)

La elección del horizonte puede responder a restricciones reales, como una fecha límite, o a una preferencia por resultados próximos, y debe distinguirse de un truncamiento computacional. Cortar la simulación pronto por comodidad y presentar el resultado como beneficio total introduce un sesgo contra los efectos lentos.

El descuento temporal ofrece otra manera de valorar las consecuencias futuras. Si el peso de cada paso es el del anterior multiplicado por un factor β\beta comprendido entre 0 y 1, la suma descontada es ∑tβtAt=(I−βA)−1\sum_t\beta^tA^t=(I-\beta A)^{-1}, que converge mientras el producto de β\beta por el radio espectral sea menor que uno. En la red del ejemplo, la acción sobre el quinto nodo conserva la ventaja con β=0,95\beta=0{,}95 y la pierde con β=0,9\beta=0{,}9. El umbral exacto se obtiene igualando su beneficio por costo con el del tercer nodo:

B5(β)/c5B3(β)/c3=0.2 (1+0.4β)1−0.8β=1⟺β=1011≈0.909.\frac{B_5^{(\beta)}/c_5}{B_3^{(\beta)}/c_3}=\frac{0.2\,(1+0.4\beta)}{1-0.8\beta}=1 \quad\Longleftrightarrow\quad \beta=\frac{10}{11}\approx 0.909 .

Para β=1\beta=1 el cociente vale 1,4, que es la razón entre 1,75 y 1,25 de la tabla anterior. Basta, por tanto, un descuento cercano al nueve por ciento por paso para invertir la preferencia, sin que haya fecha límite alguna.

def discounted_ratio(beta):
    Rb = np.linalg.inv(np.eye(5)-beta*A)
    return g*(np.ones(5)@Rb)/cost
for beta in [1.,.95,.9,.8]:
    print("Factor de descuento y beneficio por costo:",beta,discounted_ratio(beta).round(4))
assert discounted_ratio(.95)[4] > discounted_ratio(.95)[2]
assert discounted_ratio(.9)[4] < discounted_ratio(.9)[2]
assert np.isclose(discounted_ratio(10/11)[4],discounted_ratio(10/11)[2])

La tasa de descuento no se deduce de la conectividad ni de la estabilidad del sistema; debe justificarse según el uso del análisis, y su influencia sobre la decisión tiene que examinarse.

488.6. Incertidumbre sobre la persistencia

La ventaja de actuar sobre el quinto nodo depende de su persistencia. Supóngase que ese coeficiente, a5a_5, no se conoce con precisión y puede estar entre 0,2 y 0,8, mientras el resto de la matriz, los costos y la modificabilidad se mantienen. El beneficio por costo de esa acción recorre entonces valores entre 0,4375 y 1,75, en tanto que las acciones sobre los nodos tercero y cuarto conservan su valor de 1,25. El intervalo incluye, por tanto, escenarios con preferencias opuestas.

B5c5=0.21−a5(1+0.60.8)=0.351−a5.\frac{B_5}{c_5}=\frac{0.2}{1-a_5}\left(1+\frac{0.6}{0.8}\right) =\frac{0.35}{1-a_5}.

En esta expresión, el factor 1/(1−a5)1/(1-a_5) es la desviación acumulada que el quinto nodo conserva en sí mismo, y el término 0,6/0,80{,}6/0{,}8 corresponde a la fracción que transmite a la cuarta variable, que a su vez decae con factor 0,2. La acción sobre el quinto nodo supera a las de los nodos tercero y cuarto cuando la persistencia excede 0,72, valor que resulta de resolver 0,35/(1−a5)=1,250{,}35/(1-a_5)=1{,}25. Este umbral localiza la incertidumbre que importa para decidir. Afinar mucho la estimación de un coeficiente que no altera la preferencia aporta menos a la decisión que establecer de qué lado del umbral se encuentra el sistema, y la prioridad de investigación depende de la sensibilidad de la decisión además de la incertidumbre estadística de cada parámetro.

values = np.linspace(.2,.8,61)
scores = []
for persistence in values:
    candidate = A.copy()
    candidate[4,4] = persistence
    response = np.ones(5)@np.linalg.inv(np.eye(5)-candidate)
    scores.append(g*response/cost)
scores = np.asarray(scores)
assert np.isclose(scores[0,4],.4375)
assert np.isclose(scores[-1,4],1.75)
assert np.isclose(.35/(1-.72),1.25)
worst_scores = scores.min(axis=0)
regret = scores.max(axis=1,keepdims=True)-scores
worst_regret = regret.max(axis=0)
assert np.isclose(worst_scores[2],1.25)
assert np.isclose(worst_regret[2],.5)
assert np.isclose(worst_regret[4],.8125)
print("Peor beneficio por costo:",worst_scores)
print("Máximo arrepentimiento entre acciones puras:",worst_regret)

Si se comparan solo acciones puras y se busca el mayor beneficio garantizado en todo el intervalo (criterio maximín), los nodos tercero o cuarto son preferibles, con un mínimo de 1,25 frente a 0,4375 del quinto. También minimizan el arrepentimiento máximo, es decir, la mayor pérdida respecto de la mejor acción de cada escenario, que vale 0,5 para ellos y 0,8125 para el quinto. Como el beneficio del quinto nodo crece de forma monótona con a5a_5, los extremos de la grilla de 61 valores coinciden con los del intervalo continuo. Son decisiones robustas respecto del conjunto especificado y no recomendaciones universales; ampliar el rango, permitir combinaciones o asignar probabilidades a los escenarios puede modificar la solución.

Una distribución de probabilidad sobre la persistencia permitiría comparar beneficios esperados, pero no debe inventarse para obtener una decisión más cómoda. Si hay evidencia para estimarla, puede usarse con un análisis de sensibilidad; si solo se conoce un intervalo, el análisis por escenarios conserva esa información parcial sin añadirle precisión ficticia. El informe debería mostrar qué acciones convienen bajo qué condiciones y cuánto se pierde al elegir una alternativa robusta.

488.7. Controlabilidad y beneficio responden a problemas distintos

La controlabilidad pregunta, dentro de un modelo determinado, si las entradas disponibles permiten llevar el estado desde cualquier punto inicial hasta cualquier destino. El beneficio de un pulso pregunta cuánto mejora una función de resultado con una acción concreta. Un sistema puede ser controlable y requerir señales enormes para alcanzar ciertos destinos, y otro puede no ser completamente controlable y permitir, aun así, una mejora útil en el resultado que interesa. Confundir ambas preguntas lleva a recomendaciones que no corresponden a la tarea.

Liu, Slotine y Barabási (2011) desarrollaron herramientas para estudiar la controlabilidad estructural de redes dirigidas e identificar el conjunto mínimo de nodos impulsores (driver nodes), que deben recibir señales externas para guiar toda la dinámica. Según el resumen del artículo, el número de esos nodos depende sobre todo de la distribución de grados, y los nodos impulsores tienden a evitar los de grado alto. Cowan y colaboradores (2012) objetaron que ese modelo trata cada nodo como un integrador puro, sin dinámica propia salvo que se le asigne un autolazo. Con una dinámica propia de primer orden en cada nodo, concluyen que prácticamente cualquier red real es estructuralmente controlable con una sola señal de entrada, y sostienen que la pregunta práctica es si el sistema resulta casi incontrolable. Ninguno de estos trabajos ofrece resultados clínicos, y lo que sigue son derivaciones propias.

La red de la sección 488.2, cuyos nodos tienen todos persistencia propia, muestra que estas conclusiones dependen de supuestos distintos. Con una entrada en un solo nodo, la matriz de controlabilidad alcanza como máximo rango dos, y ninguna combinación de dos entradas basta. Hacen falta tres, y en las combinaciones mínimas de entradas sobre nodos individuales aparecen siempre los nodos 1 y 5, acompañados del 2 o del 3. Yuan y colaboradores (2013) demostraron que, para una matriz con pesos dados, el número mínimo de entradas independientes es la mayor multiplicidad geométrica entre sus valores propios; lo formularon en tiempo continuo, pero la condición de rango es la misma en tiempo discreto. Aquí el valor propio 0,2 tiene multiplicidad geométrica tres, en parte porque los nodos 2 y 3 son copias exactas: reciben la misma influencia del nodo 1, tienen la misma persistencia y no influyen en ningún otro, de modo que ninguna señal que llegue a través del nodo 1 puede moverlos por separado. Con coeficientes genéricos y el mismo patrón de conexiones, la degeneración desaparece y basta una señal aplicada a la vez sobre los nodos 1 y 5, los únicos que ningún otro nodo alcanza. El nodo más conectado es necesario para controlar la red, aunque no suficiente.

def ctrb_rank(M,B):
    n = M.shape[0]
    blocks = [np.linalg.matrix_power(M,k)@B for k in range(n)]
    return int(np.linalg.matrix_rank(np.hstack(blocks)))
E = np.eye(5)
single = [ctrb_rank(A,E[:,[j]]) for j in range(5)]
assert single == [2,1,1,1,2]
assert 5-np.linalg.matrix_rank(A-.2*np.eye(5)) == 3   # multiplicidad geométrica de 0,2
assert ctrb_rank(A,E[:,[0,1,4]]) == 5
assert ctrb_rank(A,E[:,[0,3,4]]) == 4
rng = np.random.default_rng(1)
G = np.where(A != 0,rng.uniform(.1,.9,(5,5)),0.)   # mismos enlaces, pesos genéricos
assert ctrb_rank(G,E[:,[0]]) == 4
assert ctrb_rank(G,(E[:,0]+E[:,4]).reshape(5,1)) == 5
print("Rango con una entrada en cada nodo:",single)
print("Entradas en 1, 2 y 5:",ctrb_rank(A,E[:,[0,1,4]]),"| en 1, 4 y 5:",ctrb_rank(A,E[:,[0,3,4]]))
print("Pesos genéricos, una señal sobre 1 y 5:",ctrb_rank(G,(E[:,0]+E[:,4]).reshape(5,1)))

Que la red sea controlable no dice todavía cuánto cuesta controlarla. Considérese un sistema de dos variables en que la entrada actúa sobre la primera y esta influye débilmente en la segunda. La matriz de controlabilidad tiene rango completo siempre que el acoplamiento sea distinto de cero. Sin embargo, alcanzar en dos pasos un cambio unitario en la segunda variable, dejando la primera en cero, requiere entradas cuya magnitud crece a medida que el acoplamiento disminuye. La propiedad binaria del rango no expresa ese costo.

Aϵ=(0.50ϵ0.5),b=(10),C=[b,Aϵb],det⁡C=ϵ.A_\epsilon=\begin{pmatrix}0.5&0\\\epsilon&0.5\end{pmatrix},\quad b=\begin{pmatrix}1\\0\end{pmatrix},\quad \mathcal C=[b,A_\epsilon b],\quad\det\mathcal C=\epsilon.

Partiendo del origen, la primera entrada debe valer el inverso del acoplamiento y la segunda, menos la mitad de ese valor. La suma de sus cuadrados es 1,25 dividido por el cuadrado del acoplamiento, de modo que reducir el acoplamiento de uno a una décima multiplica por cien esa energía discreta. Ambos sistemas tienen las mismas conexiones no nulas y son controlables, pero cuando el acoplamiento tiende a cero el determinante de la matriz de controlabilidad también lo hace, y el sistema se acerca a la casi incontrolabilidad que destacan Cowan y colaboradores.

b = np.array([1.,0.])
for coupling in [1.,.1,.01]:
    Ac = np.array([[.5,0.],[coupling,.5]])
    C = np.column_stack([b,Ac@b])
    u0,u1 = 1/coupling,-.5/coupling
    final = Ac@(b*u0)+b*u1
    energy = u0*u0+u1*u1
    assert np.linalg.matrix_rank(C) == 2
    assert np.allclose(final,[0,1])
    assert np.isclose(energy,1.25/coupling**2)
    print("Acoplamiento, estado final y energía:",coupling,final,energy)

El tiempo disponible también importa. Con acoplamiento uno, la energía mínima para alcanzar el mismo destino baja de 1,25 con dos pasos a cerca de 0,64 con tres y se estabiliza alrededor de 0,42 en horizontes largos. La dependencia del inverso del cuadrado del acoplamiento se mantiene en cualquier plazo, porque la segunda variable solo recibe la acción a través de ese coeficiente, así que alargar el horizonte abarata el control sin eliminar esa penalización. Yan y colaboradores (2012) derivaron, para redes en tiempo continuo, leyes de escala de las cotas de energía según el tiempo de control: en tiempos cortos más tiempo siempre reduce la energía, mientras que en tiempos largos puede dejar de reducirla. El ejemplo discreto es coherente con esa descripción cualitativa, aunque no la reproduce.

def min_energy(coupling,steps):
    Ac = np.array([[.5,0.],[coupling,.5]])
    CN = np.column_stack([np.linalg.matrix_power(Ac,steps-1-k)@b for k in range(steps)])
    u = np.linalg.pinv(CN)@np.array([0.,1.])   # entrada de norma mínima
    assert np.allclose(CN@u,[0,1])
    return u@u
for coupling in [1.,.1]:
    print("Acoplamiento y energía mínima con 2, 3, 10 y 50 pasos:",coupling,
          [round(float(min_energy(coupling,N)),4) for N in [2,3,10,50]])
assert np.isclose(min_energy(1.,2),1.25)
assert np.isclose(min_energy(.1,50),100*min_energy(1.,50))

Si las entradas están acotadas, un destino puede ser inalcanzable en un plazo dado aunque el sistema tenga rango completo sin restricciones. Estas condiciones deben incorporarse antes de trasladar un resultado formal a una acción. La pregunta útil es qué puede lograrse con entradas admisibles, dentro de un plazo y con costos aceptables, y ninguna de esas restricciones forma parte de un índice de centralidad.

488.7.1. Una aproximación local puede fallar para una acción grande

Una matriz dinámica puede describir bien la respuesta cerca de un estado de referencia sin representar perturbaciones amplias. Considérese el mapa logístico con parámetro 2,8 y su punto fijo positivo, x∗=1−1/2,8≈0,643x^*=1-1/2{,}8\approx0{,}643. La derivada en ese punto vale −0,8, de modo que las desviaciones pequeñas alternan de signo y decaen. Si esa aproximación lineal se aplica a una reducción de media unidad, la predicción lineal y el cambio exacto tienen signos opuestos.

f(x)=2.8x(1−x),x∗=1−1/2.8,f(x∗+δ)−x∗=−0.8δ−2.8δ2.f(x)=2.8x(1-x),\quad x^*=1-1/2.8,\qquad f(x^*+\delta)-x^*=-0.8\delta-2.8\delta^2.
r = 2.8
fixed = 1-1/r
delta = -.5
linear_change = -.8*delta
exact_change = r*(fixed+delta)*(1-fixed-delta)-fixed
assert np.isclose(linear_change,.4)
assert np.isclose(exact_change,-.3)
threshold = .8/2.8   # reducción a partir de la cual el signo se invierte
assert np.isclose(-.8*(-threshold)-2.8*threshold**2,0)
print("Cambio lineal y exacto:",linear_change,exact_change)
print("Umbral de inversión de signo:",threshold)

El término cuadrático omitido explica la discrepancia. Para una reducción δ<0\delta<0, el cambio exacto es ∣δ∣(0,8−2,8∣δ∣)|\delta|(0{,}8-2{,}8|\delta|), que tiene el mismo signo que la predicción lineal solo mientras ∣δ∣|\delta| sea menor que 2/7≈0,2862/7\approx0{,}286, y una reducción de 0,5, cercana al ochenta por ciento del valor de equilibrio, cae lejos de ese dominio. El ejemplo no modela síntomas ni tratamientos; muestra que una recomendación calculada con una matriz local necesita un dominio de amplitudes válido, condición que la normalización de las variables no resuelve.

Fijar una variable durante varios pasos tampoco equivale a modificarla una sola vez. Tras un pulso, la variable sigue respondiendo a sus entradas habituales; una fijación sostenida sustituye parte de su dinámica y puede eliminar realimentaciones. Eliminar un nodo, debilitar un enlace y añadir una entrada son operaciones diferentes, aunque informalmente se describan igual, y cada una necesita sus propias ecuaciones.

La distinción afecta también al contraste empírico. Si el modelo predice la respuesta a un pulso y el procedimiento aplicado modifica además una entrada persistente, una discrepancia no puede atribuirse de inmediato a la topología. La validación debe seguir la cadena que va desde la intervención aplicada hasta el cambio efectivo del estado o de los parámetros.

488.8. Unidades, signos y significado de las aristas

Las medidas ponderadas pueden cambiar al modificar las unidades de las variables. Si una coordenada pasa a expresarse en una unidad diez veces mayor, de modo que su valor numérico se divide por diez, los coeficientes de las influencias que salen de ella se multiplican por diez y los de las que llegan a ella se dividen por diez, aunque el sistema físico sea el mismo. Una suma de pesos puede así cambiar el orden de los nodos. La comparación de intervenciones debe transformar de manera coherente los estados, las entradas y las ponderaciones del resultado. Si lo hace, la consecuencia física permanece igual; si solo recalcula el índice, puede producir una recomendación que depende de la escala numérica elegida.

x′=Dx,A′=DAD−1,q′=Dq,w′=D−Tw,w′T(I−A′)−1q′=wT(I−A)−1q.x'=Dx,\qquad A'=DAD^{-1},\qquad q'=Dq,\qquad w'=D^{-T}w, \qquad w'^T(I-A')^{-1}q'=w^T(I-A)^{-1}q.

La invariancia se comprueba sustituyendo, ya que (I−A′)−1=D(I−A)−1D−1(I-A')^{-1}=D(I-A)^{-1}D^{-1} y los factores DD se cancelan. El ejemplo siguiente usa D=diag(0,1; 1)D=\mathrm{diag}(0{,}1;\,1), que corresponde al cambio de unidad descrito para la primera coordenada. El pulso y la función de resultado se transforman junto con la matriz, sin alterar el fenómeno ni la acción física. El beneficio no cambia, pero el orden de las fuerzas salientes se invierte, lo que muestra por qué una medida ponderada necesita una interpretación compatible con las unidades del sistema.

M = np.array([[.2,.5],[.1,.2]])
Dscale = np.diag([.1,1.])   # primera coordenada en una unidad diez veces mayor
Ms = Dscale@M@np.linalg.inv(Dscale)
w = np.ones(2)
q = np.array([1.,0.])
ws = np.linalg.solve(Dscale.T,w)
qs = Dscale@q
original = w@np.linalg.solve(np.eye(2)-M,q)
transformed = ws@np.linalg.solve(np.eye(2)-Ms,qs)
assert np.isclose(original,transformed)
assert M[1,0] < M[0,1]
assert Ms[1,0] > Ms[0,1]
print("Beneficio invariante:",original,transformed)
print("Fuerzas salientes originales:",[float(M[1,0]),float(M[0,1])])
print("Fuerzas salientes reescaladas:",[float(Ms[1,0]),float(Ms[0,1])])

Los signos también importan. Una conexión negativa puede representar compensación, inhibición o una asociación condicional sin interpretación causal establecida. Sumar valores absolutos mide la intensidad de las relaciones y pierde la dirección del efecto, de modo que dos caminos que se cancelan cuentan como si se reforzaran. Un nodo con muchas conexiones fuertes puede producir un cambio neto pequeño, o efectos favorables en unas variables y desfavorables en otras.

La normalización facilita las comparaciones, pero no resuelve el significado interventivo. Estandarizar por las desviaciones observadas incorpora la variabilidad de la muestra, y una perturbación de una desviación estándar puede corresponder a magnitudes distintas en personas o períodos diferentes. Antes de comparar beneficios hay que precisar qué acción real representa esa unidad.

488.9. Acciones que afectan a varios componentes

En aplicaciones reales, una acción suele modificar a la vez varias variables, parámetros o entradas. Representarla como un pulso sobre un único nodo puede ser una idealización útil y también una fuente de error. Una intervención sobre las condiciones de trabajo, por ejemplo, puede alterar al mismo tiempo el tiempo disponible, la exposición a ciertos estímulos y los recursos de una persona. El modelo debe representar el vector de cambios pertinente, sin atribuir todos sus efectos a la variable que se eligió como objetivo nominal.

En una dinámica lineal conocida, el beneficio de un vector de intervención qq se calcula con la misma matriz de respuesta, como 1T(I−A)−1q\mathbf 1^T(I-A)^{-1}q, y la superposición permite sumar contribuciones mientras se mantengan la linealidad y la constancia de los parámetros. Si la acción cambia la matriz dinámica, esa fórmula deja de describir el problema. La acción podría reducir una persistencia, eliminar una conexión o introducir una entrada sostenida, y cada una de esas operaciones requiere comparar trayectorias con y sin la acción.

Bringmann y colaboradores (2019) llaman la atención sobre las intervenciones que, por el entrelazamiento de las variables, afectan a varias de ellas a la vez, lo que en la literatura sobre causalidad se denomina intervención fat-handed. Una variable puede ser indicador de un proceso más amplio y no una pieza manipulable por separado, y en ese caso identificar el mecanismo de la acción informa más que buscar el nodo con mayor índice.

Las combinaciones de acciones pueden tener además efectos no aditivos, porque una acción puede facilitar o impedir otra o competir con ella por un recurso. El problema puede abordarse con optimización o con escenarios, pero la dificultad principal es sustantiva y consiste en estimar qué cambia cuando las acciones se aplican juntas.

488.10. De una red estimada a una prueba interventiva

Una red estimada contiene incertidumbre en sus pesos y, a veces, en la presencia misma de las conexiones. Un ranking puede ser inestable aunque la figura parezca clara. Conviene examinar la variación de las cantidades que sostienen la decisión, incluido el cambio de la acción preferida. Un intervalo de confianza estrecho para una arista no garantiza la estabilidad del beneficio total si otras aristas son inciertas o si la respuesta se amplifica al aproximarse un valor propio a 1, donde (I−A)−1(I-A)^{-1} crece sin límite.

La selección de variables también afecta a la red. Omitir una causa común puede crear asociaciones que no representan propagación directa, y añadir indicadores redundantes puede redistribuir la centralidad sin modificar el proceso subyacente. Estos problemas no se resuelven con una medida más sofisticada aplicada a la misma estructura, sino revisando el modelo de observación y los supuestos causales.

Dablander y Hinne (2019) estudiaron esta relación mediante simulación. Generaron datos a partir de grafos acíclicos dirigidos con efectos causales conocidos, estimaron redes no dirigidas y compararon la centralidad de cada nodo con su influencia causal. La correlación de rangos fue apenas moderada y se volvió negativa al aumentar el tamaño y la densidad de las redes, y en la mayoría de las configuraciones elegir el nodo más central no identificó el de mayor efecto causal mejor que el azar, con la excepción de la centralidad de vector propio. Su marco supone las condiciones de Markov causal y de fidelidad y excluye ciclos de realimentación, de modo que el resultado no se traslada sin más a redes dinámicas como la de este capítulo, aunque muestra el mismo desajuste entre posición e influencia.

Una prueba interventiva necesita definir la acción, el comparador y el resultado antes de interpretar cambios. Si se actúa sobre un nodo central y el sistema mejora, esa observación por sí sola no demuestra que la centralidad explique el beneficio, pues puede haber efectos generales de la acción o diferencias respecto de la alternativa que no se observó. Comparar intervenciones sobre nodos con propiedades distintas, en condiciones apropiadas, permite examinar qué predicciones específicas aporta el criterio de selección.

La evidencia debe considerar también los efectos adversos y la distribución de los resultados, pues una reducción de la suma puede ocultar el empeoramiento de una variable importante. Los pesos iguales y los coeficientes positivos del ejemplo hacen transparente el cálculo, pero no definen un criterio clínico aceptable. La elección de los resultados debe justificarse junto con quienes aplican o experimentan la intervención.

488.10.1. Qué observación podría cambiar la elección

El intervalo de persistencia del quinto nodo permite formular una pregunta de medición concreta, que consiste en determinar si su valor supera el umbral de 0,72 necesario para compensar la menor modificabilidad. Medirlo mejor, con todo, solo es útil si las demás condiciones que sostienen la comparación están bien establecidas. Si el factor de modificabilidad también es muy incierto, resolver la persistencia podría dejar abierta la decisión. El diseño debe considerar las incertidumbres de manera conjunta y evitar concentrarse en el parámetro más fácil de estimar.

Una observación discriminante puede estudiar la respuesta al tipo de acción realmente disponible, en lugar de inferirla de fluctuaciones espontáneas, y evaluar si la magnitud inicial lograda y su propagación coinciden con el modelo. Cuando esa observación no es viable, la comparación por escenarios delimita qué parte de la recomendación depende de supuestos todavía no contrastados.

También importa comprobar si la preferencia resiste a definiciones alternativas razonables del resultado. Si una ponderación que privilegia una variable importante invierte la elección, el desacuerdo es normativo antes que estadístico, y más datos sobre las aristas no resolverán qué resultado debe priorizarse.

La incertidumbre sobre la existencia de una conexión merece un tratamiento distinto de la que afecta a su peso. Si una arista falta, desaparecen rutas de propagación, y un procedimiento que fija de antemano la estructura y solo hace variar coeficientes positivos puede excluir esa posibilidad sin reconocerlo. La comparación por escenarios puede incluir estructuras alternativas compatibles con los datos. La sección 488.7 mostró, además, que la mera igualdad de algunos coeficientes, sin cambio en las conexiones, altera cuántas entradas se necesitan para controlar el sistema.

La incertidumbre de medición alcanza también a la modificabilidad estimada. Una reducción inmediata en una escala puede reflejar un cambio del proceso, una reacción al contexto de evaluación o un error transitorio, y si ese cambio se usa como entrada inicial del modelo, la propagación calculada hereda la interpretación elegida. Un control adecuado de la medición puede ser más relevante que afinar la centralidad.

Por último, la comparación debe especificar cómo se revisará la decisión cuando aparezca información nueva, por ejemplo si el efecto logrado resulta menor que el supuesto o si cambian las restricciones. Definir de antemano qué observaciones justificarían continuar, modificar o detener la estrategia hace que el análisis sea comprobable y evita interpretar de manera selectiva la información posterior.

488.11. Una decisión condicionada a la evidencia disponible

En la red construida, el nodo más conectado no ofrece la mejor relación entre beneficio y costo, aunque sí el mayor beneficio total cuando se puede ejecutar una sola acción sin restricción presupuestaria. La persistencia, la modificabilidad, el horizonte y el descuento cambian la comparación, y la incertidumbre sobre una sola autorrelación basta para invertir la preferencia. Controlar la red requiere el nodo más conectado y también otros, el número de entradas depende de los valores exactos de los coeficientes, y alcanzar un destino es distinto de alcanzarlo con energía admisible. El cambio de unidades muestra que un ranking ponderado puede variar sin que cambie la consecuencia física.

Una recomendación defendible se expresa sobre una acción concreta y bajo condiciones explícitas. Puede indicar que cierta intervención es preferible para un resultado, un horizonte y un conjunto de parámetros determinados, o que la evidencia todavía no permite ordenar las alternativas. Un índice de centralidad puede aportar información descriptiva o ayudar a formular hipótesis, pero no reemplaza esa comparación. La cuestión práctica es qué modificación realizable mejora el resultado relevante con costos y riesgos aceptables, y qué observación haría cambiar esa decisión.

Referencias

Bringmann, L. F., Elmer, T., Epskamp, S., Krause, R. W., Schoch, D., Wichers, M., Wigman, J. T. W., y Snippe, E. (2019). What do centrality measures measure in psychological networks? Journal of Abnormal Psychology, 128(8), 892–903. https://doi.org/10.1037/abn0000446

Cowan, N. J., Chastain, E. J., Vilhena, D. A., Freudenberg, J. S., y Bergstrom, C. T. (2012). Nodal dynamics, not degree distributions, determine the structural controllability of complex networks. PLoS ONE, 7(6), e38398. https://doi.org/10.1371/journal.pone.0038398

Dablander, F., y Hinne, M. (2019). Node centrality measures are a poor substitute for causal inference. Scientific Reports, 9, 6846. https://doi.org/10.1038/s41598-019-43033-9

Liu, Y.-Y., Slotine, J.-J., y Barabási, A.-L. (2011). Controllability of complex networks. Nature, 473(7346), 167–173. https://doi.org/10.1038/nature10011

Yan, G., Ren, J., Lai, Y.-C., Lai, C.-H., y Li, B. (2012). Controlling complex networks: How much energy is needed? Physical Review Letters, 108(21), 218703. https://doi.org/10.1103/PhysRevLett.108.218703

Yuan, Z., Zhao, C., Di, Z., Wang, W.-X., y Lai, Y.-C. (2013). Exact controllability of complex networks. Nature Communications, 4, 2447. https://doi.org/10.1038/ncomms3447