Как получить линейные дискриминатные уравнения (линейный дискриминантный анализ) в r? - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь вывести линейное дискриминантное уравнение из анализа lda в r. Набор данных, который я использую, включает в себя серию линейных измерений остеометрии c, я хотел бы получить линейные дискриминантные уравнения от Ида, которые я мог бы использовать, чтобы отличить биологический пол от этих измерений.

мой набор данных

head(mydata[,2:15])
  M1   M2  M3  M4  M5    M6    M7   M8   M9 M10 M11  M12 M13 M15
1 204 160 159  98 120    34    82    82  50  50  92   99 70 74
2 204 156 161 101 112    34    84    75  53  52  99  107 71 77
3 175 135 129  88 100    31    73    70  42  43  80   87 59 74
4 206 141 154 101 113    38    85    75  54  55 101  108 72 78
5 193 154 145  94 107    32    80    72  48  46  87   96 61 69
6 201 146 148  95 110    39    88    76  56  49  97  105 73 77

моя переменная группировки

head(sex[,1,])
[1] "F" "M" "F" "M" "F" "M"  

lda

myprediction<-lda(as.matrix(mydata[,2:15]),prior =c(1,1)/2,grouping=sex[,1,], CV=F)
myprediction<-lda(as.matrix(mydata[,2:15]),prior =c(1,1)/2,grouping=sex[,1,], CV=T)

С CV = TI получил классы, так что я Можно предсказать пол, оценить точность с помощью матрицы путаницы. С CV = FI получил коэффициенты (myprediction $ scaling):

мои коэффициенты

head(myprediction$scaling)
               LD1
M1    0.099035225
M2   -0.050516512
M3   -0.035602199
M4   -0.002970568
M5   -0.095033474
M6  0.083340277

У меня есть коэффициенты, теперь я бы хотел вычислить константу и центроид группы для секционирования точка. Я хотел бы получить что-то вроде этого уравнения: y = Константа + (Coef1 * Var1) + (Coef2 * Var2) + .. et c. Так что я могу сравнить y с точкой сечения (среднее значение для групповых центроидов) и предсказать пол новых наблюдений. Что-то вроде результатов SPSS.

Я пробовал это для константы, но я думаю, что это не правильно, так как при тестировании уравнения я явно ошибался y:

groupmean<-(my.prediction$prior%*%cv.sex$means)
constant<-(groupmean%*%my.prediction$scaling)

Большое спасибо всем, кто предложил помощь!

...