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

Anwendung Kleinste-Quadrate Methode

 

d.henden
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 17.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2015, 14:05     Titel: Anwendung Kleinste-Quadrate Methode
  Antworten mit Zitat      
Hallo liebe Matlab Profis,

ich habe einen Datensatz für Altersabhängige Sterbewahrscheinlichkeiten über mehrere Jahre. Für die Bestimmung von einem Modell benötige ich jetzt eine Kleinste-Quadrate Schätzung, die mir als Outputparameter den Schnittpunkt mit der Y-Achse und die Steigung der Schätzgerade jeweils für ein Jahr angibt also (Y= C +aX) .

Als Inputparameter habe ich die altersabhängige Sterbewahrscheinlichkeiten für mehrere Jahre, das jeweilige Alter und ein Vektor mit einsen als Konstante.
Wie kann ich das Lösen, mit fitlm, komme ich irgendwie nicht weiter, da er mir zu viele Outputparameter liefert und zusätzlich standardmäßig von x1 und x2 ausgeht, ich aber nur ein x möchte.

Vielen Dank für eure Hilfe
Daniel
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: 19.06.2015, 14:34     Titel:
  Antworten mit Zitat      
Hallo,

bitte Doku lesen. Der Vektor mit 1 ist überflüssig, da fitlm standardmäßig einen konstanten Term berücksichtigt.

Bitte auch den verwendeten Code angeben. Mir ist nicht klar, was du mit "zu viele Outputparameter" meinst.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
d.henden
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 17.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2015, 14:49     Titel:
  Antworten mit Zitat      
Hi Harald,

Vielen Dank für deine schnelle Antwort.
ich habe drei verschiedene Vorgehensweise versucht:
mit fitlm:

Code:
allfm =[]
for t = 1 : 78
fm = fitlm ([ones(size(Age)) Age],logits(:,t),'linear')
allfm=[allfm;fm]
end


hier möchte ich, dass er mir in den Vektor allfm, jeweils den Schnittpunkt mit der Y-Achse und die Steigung schreibt. Wie lautet der Befehl hierzu?
Logits sind die Logarithmierten Sterblichkeitsraten für 78 Jahre.

Weitere Vorgehensweisen waren, die aber auch nicht funktioniert haben:
Code:
for t = 1 : 78
        A(t,:) = lsqlin([ones(size(VarName1)) VarName1],logits(:,t))'
        A_test(t,:) = regress( logits(:,t), [ones(size(VarName1)) VarName1])
 end
 

VG
edit winkow: bitte code umgebung benutzen
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: 19.06.2015, 14:56     Titel:
  Antworten mit Zitat      
Hallo,

versuch's doch erst mal mit einem Datensatz?
fitlm gibt das Modell zurück. Wenn du Steigung und y-Abschnitt willst, musst du dir das aus dem Modell herausholen (ich meine über Coefficients und Estimate).

Zitat:
Weitere Vorgehensweisen waren, die aber auch nicht funktioniert haben:

Insbesondere wenn du keine Testdaten zur Verfügung stellen kannst / willst, dann sag doch bitte, was daran nicht funktioniert hat.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
d.henden
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 17.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2015, 15:50     Titel:
  Antworten mit Zitat      
Hi,

also meine konkrete Frage lautet: Wie kann ich eine Vektor/Matrix schreiben in dem ich nur die Y-Achsenschnittpunkte und Steigung ausgeben lasse, mittels fitlm? Wie kann ich hier die Output-Argumente verändern.

Also analog zu [r,m,b] = regression(Y,X,'one')
und dann [m,b].

Viele Grüße
Daniel
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: 19.06.2015, 17:17     Titel:
  Antworten mit Zitat      
Hallo,

ich verstehe nicht, was du daran verändern willst. Du musst dir wie gesagt die Infos herausholen, die du brauchst. Beispiel:

Code:
X = 1:10;
Y = 2.1 * X + 3.2 + 0.1*randn(size(X));
mdl = fitlm(X, Y);
coeffs = mdl.Coefficients.Estimate;


Grüße,
Harald
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.