WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Lineare Regression nur mit möglichen Einträgen

 

Nekrokeks
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 12.12.13
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 25.02.2014, 12:33     Titel: Lineare Regression nur mit möglichen Einträgen
  Antworten mit Zitat      
Hallo liebe Community,

ich hänge leider nun schon länger an einem Problem zur Linearen Regression. Ich versuche mal zu schildern:

Ich habe z.b. 2 30x6 Matrizen (eine x, eine y) und würde jetzt gerne die Lineare Regression anwenden, um die gefittete Steigung zu erhalten. mit Polyfit ist das ja gut möglich. Allerdings werden in meinen Matrizen zum Teil Nullen oder Inf auftauchen, da es Messdaten sind und manchmal auch Konzentrationen von 0 dabei sind.

Ich habe leider keinen Ansatz :/ Sollte ich die "inf" oder "0" rausmachen (allerdings müsste ich ja dann in x/y denselben Eintrag auch löschen) oder kann ich Matlab irgendwie anweisen aus beiden Matrizen nur korrespondierende Einträge mit Zahlen zu benutzen?

Vielen Dank für eure Vorschläge
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.02.2014, 18:51     Titel:
  Antworten mit Zitat      
Hallo,

inf und 0-Werte (sofern sie fehlenden Werten entsprechen) sollten auf NaN gesetzt werden.
Wenn du regress verwendest, wird das dann automatisch korrekt behandelt.

Merkwürdig erscheint mir allerdings, dass du zwei Matrizen hast.
Möchtest du die Steigung (a) für jede Spalte oder (b) für die gesamte Matrix?
(a) dann musst du über die Spalten iterieren.
(b) dann musst du die Matrizen z.B. mit reshape in Vektoren umwandeln.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Nekrokeks
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 12.12.13
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 25.02.2014, 19:22     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für deine Antwort.

Ich möchte für jeweils 2 korrelierende Spalten eine lineare Regression durchführen. Mir ist dann im Laufe des Tages auch gekommen, dass es eine gute Idee ist alles was unbrauchbar ist zu NaNs zu setzen. Dann habe ich regress benutzt, aber leider eine andere Steigung herausbekommen, als es sein sollte (mit Excel prüfe ich).
Ich vermute mal, dass ich irgendwo mit regress einen Fehler gemacht habe, denn das sollte ja funktionieren.
Auf meiner Suche nach einer anderen Lösung bin ich nach einiger Probiererei auf dieses hier gekommen:

Code:
%Mein Vorschlag

x(x==0)=NaN;
x(~isfinite(x))=NaN;
y(y==0)=NaN;
y(~isfinite(y))=NaN;


for i = 1:size(x,2)
    IndexGes = find(~isnan(x(:,i))&~isnan(y(:,i)));
    REG_STG = polyfit(x(IndexGes,i),y(IndexGes,i),1);
    REG{1,i} = REG_STG;
   
end

 


Also zuerst alles auf NaNs gesetzt und dann die Indizes, die in beiden Matrizen keine NaNs sind in "IndexGes" gespeichert. Und dann funktioniert das einwandfrei mit polyfit = )
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.02.2014, 19:28     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:

Ich vermute mal, dass ich irgendwo mit regress einen Fehler gemacht habe, denn das sollte ja funktionieren.

Ja, sollte es. Um dir zu sagen, wo das Problem liegt, müssten wir allerdings sehen, was du genau gemacht hast.

Zitat:
Und dann funktioniert das einwandfrei mit polyfit = )

Gut :)

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Nekrokeks
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 12.12.13
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 25.02.2014, 19:30     Titel:
  Antworten mit Zitat      
Hallo Harald,

ja ich lasse das jetzt einfach so - auch wenn es ein wenig umständlicher ist! Auf Schnelligkeit kommt es bei mir zum Glück nicht drauf an = )

Grüße

Nekro
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.