微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用R的PostgreSQL中的非线性回归模型

背景

我有1900年至2009年间加拿大所有气候数据(温度,降水,积雪深度).我写了一个基本网站,最简单的页面允许用户选择类别和城市.然后他们得到一个非常简单的报告(没有参数和计算部分):

Web应用程序的主要目的是提供简单的用户界面,以便公众可以以有意义的方式探索数据. (数字列表对公众没有意义,也不是提供too many inputs的网站.)该应用程序的第二个目的是为气候学家和其他科学家提供更深入的数据查看方式. (当然,使用太多输入.)

工具集

数据库是Postgresql,安装了R(大部分).报告使用iReport编写,并使用JasperReports生成.

糟糕的模式选择

目前,线性回归模型应用于日常数据的年平均值.线性回归模型在Postgresql函数中计算如下:

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

使用以下结果将结果返回给JasperReports:

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

JasperReports使用以下参数化分析函数调用Postgresql

SELECT
  year_taken,measurements,regression_line,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

这不是一个最佳解决方案,因为它给人的假象是气候正以缓慢但稳定的速度变化.

问题

使用带有两个参数的函数(例如,年[X]和金额[Y]),例如Postgresql的regr_slope:

>什么是更好的回归模型适用?
> CPAN-R包提供哪些型号? (可安装,理想情况下,使用apt-get.)
>如何在Postgresql函数调用R函数

如果不存在这样的函数

>对于能产生所需拟合的函数,我应该尝试获取哪些参数?
>您如何建议显示最佳拟合曲线?

请记住,这是一个供公众使用的网络应用程序.如果分析数据的唯一方法是来自R shell,那么目的就被打败了. (我知道到目前为止我看过的大多数R函数都不是这种情况.)

谢谢!

解决方法

令人敬畏的 pl/r软件包允许您在Postgresql中运行R作为过程语言.有一些问题因为R喜欢用向量来考虑数据而不是RDBMS所做的.它仍然是一个非常有用的包,因为它为您提供了Postgresql内部的R,从而节省了您的架构的一些往返.

pl/r对你来说很容易,因为它已经成为Debian / Ubuntu的一部分了一段时间.从apt-cache show postgresql-8.4-plr开始(正在测试,其他版本/风味也有它).

至于适当的建模:这是一个完全不同的球赛.对于非参数的东西,黄土是一个公平的建议,你可能也想要某种动态模型,ARMA / ARIMA或滞后回归.鉴于该主题的政治化程度,建模的选择非常关键.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