Модели нелинейной регрессии в PostgreSQL с использованием R
У меня есть климатические данные (температура, осадки, глубина снега) по всей Канаде в период с 1900 по 2009 год. Я написал базовый веб-сайт, и самая простая страница позволяет пользователям выбирать категорию и город. Затем они возвращают очень простой отчет (без раздела параметров и расчетов):
Основная цель веб-приложения - предоставить простой пользовательский интерфейс, чтобы широкая публика могла исследовать данные осмысленными способами. (Список номеров не имеет смысла для широкой публики, как и веб-сайт, который предоставляетслишком много входов.) Вторичная цель приложения - предоставить климатологам и другим ученым более глубокие способы просмотра данных. (Конечно, используя слишком много входов.)
Набор инструментовБаза данных - PostgreSQL с установленным R (в основном). Отчеты пишутся с использованием 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
Это не оптимальное решение, потому что оно создает ложное впечатление, что климат меняется медленно, но стабильно.
ВопросыИспользование функций, которые принимают два параметра (например, year [X] и amount [Y]), такие как PostgreSQLregr_slope
:
apt-get
.)Как можно вызвать функции R внутри функции PostgreSQL?Если таких функций не существует:
Какие параметры я должен попытаться получить для функций, которые будут производить желаемую подгонку?Как бы вы посоветовали показать кривую наилучшего соответствия?Имейте в виду, что это веб-приложение для широкой публики. Если единственный способ проанализировать данные - это оболочка R, то цель была побеждена. (Я знаю, что это не относится к большинству функций R, на которые я смотрел до сих пор.)
Спасибо!