linear regression on excel dataset
7 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I am new in MATLAB and have tried to do a linear regression with the code:
>> filename = 'C:\Users\Troels\Dropbox\Analyse & Resultater\MATLAB\Danmark OX.xls';
>> ds = xlsread(filename) // the dataset "Danmark OX.xls" is printet
>> mdl = LinearModel.fit(ds)
Error using classreg.regr.TermsRegression/handleDataArgs (line 629) Y argument is required unless X is a dataset.
Error in LinearModel.fit (line 891) [X,y,haveDataset,otherArgs] = LinearModel.handleDataArgs(X,varargin{:});
Have also tried the code:
>> ds = dataset('XLSFile','C:\Users\Troels\Dropbox\Analyse & Resultater\MATLAB\Danmark OX.xls','ReadObsNames',true);
Warning: Variable names were modified to make them valid MATLAB identifiers.
> In @dataset\private\genvalidnames at 56
In @dataset\private\setvarnames at 40
In dataset.readXLSFile at 49
In dataset.dataset>dataset.dataset at 352
>> mdl = LinearModel.fit(ds);
Warning: Regression design matrix is rank deficient to within machine precision.
> In TermsRegression>TermsRegression.checkDesignRank at 98
In LinearModel.LinearModel>LinearModel.fit at 944
Am I on the right track in any of my 2 attempts? And can anyone tell me from the above what I do wrong?
1 commentaire
dpb
le 28 Juil 2013
Please reformat the code and remove the excess lines for legibility...
But, the first fails because the LinearModel requires a dataset and the result of xlsread() isn't one...
Second effort is ok from that standpoint but the error/warning indicates your data are poorly scaled -- lookfor "rank deficiency" in the online documentation for what that is if you don't know and possible workarounds.
Better would be to fix that problem w/ better design matrix but sometimes that's not possible.
Réponse acceptée
Shashank Prasanna
le 28 Juil 2013
mdl = LinearModel.fit(ds)
assumes, ds is a dataset (Your second approach) and the last column of ds is the response variable. Is the true in your case?
If you want to pass data as a matrix then you have to do so this way:
mdl = LinearModel.fit(X,y)
I urge you to read the documentation of LinearModel.fit to understand how to call it. This will save you a lot of time later on. There are plenty of examples there:
0 commentaires
Plus de réponses (1)
T27667
le 28 Juil 2013
1 commentaire
Shashank Prasanna
le 28 Juil 2013
Modifié(e) : Shashank Prasanna
le 28 Juil 2013
I've never used OxMetrics, but you may want to check the documentation of LinearModel.fit for all the calculated goodness of fit statistics. If you don't find a specific one it may be available separately in the Statistics Toolbox.
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!