我有一堆使用包收集的形态学数据geomorph
。这些数据如下所示:
259 个矩阵(每个人一个文件)x
和y
20 个地标的坐标(列)。
[,1] [,2]
[1,] -0.2820496783 -0.003257662
[2,] -0.2501083238 0.020960228
[3,] -0.2250506399 0.049100368
[4,] -0.2015860633 0.024673340
[5,] -0.2246826220 0.001103431
[6,] -0.0750488845 0.133714363
[7,] 0.0006292017 0.133626261
[8,] 0.0679419574 0.117149206
[9,] 0.1239612670 0.097834963
[10,] 0.2008532330 0.063564419
[11,] 0.2763894852 0.026529132
[12,] 0.3606700636 0.038228394
[13,] 0.3665535317 -0.065490660
[14,] 0.2728682794 -0.086504965
[15,] 0.1113276708 -0.147876722
[16,] -0.0742222455 -0.158015857
[17,] -0.0746248649 -0.117267412
[18,] -0.0775485339 -0.055400903
[19,] -0.1122735300 0.041616289
[20,] -0.1839993037 -0.114286212
该软件包geomorph
包含执行主成分分析 (PCA) 的工具,但我认为它不包含任何用于线性判别分析 (LDA) 的工具。还是有什么?
如何对此类数据执行 LDA?
解决方案可能来自包geomorph
或来自另一个包。修改geomorph
包中的功能plotTangentSpace
(例如功能。这个包的功能通常不是很长!)以创建我需要的功能。或者,也许这只是转换数据的问题,以便使用 MASS:::lda 可行(请参阅评论中的讨论)
笔记:
在上面列出的 20 个地标中,我有 4 个半地标(滑块)!半地标用于评估的不是点位置而是曲线。下面是我的矩阵,其中包含半地标的信息。该矩阵被调用semi$sliders
并用作 `gpagen 函数的参数,如下所示:
> gpagen(3D_Array_With_All_Individuals, curves = semi$sliders, ShowPlot = T)
> semi$sliders
[,1] [,2] [,3]
[1,] 6 7 8
[2,] 7 8 9
[3,] 8 9 10
[4,] 9 10 11
3D_Array_With_All_Individuals
是一个 3D 数组,其中每一层都是 259 个矩阵之一。