Estudio de los costes para cada neurona, con exponentes 0.5 y 2. Comparación del óptimo global con el que se obtiene fijando todas las demás neuronas en sus posiciones reales.

>> [alfa beta]
ans =
0.0794 0.1259
pos_cuad=coste2pos_cuad(todas.A*alfa,todas.M*beta+todas.S,todas.f);
miracostes(todas.A,todas.M,todas.S,todas.f,todas.pos_real,[.5 2],alfa,beta,[pos_opt(:,ind_min) pos_cuad],[])

Se ven sobre todo dos cosas:
1. Sobre todo para exponente 0.5, la posición óptima global (línea negra) suele estar bastante lejos de la posición de mínimo coste con el resto de las neuronas fijas en su posición experimental. Y la posición real (línea roja) suele estar más cerca del mínimo del coste con el resto fijas que del óptimo global.

2. Que algunas neuronas tienen posiciones reales clavadas en mínimos locales.

Pruebo encontrando el óptimo para cada neurona, con las demás fijas en sus posiciones reales.

pos_cm=coste2pos_restofijas(todas.A*alfa,todas.M*beta+todas.S,todas.f,todas.pos_real,.5);
>> mean(abs(todas.pos_real-pos_cm))
ans =
0.0911
pos_cm2=coste2pos_restofijas(todas.A*alfa,todas.M*beta+todas.S,todas.f,todas.pos_real,2);
>> mean(abs(todas.pos_real-pos_cm2))
ans =
0.0926
>> mean(abs(todas.pos_real-pos_cuad))
ans =
0.0976
>> mean(abs(todas.pos_real-pos_opt(:,ind_min)))
ans =
0.1321

Así que calcular el óptimo con el resto fijas apenas mejora el resultado con coste cuadrático, pero lo mejora muchísimo con coste 0.5. Tanto, que pasa a ser mejor que el cuadrático.

Ahora, gráfica omega-desv para el exponente 0.5 y los alfa y beta que dio Bayes. Un truñaco.

plot(abs(todas.pos_real-pos_cm),omega,’.’)

>> xlabel(‘Deviation’)
>> ylabel(‘\omega’)
>> hold on
>> axis(axis)
>> plot(abs(todas.pos_real-pos_cm),omega,’.’)
>> plot(x,7./x.^.5,’k’)
>> plot(x,5./x.^.5,’k’)
>> plot(x,2./x.^.5,’k’)

Miramos el coste de AVAL, que se va mucho en la gráfica:

Para calmar a cierto insidioso supervisor mío, añado omega-desv para el caso sintético con alfa y beta del pnas y exponente 0.5.

load datos_fig_pap_calibracionbayes_bichos_segundo
plot(abs(pos_opt{1}-pos{1}),omega_pnas,’.’)
>> xlabel(‘Deviation’)
>> ylabel(‘\omega’)

Y aquí viene lo acojonante. ¿Quiénes son esos dos puntitos desviados?

SOSPECHA: ¿Puede ser que Bayes se esté limitando a escoger el que más se acerca con el cálculo de fijar el resto en posiciones reales? (que ya sé que hace mucho más, pero a lo mejor se obtiene el mismo resultado con este otro método mucho más simple).

Pues parece que en el caso de los alfa y beta del PNAS sí es lo que hace:

>> pos_cuad_pnas=coste2pos_cuad(todas.A*.05,todas.M*1.5+todas.S,todas.f);
>> mean(abs(todas.pos_real-pos_cuad_pnas))
ans =
0.0879
>> pos_lin_pnas=coste2pos_num_ruido(todas.A*.05,todas.M*1.5+todas.S,todas.f,1,0,1,1);
>> mean(abs(todas.pos_real-pos_lin_pnas))
ans =
0.0946
>> pos_cm2_pnas=coste2pos_restofijas(todas.A*.05,todas.M*1.5+todas.S,todas.f,todas.pos_real,2);
>> mean(abs(todas.pos_real-pos_cm2_pnas))
ans =
0.0844
>> pos_cm1_pnas=coste2pos_restofijas(todas.A*.05,todas.M*1.5+todas.S,todas.f,todas.pos_real,1);
>> mean(abs(todas.pos_real-pos_cm1_pnas))
ans =
0.0828

En realidad no sé si esto importa mucho, porque:

  1. Casi es normal que el que mejor cuadra con las desviaciones también tenga un error medio menor (aunque no tenga que ser cierto en general, es lo más probable).
  2. Seguimos teniendo un patrón 1/x en la gráfica omega-desv para los alfa y beta del pnas, que indica que las desviaciones también son más consistentes con lineal.
