Как вызвать функции R из Free Pascal? - PullRequest
1 голос
/ 16 ноября 2011

В моем приложении Lazarus / Free Pascal я генерирую большую многостолбцовую числовую матрицу.Я хочу запустить Анализ основных компонентов (PCA) для этой таблицы, но, похоже, не могу найти никаких пакетов для этого.

В языке R есть библиотека .dll, которая экспортирует PCA функция , но она возвращает объект класса «princomp».Я не уверен, как мне тогда извлечь необходимую информацию (такую ​​как преобразованную матрицу) из этого класса для использования в Lazarus / FPC.

Ответы [ 2 ]

2 голосов
/ 16 ноября 2011

Взгляните на ALGLIB:

http://en.wikipedia.org/wiki/ALGLIB

http://www.alglib.net/download.php

Я думаю, что он имеет много числовых подпрограмм, среди прочего разложение по сингулярным значениям и разложение по собственным значениям.Поэтому, если в нем нет специальной процедуры PCA, помните, что средний вектор PCA является средним значением всех векторов данных и что векторы PCA являются собственными векторами ковариационной матрицы, а соответствующие собственные значения являются дисперсиями проекции данных.на этих векторах.

1 голос
/ 16 ноября 2011

На самом деле в R есть две функции PCA: princomp и prcomp. Первый вычисляет собственные значения ковариационной матрицы данных, второй выполняет разложение по сингулярному значению. Подробная информация о том, что возвращает каждая функция (объект класса «princomp» или «prcomp»), описана на страницах справки функций в разделе «Значение». Обычно это матрица с нагрузками (то есть матрица вращения), стандартные отклонения основных компонентов (то есть квадратные корни из собственных значений ковариационной / корреляционной матрицы) и, если требуется, повернутый набор данных.

...