Hi there,
I’ve never done classification before, but I am currently using your TDT classification toolbox, and I really like the many options and flexibility it provides you with! However, I have quite some (basic?) method questions specifically regarding the many settings that exists, i.e., what they do, how to interpret them, and how they differ… As I said, I’m new to classification so please bear with me, and/or refer me to literature where applicable!
Because I would like to run a classification using crossnobis. And although the script is running, I feel like I don’t understand very well what is being done, exactly, or what would happen if I change some settings. So I’d mainly like to get more background information, if possible?
Specifically, I’m currently running a 2-class classification based on the decoding_template_crossnobis (i.e., using make_design_similarity_cv and setting cfg.results.output to {‘other_meandistance’, ‘accuracy_minus_chance’}). However, the accuracy output doesn’t give an error but simply returns NaNs only. So first I thought the script would use the t-values as a way to classify (hence also being able to return accuracy), but it seems that is not the case?
But do I indeed (only) get t-values as output, currently? Because that is the most important output that I want… More specifically; mean distance per voxel (here only unique values averaged across cross-validation iterations), expressed in a t-value? So the t-value then reflects how well the 2 classes can be classified/distinguished, correct? Because it returns both positive and negative values; are both informative (i.e., reflecting a categorization of either labelname1 or 2, respectively), or not?
Or if I do not get t-values; how should I set the output to get that? I understood you can also use RSA_beta or other_average. But specifically for RSA_beta, how does the beta-value differ from the t-value? And actually, I get an error when trying to use RSA_beta as output (Unrecognized function or variable ‘transres_RSA_beta’.). Is that because I’m running a classification instead of RSA? Or in which case would/could you use which output measure? And are these the ‘only’ meaningful output options, or are there others? Again; just for me to understand what’s possible…
And for cfg.decoding.software, I can set it to “distance” or “similarity”, where the former averages across data with the same label; the latter does not. But how are those averaged/not-averaged values used in the classification, exactly? And what do they represent? The average dissimilarity vs. a vector with similarity values to obtain a t-value from, or …? And when would you choose which? Because also here I’ve tried keeping everything the same except setting software to similarity, but it got me an error:
(Error using cveuclidean2 (line 16)
Size of both inputs needs to match.)
And a more general question: How does crossnobis differ from LDA, exactly? Would LDA (unlike crossnobis) return a classification accuracy? Because I’ve been trying to run lda by setting cfg.decoding.software to ‘lda’, but that returns an error about dot indexing. So I haven’t been able to compare the crossnobis and lda outputs. Should something else in the code be changed as well in order for lda to run, e.g., the model_parameters?
The error itself:
Dot indexing is not supported for variables of this type.
Error in ldatrain (line 51)
switch lower(param.shrinkage)
Error in lda_train (line 9)
model = ldatrain(labels_train,data_train,cfg.decoding.train.classification.model_parameters);
Error in decoding (line 535)
model = cfg.decoding.fhandle_train(labels_train,data_train,cfg);
Error in decoding_template_lda_tryout (line 239)
results = decoding(cfg);
And my last (general) question: I currently run a classification, so when running a second-level model, should I always use a permutation test, or might a simple t-test be ok if I use other_meandistance as output measure instead of an accuracy measure that’s bounded between 0 and 1?
Thanks so much in advance!
Best,
Iris