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

Beste lineare Regression in Polynom finden

 

Gast6336

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.08.2008, 16:32     Titel: Beste lineare Regression in Polynom finden
  Antworten mit Zitat      
Hallo Zusammen

Da ich noch Matlab Frischling bin, komm ich einfach auf keinen grünen Zweig.... Question

Wie kann man in einem Polynomen Datensatz die beste lineare Regresseion (R^2 und Steigung) finden?

Hat jemand soetwas schon einmal gemacht?

tmp.txt
 Beschreibung:

Download
 Dateiname:  tmp.txt
 Dateigröße:  2.39 KB
 Heruntergeladen:  695 mal


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 08.08.2008, 17:25     Titel:
  Antworten mit Zitat      
Moin,

die Punkte im Plot sehen für mich so aus, als würden dort 3 Kurven verlaufen...

Ansonsten geht das fitten eines Polynoms mit
Code:

"polyfit" sollte als Stichwort für die Forumsuche auch einiges zu Tage fördern Wink

Gruß
Alex

tmp.jpg
 Beschreibung:

Download
 Dateiname:  tmp.jpg
 Dateigröße:  19.24 KB
 Heruntergeladen:  665 mal

_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast6336

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.08.2008, 16:39     Titel:
  Antworten mit Zitat      
Hallo steve

Danke für die Antwort, ich habe zu Hause leider kein Matlab und konnte micht erst heute wieder dem Problem gewidmet. ich habe mit die Daten und andere nochmals angeschaut und sie linearisiert (Bild.png) um das Problem besser zu verdeutlichen. Ich möchte vom "linearsten" Teil (rot gepunktet) die Steigung berechnen, ist das möglich, denn soweit ich die hilfe über polyfit gelesen habe, fittet diese imemr über den gesamten Bereich und ich möchte ja nur einen Teil davon?

Viele Dank nochmals
Gas6336

bild.png
 Beschreibung:

Download
 Dateiname:  bild.png
 Dateigröße:  12.52 KB
 Heruntergeladen:  660 mal
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 12.08.2008, 07:56     Titel:
  Antworten mit Zitat      
Moin,

das geht schon, nämlich wenn du den Dateninput für polyfit beschränkst.
Beispiel:
Code:
% Datenmatrix gegeben:
daten = rand(2,20)*10; % 2x20-Matrix, also 20 Datenpunkte

% es sollen nur die mittleren 10 Datenpunkte verwendet werden:
daten_neu = daten(:,6:15);


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 12.08.2008, 08:39     Titel:
  Antworten mit Zitat      
Hi,

wie hast Du das denn linearisiert? Wenn Du diese Punkte ausgerechnet hast kennst Du doch die Steigung auch schon, oder?
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast6336

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.08.2008, 08:40     Titel:
  Antworten mit Zitat      
Servus

Das geht aber nur, wenn der lineare teil in der Mitte ist. Gibt es auch eine Möglichkeit nach dem linearsten Stück, dass durch mindestens x punkte geht und ein R^2 mit > 0.90 zu suchen?
 
Gast6336

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.08.2008, 09:01     Titel:
  Antworten mit Zitat      
Nachmals Servus

Nachtrag: ich habe einen Plot mit 3 Unterschiedlichen Datensätzten angehängt, als ergänzung zu meinen Beitrag vorher.

Für nschlange: Die Daten stammen aus der Verfahrenstechnik und werden zur kla bestimmung verwendet. Es gibt ein verfahren bei dem die aufgezeichneten partialsauerstoffdrücke linearisiert werden mit der differenz und einem logaritmus... aber da sehe ich die steigung noch nicht

bild2.png
 Beschreibung:

Download
 Dateiname:  bild2.png
 Dateigröße:  3.81 KB
 Heruntergeladen:  726 mal
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 12.08.2008, 09:22     Titel:
  Antworten mit Zitat      
Lad doch die Daten aus dem letzten Bild mal hoch.

Hast Du denn die Punkte, die Du in das linearisierte Bild eingezeichnet hast? Dann müsstest Du doch nur die Steigen zwischen zwei der Punkte ausrechnen, oder?
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast6336

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.08.2008, 12:01     Titel:
  Antworten mit Zitat      
Das sind die Daten zu den beiden Bildern. Bezüglich den beiden Punkten, die habe ich mit Paint gemalt. Hast du etwas schon mal gemacht?

Daten.xls
 Beschreibung:

Download
 Dateiname:  Daten.xls
 Dateigröße:  30 KB
 Heruntergeladen:  566 mal
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 12.08.2008, 14:41     Titel:
  Antworten mit Zitat      
Hi,

ein erster Ansatz könnte sein, 'Ausreißer' der Steigung zu ignorieren. So wird eine einigermaßen konstante Steigung gesucht, der Rest wird beim Fit nicht beachtet:
Code:
%%
clear all;
clc;
daten=xlsread('daten.xls');

%%
x1=daten(~isnan(daten(:,1)),1);
y1=daten(~isnan(daten(:,3)),3);
dx=diff(y1)./diff(x1);
x1=x1(1:end-1);
y1=y1(1:end-1);

mwdx=mean(dx);
sadx=std(dx);
ind=find(dx<mwdx+0.3*sadx & dx>mwdx-0.3*sadx);
p=polyfit(x1(ind),y1(ind),1);

subplot(2,1,1)
plot(x1,y1);
subplot(2,1,2)
plot(x1(ind),y1(ind));
hold on;
plot(x1,polyval(p,x1),':r');

str=sprintf('Steigung der Ausgleichgeraden: %1.2f',p(1));
disp(str)

_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast6336

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.08.2008, 16:22     Titel:
  Antworten mit Zitat      
Danke nschlange für die Antwort, werde ich gleich Austesten.
 
Gast6336

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.08.2008, 16:29     Titel:
  Antworten mit Zitat      
Hallo nschlange

Sieht sehr gut aus, vielen dank für deine Hilfe.

Auch Steve möchte ich für seine Hilfe danke.
 
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 - 2024 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.