Helio, bom dia!
Rodei seu script, mas só atentei pra parte do AIC e BIC. O cálculo me parece estar correto.
Acredito que o procedimento também, sendo aplicado AIC e BIC em um objeto resultante de 'lm' (data~predicted oriundos da validação cruzada).
O BIC é uma derivação do AIC. Tanto que:
BIC(x) == AIC(x, k = log(nobs(object))) ou
BIC(reglin_ols) == AIC(reglin_ols, k = log(31)) adaptando para um de seus procedimentos (31 observações).
Fiz o teste com seus dados e está OK...
A diferença entre AIC e BIC é notada com a diferenciação quanto ao número de parâmetros do modelo. No teu caso, você compara um mesmo modelo linear simples sucessivas vezes, não variando o número de parâmetros. Fora isso, por ser um modelo simples não deve haver diferença na penalização por AIC ou BIC, diferindo apenas o cálculo inicial dos índices.
Isso é só um 'palpite' e precisaria dar uma estudada na teoria dos índices pra entender melhor. Talvez algum dos colegas da lista possa contribuir mais nesse sentido...
================================================
Éder Comunello
Ph.D. Student in Agricultural Systems Engineering (USP/ESALQ)
Piracicaba, SP, Brazil [22 42.7'S, 47 37.8'W]
Researcher at Embrapa Western Region AgricultureDourados, MS, Brazil [22 16.5'S, 54 49.0'W]
================================================
UTC-03:00