@@ -88,18 +88,18 @@ mlClassificationLogisticMultinomial <- function(jaspResults, dataset, options, .
88
88
}
89
89
if (nlevels(trainingSet [[options [[" target" ]]]]) == 2 ) {
90
90
family = " binomial"
91
- linkFunction <- " logit "
92
- trainingFit <- glm(formula , data = trainingSet , family = stats :: binomial(link = linkFunction ))
91
+ linkFunction <- options [[ " link " ]]
92
+ trainingFit <- stats :: glm(formula , data = trainingSet , family = stats :: binomial(link = linkFunction ))
93
93
# Use the specified model to make predictions for dataset
94
- testPredictions <- .mlClassificationLogisticPredictions(trainingSet , options , predict(trainingFit , newdata = testSet , type = " response" ))
95
- dataPredictions <- .mlClassificationLogisticPredictions(trainingSet , options , predict(trainingFit , newdata = dataset , type = " response" ))
94
+ testPredictions <- .mlClassificationLogisticPredictions(trainingSet , options , stats :: predict(trainingFit , newdata = testSet , type = " response" ))
95
+ dataPredictions <- .mlClassificationLogisticPredictions(trainingSet , options , stats :: predict(trainingFit , newdata = dataset , type = " response" ))
96
96
} else {
97
97
family <- " multinomial"
98
98
linkFunction <- " logit"
99
99
trainingFit <- VGAM :: vglm(formula , data = trainingSet , family = VGAM :: multinomial())
100
100
# Use the specified model to make predictions for dataset
101
- testPredictions <- .mlClassificationMultinomialPredictions(trainingSet , options , predict(trainingFit , newdata = testSet ))
102
- dataPredictions <- .mlClassificationMultinomialPredictions(trainingSet , options , predict(trainingFit , newdata = dataset ))
101
+ testPredictions <- .mlClassificationMultinomialPredictions(trainingSet , options , VGAM :: predict(trainingFit , newdata = testSet ))
102
+ dataPredictions <- .mlClassificationMultinomialPredictions(trainingSet , options , VGAM :: predict(trainingFit , newdata = dataset ))
103
103
}
104
104
# Create results object
105
105
result <- list ()
@@ -108,6 +108,7 @@ mlClassificationLogisticMultinomial <- function(jaspResults, dataset, options, .
108
108
result [[" link" ]] <- linkFunction
109
109
if (family == " binomial" ) {
110
110
result [[" model" ]] <- trainingFit
111
+ result [[" model" ]]$ link <- result [[" link" ]]
111
112
} else {
112
113
model <- lapply(slotNames(trainingFit ), function (x ) slot(trainingFit , x ))
113
114
names(model ) <- slotNames(trainingFit )
@@ -211,14 +212,14 @@ mlClassificationLogisticMultinomial <- function(jaspResults, dataset, options, .
211
212
table [[" lower" ]] <- coefs [, " lower" ]
212
213
table [[" upper" ]] <- coefs [, " upper" ]
213
214
}
214
- if (options [[" formula" ]]) { # TODO FOR MULTINOMIAL
215
+ if (options [[" formula" ]]) {
215
216
if (classificationResult [[" family" ]] == " binomial" ) {
216
217
one_cat <- levels(factor (classificationResult [[" train" ]][[options [[" target" ]]]]))[2 ]
217
218
if (options [[" intercept" ]]) {
218
- regform <- paste0(" logit (p<sub>" , options [[" target" ]], " = " , one_cat , " </sub>) = " , round(as.numeric(coefs [, 1 ])[1 ], 3 ))
219
+ regform <- paste0(options [[ " link " ]], " (p<sub>" , options [[" target" ]], " = " , one_cat , " </sub>) = " , round(as.numeric(coefs [, 1 ])[1 ], 3 ))
219
220
start <- 2
220
221
} else {
221
- regform <- paste0(" logit (p<sub>" , options [[" target" ]], " = " , one_cat , " </sub>) = " )
222
+ regform <- paste0(options [[ " link " ]], " (p<sub>" , options [[" target" ]], " = " , one_cat , " </sub>) = " )
222
223
start <- 1
223
224
}
224
225
for (i in start : nrow(coefs )) {
0 commit comments