Advertisement

Study on the effect of removing AVAL and AVAR from the calculations

It seems that AVAL and AVAR may be critical for the good results of exponent 0.5, see previous post. Let’s see what happens when we remove them.

A coarse Bayes yields the same result, stored in posreal_sinavalavar.

cd c:\hipertec\optimesto\bayes\resultados
>> load info_posreal_sinavalavar
>> prob=infoarchivos2prob(infoarchivos,[1 2 3]);
>> subplot(1,2,1)
>> plot(infoarchivos.pot,sum(sum(prob,2),3))
>> subplot(1,2,2)
>> imagesc(log10(infoarchivos.beta),log10(infoarchivos.alfa),squeeze(sum(prob,1)))

The metric is still very significant.

buenas=true(279,1);
>> find(strcmpi(‘aval’,todas.nombres))
ans =
54
>> find(strcmpi(‘avar’,todas.nombres))
ans =
55
>> buenas([54 55])=false;
[m,coste_real,coste_perm]=metrica_pot(todas.A(buenas,buenas)*alfa,todas.M(buenas,:)*beta+todas.S(buenas,:),todas.f,todas.pos_real(buenas),pot,10000,pos_opt(buenas,ind_min));
Calculando coste de permutaciones…1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,Hecho.
>> m
m =
0
>> clf
>> hist(coste_perm,100)
>> hold on
>> ejes=axis;
>> plot(coste_real*[1 1],ejes(3:4),’k’)

The omega-desv plot looks horrible.

omega_restr=sum([todas.A(buenas,buenas)*alfa todas.M(buenas,:)*beta+todas.S(buenas,:)],2);
plot(abs(todas.pos_real(buenas)-pos_opt(buenas,ind_min)),omega_restr,’.’)

 

 

 

Análisis del estado que predice Bayes (II)

Repito los cálculos de ayer, pero con los resultados definitivos del Bayes en remotón. Estos resultados son:

Pot=0.5, alfa=10^-1.1, beta=10^-0.9.

load datos_celegans_struct
alfa=10^-1.1; beta=10^-.9; pot=.5;
>> pos_opt=coste2pos_num_ruido(todas.A*alfa,todas.M*beta+todas.S,todas.f,pot,0,1,1);
for c=1:100
pos_opt=[pos_opt coste2pos_num_ruido(todas.A*alfa,todas.M*beta+todas.S,todas.f,pot,0,1,1)];
end
figure
>> hold on
>> pos_opt=coste2pos_num_ruido(todas.A*alfa,todas.M*beta+todas.S,todas.f,pot,0,1,1);
for c=1:100
pos_opt=[pos_opt coste2pos_num_ruido(todas.A*alfa,todas.M*beta+todas.S,todas.f,pot,0,1,1)];
end
for c=1:101
costes(c)=pos2coste(todas.A*alfa,todas.M*beta+todas.S,todas.f,pos_opt(:,c),pot);
end
>> for c=1:101
error(c)=mean(abs(pos_opt(:,c)-todas.pos_real));
end
plot(costes,error,’.’)
>> xlabel(‘Coste’)
>> ylabel(‘Error medio’)
>> [r,p]=corrcoef(costes,error)
r =
1.0000 -0.0127
-0.0127 1.0000
p =
1.0000 0.8997
0.8997 1.0000

[m,ind_min]=min(costes)
omega=sum([todas.A*alfa todas.M*beta+todas.S],2);
plot(abs(todas.pos_real-pos_opt(:,ind_min)),omega,’.’)
>> xlabel(‘Deviation’)
>> ylabel(‘\omega’)


for c=1:279
text(abs(todas.pos_real(c)-pos_opt(c,ind_min)),omega(c),todas.nombres{c})
end

Gráfica de densidad:

[matriz,binsx,binsy,contornos]=elegans_sintetico2graficaomega(todas.pos_real,pos_opt(:,ind_min),omega,20,20,[],1);
??? Subscripted assignment dimension mismatch.
Error in ==> elegans_sintetico2graficaomega at 35
matriz(c_vacios,:)=mean([matriz(c_vacios-1,:) ; matriz(c_vacios+1,:)]);

[m,coste_real,coste_perm]=metrica_pot(todas.A*alfa,todas.M*beta+todas.S,todas.f,todas.pos_real,pot,10000,pos_opt(:,ind_min));
Calculando coste de permutaciones…1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,Hecho.
>> m
m =
0
>> clf
>> hist(coste_perm,100)
>> hold on
>> ejes=axis;
>> plot(coste_real*[1 1],ejes(3:4),’k’)