背景
我有 1900 年到 2009 年间加拿大全境的气候数据(温度、降水量、积雪深度)。我编写了一个基本网站,最简单的页面允许用户选择类别和城市。然后他们得到一个非常简单的报告(没有参数和计算部分):
Web 应用程序的主要目的是提供一个简单的用户界面,以便公众能够以有意义的方式探索数据。(数字列表对公众没有意义,提供太多输入的网站也没有意义。)该应用程序的次要目的是为气候学家和其他科学家提供更深入的方式来查看数据。(当然,使用了太多的输入。)
工具集
该数据库是安装了 R(大部分)的 PostgreSQL。报告使用 iReport 编写并使用 JasperReports 生成。
模型选择不佳
目前,线性回归模型应用于每日数据的年平均值。线性回归模型在 PostgreSQL 函数中计算如下:
SELECT
regr_slope( amount, year_taken ),
regr_intercept( amount, year_taken ),
corr( amount, year_taken )
FROM
temp_regression
INTO STRICT slope, intercept, correlation;
使用以下命令将结果返回到 JasperReports:
SELECT
year_taken,
amount,
year_taken * slope + intercept,
slope,
intercept,
correlation,
total_measurements
INTO result;
JasperReports 使用以下参数化分析函数调用 PostgreSQL:
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
这不是一个最佳解决方案,因为它给人一种错误的印象,即气候正在以缓慢但稳定的速度变化。
问题
使用带有两个参数的函数(例如,年份 [X] 和金额 [Y]),例如 PostgreSQL 的regr_slope
:
- 什么是更好的回归模型?
- 哪些 CPAN-R 包提供了这样的模型?(可安装,理想情况下,使用
apt-get
.) - 如何在 PostgreSQL 函数中调用 R 函数?
如果不存在这样的功能:
- 对于将产生所需拟合的函数,我应该尝试获取哪些参数?
- 你会如何建议显示最佳拟合曲线?
请记住,这是一个供公众使用的网络应用程序。如果分析数据的唯一方法是使用 R shell,那么目的就落空了。(我知道到目前为止我看过的大多数 R 函数都不是这种情况。)
谢谢!