La compréhension de la régression de la fonction dans Matlab
Je vais avoir du mal à comprendre comment la régression des œuvres dans Matlab.
Dire que j'ai 2 tableaux (X et Y), chacune ayant la même taille (disons qu'elles sont chacune 1x10). Ce que je comprends, la régression de la fonction devrait m'aider à trouver la relation entre X et Y (je veux dessiner un meilleur ajustement de la ligne à travers le tracé de données), et ensuite me donner la pente. Quand j'ai essayé ceci dans Matlab, j'ai eu une erreur en disant que les 2 variables ont un nombre différent de lignes....mais ils ne le font pas, ils?
Je serais vraiment reconnaissant si quelqu'un pouvait m'aider à comprendre comment la fonction et ses paramètres de travail, juste pour me faire aller à un niveau de base.
Voici un code comme exemple:
x = [1,2,3,4,5,6,7,8,9,10];
y = [1,2,3,4,5,6,7,8,9,10]; %defining the arrays, they are linearly related
X=[x ones(size(x,1),1)]; %adding the (necessary?) column of ones
regress(y,X) % using the regress function for a relationship
J'obtiens cette erreur:
??? Error using ==> regress at 64
The number of rows in Y must equal the number of rows in X.
OriginalL'auteur John Alberto | 2013-11-28
Vous devez vous connecter pour publier un commentaire.
Je pense que vous êtes confus lignes avec les colonnes en quelque sorte (Matlab utilise classement de la colonne principale). Si vous imprimez vos deux entrées,
y
etX
, vous verrez immédiatement qu'ils sont en ligne, des vecteurs de longueurs différentes. Lire l'aide et de la documentation pourrégression
soigneusement la première entrée doit être un N-en-1 vecteur colonne. Et la seconde d'un N par p la matrice. Donc quelque chose comme cela pourrait fonctionner:OriginalL'auteur horchler
regress
est pour la régression linéaire multiple. Vous voulez juste trouver la relation entreX
etY
. Pour quepolyfit
de commande devrait être suffisant. Je pense que la colonne de ceux est nécessaire que si vous souhaitez calculer les statistiques.De MATLAB documentation:
Vous allez utiliser
regress
lorsque vous voulez savoir commentZ
se comporte à l'égard deX
etY
. En bref,Z=f(X,Y)
. Dans ce cas, vous allez brancherZ
comme unnx1
vecteur (le premier argument dansregress
de commande). Alors vous en former une autre matrice, direD=[X Y]
. C'est unnx2
vecteur. Ce sera le deuxième argument en faveur de laregress
commande.Maintenant lire ce à partir de MATLAB docs de nouveau, voir si cela fait sens:
Concernant
fitlm
vsregress
, les deux sont des régresseurs linéaires. Je pense quefitlm
est mieux organisé et vous pouvez tracer, de calculer des métriques etc. en utilisant les méthodes defitlm
. Vous ne pouvez pas faire beaucoup de choses dansregress
. Cependant, je ne suis pas sûr. Je pense que vous vouliez dire "normale multivariée par régression", pour qui liremvregress
de MATALB et les comparer avecregress
. Vous devriez obtenir la différence.OriginalL'auteur Parag S. Chandakkar