Modelos de regresión no lineal en PostgreSQL usando R

Antecedentes

Tengo datos climáticos (temperatura, precipitación, profundidad de nieve) para todo Canadá entre 1900 y 2009. He escrito un sitio web básico y la página más simple permite a los usuarios elegir categoría y ciudad. Luego obtienen un informe muy simple (sin la sección de parámetros y cálculos):

El propósito principal de la aplicación web es proporcionar una interfaz de usuario simple para que el público en general pueda explorar los datos de manera significativa. (Una lista de números no tiene sentido para el público en general, ni un sitio web que proporcionedemasiadas entradas.) El objetivo secundario de la aplicación es proporcionar a los climatólogos y otros científicos formas más profundas de ver los datos. (Usando demasiadas entradas, por supuesto).

Conjunto de herramientas

La base de datos es PostgreSQL con R (en su mayoría) instalado. Los informes se escriben con iReport y se generan con JasperReports.

Mala elección del modelo

Actualmente, se aplica un modelo de regresión lineal contra promedios anuales de datos diarios. El modelo de regresión lineal se calcula dentro de una función PostgreSQL de la siguiente manera:

SELECT 
  regr_slope( amount, year_taken ),
  regr_intercept( amount, year_taken ),
  corr( amount, year_taken )
FROM
  temp_regression
INTO STRICT slope, intercept, correlation;

Los resultados se devuelven a JasperReports usando:

SELECT
  year_taken,
  amount,
  year_taken * slope + intercept,
  slope,
  intercept,
  correlation,
  total_measurements
INTO result;

JasperReports llama a PostgreSQL utilizando la siguiente función de análisis parametrizado:

SELECT
  year_taken,
  amount,
  measurements,
  regression_line,
  slope,
  intercept,
  correlation,
  total_measurements,
  execute_time
FROM
  climate.analysis(
    $P{CityId},
    $P{Elevation1},
    $P{Elevation2},
    $P{Radius},
    $P{CategoryId},
    $P{Year1},
    $P{Year2}
  )
ORDER BY year_taken

Esta no es una solución óptima porque da la falsa impresión de que el clima está cambiando a un ritmo lento pero constante.

Preguntas

Usar funciones que toman dos parámetros (por ejemplo, año [X] y cantidad [Y]), como PostgreSQL'sregr_slope:

¿Cuál es un mejor modelo de regresión para aplicar?¿Qué paquetes de CPAN-R proporcionan tales modelos? (Instalable, idealmente, usandoapt-get.)¿Cómo se pueden invocar las funciones R dentro de una función PostgreSQL?

Si no existen tales funciones:

¿Qué parámetros debo tratar de obtener para las funciones que producirán el ajuste deseado?¿Cómo recomendarías mostrar la curva de mejor ajuste?

Tenga en cuenta que esta es una aplicación web para uso del público en general. Si la única forma de analizar los datos es desde un shell R, entonces el propósito ha sido derrotado. (Sé que este no es el caso para la mayoría de las funciones R que he visto hasta ahora).

¡Gracias!

Respuestas a la pregunta(3)

Su respuesta a la pregunta