Modelos directos, inversos y en los que tanto da

Continúo con esto que concluí con una discusión que me negué a resolver sobre la geometría de los errores.

Que es la manera de entender que los problemas directos e inversos no son exactamente el mismo. Digamos que no es una medida invariante frente a reflexiones del plano (que es lo que hacemos realmente al considerar el modelo inverso).

¿Pero y si medimos la distancia (ortogonal) entre los puntos (x,y) y la curva y = f(x) (o, equivalentemente, x = f^{-1}(x))? Entonces daría (o debería dar) lo mismo.

Podemos ensayarlo usando el paquete onls, que nos proporciona exactamente eso.

Voilá (usando los datos de la entrada anterior):

mod_directo <- onls(y ~ exp(a * x + b), 
                    start = list(a = 0.1, b = 0.1))
summary(mod_directo)

# Formula: y ~ exp(a * x + b)
# 
# Parameters:
#   Estimate Std. Error t value Pr(>|t|)    
# a   1.0107     0.1786   5.659 1.51e-07 ***
# b  -0.4843     0.1188  -4.076 9.32e-05 ***
#   ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error of vertical distances: 0.6124 on 98 degrees of freedom
# Residual standard error of orthogonal distances: 0.07816 on 98 degrees of freedom
# 
# Number of iterations to convergence: 2 
# Achieved convergence tolerance: 1.49e-08

y

mod_inverso <- onls(x ~ (log(y) - b) / a, start = list(a = 0.1, b = 0.1))
summary(mod_inverso)

# Formula: x ~ (log(y) - b)/a
# 
# Parameters:
#   Estimate Std. Error t value Pr(>|t|)    
# a  1.02304    0.14805   6.910 4.92e-10 ***
# b -0.48512    0.08978  -5.403 4.59e-07 ***
#   ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error of vertical distances: 0.873 on 98 degrees of freedom
# Residual standard error of orthogonal distances: 0.08608 on 98 degrees of freedom
# 
# Number of iterations to convergence: 11 
# Achieved convergence tolerance: 1.49e-08