Фон
У меня есть климатические данные (температура, осадки, глубина снега) по всей Канаде в период с 1900 по 2009 год. Я написал базовый веб-сайт, и самая простая страница позволяет пользователям выбирать категорию и город. Затем они получают очень простой отчет (без раздела параметров и расчетов):
The primary purpose of the web application is to provide a simple user interface so that the general public can explore the data in meaningful ways. (A list of numbers is not meaningful to the general public, nor is a website that provides слишком много входных данных .) Вторичная цель приложения - предоставить климатологам и другим ученым более глубокие способы просмотра данных. (Конечно, используя слишком много входов.)
Набор инструментов
База данных - 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
Это не оптимальное решение, поскольку оно создает ложное впечатление, что климат меняется медленно, но устойчиво.
Вопросы
Использование функций, которые принимают два параметра (например, год [X] и количество [Y]), таких как PostgreSQL regr_slope
:
- Какую модель регрессии лучше применить?
- Какие пакеты CPAN-R предоставляют такие модели? (Устанавливается, в идеале, используя
apt-get
.)
- Как можно вызывать функции R в функции PostgreSQL?
Если таких функций не существует:
- Какие параметры я должен попытаться получить для функций, которые будут производить желаемую подгонку?
- Как бы вы порекомендовали показать кривую наилучшего соответствия?
Имейте в виду, что это веб-приложение для широкой публики. Если единственный способ проанализировать данные - это оболочка R, то цель была побеждена. (Я знаю, что это не относится к большинству функций R, на которые я смотрел до сих пор.)
Спасибо!