Modelos de regressão não linear no PostgreSQL usando R
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 ferramentasO 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 modeloAtualmente, 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õesUsando funções que usam dois parâmetros (por exemplo, ano [X] e quantidade [Y]), como o PostgreSQLregr_slope
:
apt-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!