Можно ли написать функцию в R для проведения дискриминантного анализа с кумулятивным, переменным числом факторов? - PullRequest
0 голосов
/ 22 февраля 2020

Я пытаюсь выполнить наименьший дискриминантный анализ данных геометрии c морфометрия c. Поскольку данные геометрии c морфометрия c обычно дают большое количество переменных, а дискриминантный анализ требует большего количества точек данных, чем переменных, для точной классификации образцов, в литературе принято решение выполнять анализ основных компонентов, а затем использовать переменное число ПК, представляющие менее 99% совокупной дисперсии, но возвращающие наивысшую скорость реклассификации в качестве входных данных для LDA.

В настоящий момент я делаю это, запуская LDA в R (используя функции из * 1003). * и MASS пакетов) при каждом возможном количестве используемых ПК и отмечая точность классификации вручную, пока я не нашел наименьшее количество компьютеров, которые вернули самую высокую точность, но это крайне неэффективно.

Мне было интересно, есть ли способ написать функцию, которая будет запускать LDA для всех возможных чисел первых N ПК (до определенного, определенного пользователем уровня, представляющего 99% совокупной дисперсии) и возвращать процент уровень переклассификации для каждого уровня, производящий что-то вроде следующего:

PCs percent_accuracy
20  72.2
19  76.3
18  77.4
17  80.1
16  75.4
15  50.7
... ...
1   20.2

Таким образом, строка 1 будет скоростью реклассификации при использовании первых 20 ПК, строка 2 - скоростью, когда первые 19 ПК используются и т. д. и т. п.

...