gpt4 book ai didi

postgresql - 使用 R 在 PostgreSQL 中建立非线性回归模型

转载 作者:行者123 更新时间:2023-11-29 11:32:29 24 4
gpt4 key购买 nike

背景

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

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

工具集

数据库是安装了 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 函数都不是这种情况。)

谢谢!

最佳答案

真棒pl/r包允许您在 PostgreSQL 中将 R 作为过程语言运行。有一些陷阱,因为 R 喜欢根据向量来考虑数据,这不是 RDBMS 所做的。它仍然是一个非常有用的包,因为它为您提供了 PostgreSQL 内部的 R,为您节省了一些架构的往返时间。

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

至于合适的建模:那是一个完全不同的球赛。 loess 是对非参数的合理建议,您可能还需要某种动态模型,ARMA/ARIMA 或滞后回归。考虑到该主题的政治化程度,建模的选择非常关键。

关于postgresql - 使用 R 在 PostgreSQL 中建立非线性回归模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2926742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com