Error when using fitrm - Fit Repeated Measures Model for RM ANOVA

3 Ansichten (letzte 30 Tage)
Ad
Ad am 9 Feb. 2018
Beantwortet: Jeff Miller am 11 Feb. 2018
I am trying to perform repeated measures ANOVA using the fitrm function, but keep getting the following error:
*Error using eig*
*Input matrix contains NaN or Inf.*
I've created a minimal working example based on the Matlab documentation for fitrm, but with some of my own variables (my actual list of measurements is much longer). I am trying to determine if the measurements from the 4 participants can be considered as statistically equivalent, while preserving the relationship between the data points (so all L1 data was collected at location 1 for all participants, L2 was collected at location 2, etc).
Here is my minimal example code (including data):
% Data collected from 4 participants in 3 locations.
% Each row is a participant, each column is a location
measurements = [ 112.7258 92.2979 82.5488;
123.7502 113.2852 84.8053;
106.8964 93.9526 70.9359;
107.3634 85.2672 65.7928]
P_Name = ['A' 'B' 'C' 'D']' % participant name
%Create a table, Data comes first, Variable names second
t = table(P_Name,measurements(:,1),measurements(:,2),measurements(:,3),'VariableNames',{'Participant','L1','L2','L3'})
% Create a location variable for the measurements
Location = table([1 2 3]','VariableNames',{'Location'})
% Fit repeated measures model
rm = fitrm(t,'L1-L3~Participant','WithinModel',Location)
Any help is greatly received.
  2 Kommentare
Jeff Miller
Jeff Miller am 9 Feb. 2018
Could you clarify a little bit what you are trying to do (i.e., what you mean by "determine if the measurements from the 4 participants can be considered as statistically equivalent")?
Looking at your 4x3 "measurements" matrix, the questions that come to mind are "Do mean scores differ across locations, averaging across participants?" or possibly "Do mean scores differ across participants, averaging across locations?" but neither of those sounds like your question.
Ad
Ad am 10 Feb. 2018
Bearbeitet: Ad am 10 Feb. 2018
Apologies for not being clear with my question. Your second proposed question is most accurate - "Do mean scores differ across participants, averaging across locations?"
I would like to see if the participants behaved differently to one another, when considering the data sampled from the various locations. Because location 1,2,3 are exactly the same for all participants and expected to elicit different responses, I would like the order of the measurements to factor in during the comparison.
I actually have several 'measurements' arrays, each of which represents a different metric taken from the participants at the locations. From visual inspection, some of these arrays show similar measurements for all participants, while others seem more random. I am hoping for a statistical method that will tell me which measurement arrays shows similarity between the participants and which ones do not.
I hope that clarifies my problem.

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Jeff Miller
Jeff Miller am 11 Feb. 2018
This seems like a slightly nonstandard problem to me so I am not sure, but here is one way you might approach it.
measurements = [...];
AllCombos = allcomb(1:3,1:4); % From MATLAB file exchange
[a, b, c] = anovan(measurements(1:end),AllCombos,'Model','full');
anovan basically fits an additive model where each score is decomposed into a sum of a constant, a participant effect, a location effect, and a residual. The Sum Sq. column of the anovan output gives you a breakdown of the sums of squares for the participant, location, and residual terms.
Note that the error is zero. This is because you have only 1 score per participant/location combination, so there is no way to estimate a true random component associated with each participant/location combination score. In this sort of situation, the residual is often used as a guestimate of random error (e.g., to compute an F test).
You might be able to use the sums of square to answer your question (as I understand it). You could compute a table like this for each of your measurement arrays, and then probably convert the SS within each array to a % of the total for that array. (This would certainly make sense if your measurement arrays had different units.)
Then, you could compare across arrays: What % of the variation is explained by participants? What % is explained by location? What % is explained by the random or idiosyncratic participant/location combination effects? It seems like this would give you some meaningful basis on which to compare the different measurement arrays.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by