Modelos de regressão não linear no PostgreSQL usando R

fundo

Tenho dados climáticos (temperatura, precipitação, profundidade da neve) para todo o Canadá entre 1900 e 2009. Escrevi um site básico e a página mais simples permite que os usuários escolham categoria e cidade. Depois, eles recebem um relatório muito simples (sem a seção de parâmetros e cálculos):

O objetivo principal do aplicativo da web é fornecer uma interface de usuário simples para que o público em geral possa explorar os dados de maneira significativa. (Uma lista de números não é significativa para o público em geral, nem um site que forneçamuitas entradas.) O objetivo secundário do aplicativo é fornecer aos climatologistas e outros cientistas maneiras mais profundas de visualizar os dados. (Usando muitas entradas, é claro.)

Conjunto de ferramentas

O banco de dados é o PostgreSQL com o R (principalmente) instalado. Os relatórios são gravados usando o iReport e gerados usando JasperReports.

Má escolha de modelo

Atualmente, um modelo de regressão linear é aplicado contra as médias anuais dos dados diários. O modelo de regressão linear é calculado dentro da função PostgreSQL da seguinte maneira:

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

Os resultados são retornados ao JasperReports usando:

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

O JasperReports chama o PostgreSQL usando a seguinte função de análise parametrizada:

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 não é uma solução ideal, pois dá a falsa impressão de que o clima está mudando a uma taxa lenta, mas constante.

Questões

Usando funções que usam dois parâmetros (por exemplo, ano [X] e quantidade [Y]), como o PostgreSQLregr_slope:

Qual é o melhor modelo de regressão para aplicar?Quais pacotes CPAN-R fornecem esses modelos? (Instalável, idealmente, usandoapt-get.)Como as funções R podem ser chamadas dentro de uma função PostgreSQL?

Se nenhuma dessas funções existir:

Quais parâmetros devo tentar obter para funções que produzam o ajuste desejado?Como você recomendaria mostrar a melhor curva de ajuste?

Lembre-se de que este é um aplicativo da Web para uso do público em geral. Se a única maneira de analisar os dados for de um shell R, o objetivo foi derrotado. (Eu sei que esse não é o caso da maioria das funções R que eu observei até agora.)

Obrigado!

questionAnswers(3)

yourAnswerToTheQuestion