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

Multiple Lineare Regression mit Panel Data

 

silvanzehn
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 27.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2014, 12:13     Titel: Multiple Lineare Regression mit Panel Data
  Antworten mit Zitat      
Hallo zusammen,

Ich muss für eine Arbeit eine Regression mit Firmen Daten unterschiedlicher Länder und unterschiedlicher Jahre programmieren. Ein einfache Regression hat super geklappt mit der Funktion regress, aber mein Betreuer meinte, ich müsste schauen, dass ich die Jahres- und Ländereffekte berücksichtige. Und meine Frage ist jetzt, würdet ihr dies mit einer zusätzlichen Dummy-Variable machen oder würdet ihr die Regression in Panel Daten machen?

Und mein Hauptproblem ist, dass ich die Umsetzung der beiden Lösungen nicht kapiere. Wie bastle ich mir zum Beispiel die Dummy Matrizen für die Länder- und Jahres-Effekte? Oder wie bastle ich mir eine Regression mit den Panels? Mein Betreuer hat das eben in STATA gemacht und mir kurz den STATA Code gezeigt und der war so im Stil von:

Code:
for YEAR 1 to N
      for COMPANY 1 to N
             regress Y X1 X2 X3


oder so ähnlich. Aber in Matlab macht das ja irgendwie weniger Sinn, oder? Habt ihr ne idee? Ich bin gerade ein bisschen verloren Neutral Danke vielmals für eure Hilfe!!!
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: 27.03.2014, 13:11     Titel:
  Antworten mit Zitat      
Hallo,

wenn du weißt und auch beschreibst, was du machen möchtest, können wir gerne bei der Umsetzung helfen. Den Anfang musst du da aber schon selber, ggf. mit deinem Betreuer machen.

Insbesondere die Frage: was meinst du hier mit einer Dummy-Variable?

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

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 27.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.03.2014, 00:22     Titel:
  Antworten mit Zitat      
Hallo Harald,

Danke vielmals für deine Antwort. Also ich hab mich mal ein bisschen weiter überhaupt in das Thema eingelesen und habe herausgefunden, dass in der neuen Matlab Version eine solche Funktion geschaffen wurde für mein Problem: fitlm.m und fixedEffects.m, aber leider versteh ich nicht ganz wie ich diese Verwenden muss. Insbesondere erhalte ich bei FixedEffects die Wertvollen angaben zu den F-Statistiken und R-squared nicht mehr, was auch noch ein problem wäre...

Also im Prinzip habe ich eine Matrix wobei jede Zeile die Werte von einer Firma darstellt. Im Anhang wäre eine kleine Rohfassung davon. Zu jeder Firma gibt es die Daten aus verschiedenen Jahren und die Firmen kommen aus verschiedenen Ländern.

Und das wäre mein bisheriger Code:

Code:

[~, ~, raw] = xlsread('C:\Users\Silvan\My Dropbox\Studium\Bachelorarbeit\MATLAB\Testdaten.xls','task');

% Beschriftung herausspeichern und von der Matrix lösen
Mat_title=raw(1,:);
Data_temp=raw(3:end,:); %ACHTUNG!!!!! Nur die ersten zwei weg, wegen Beschriftung!!!

% Alle nicht numerischen Zelleinträge finden
R = cellfun(@(x) ~isnumeric(x) || isnan(x),Data_temp);
% Die Zellen zu einer bearbeitbaren Matrix umwandeln
Data=cell2mat(Data_temp);

%% Definiere und Berechne Neue Variablen

Cashflow=Data(:,21); %Cashflow aus Exceldatei
Nibei=Data(:,19);    %Net Income before extrodinary items aus Exceldatei
Tot_Ass=Data(:,5);   %Total Assets aus Exceldatei
Tot_Acc=(Nibei-Cashflow); %Absoluten totalen Accruals - nicht skaliert

% Errechnen der skalierten totalen Assets des vergangenen Jahres
[firm_years,firm_stats]=size(Data);
STot_Acc=zeros(size(Tot_Acc)); %Skalierte totale Accruals
for i=1:firm_years
    for j=i:firm_years-i
        if Data(i,1)==Data(j,1) && (Data(j,3)-Data(i,3))==1
            STot_Acc(j,1)=Tot_Acc(j,1)/Tot_Ass(i,1);
        end
    end
end

Sales=Data(:,16);    %Total an Verkäufen der jeweiligen Periode und Firma
Receiv=Data(:,7);    %Ausstehende Forderungen des jeweiligen Jahres
PPE=Data(:,9);       %Brutto-Sachanlagen der Firma im jeweiligen Jahr
ROA=Nibei./Tot_Ass;  %Return on Assets der jeweiligen Firma

Year=Data(:,3);
Country=Data(:,2);

mdl=LinearModel.fit([1./Tot_Ass,(Sales-Receiv),PPE,ROA],Tot_Acc./Tot_Ass);
Ab_Acc_LMfit=mdl.Residuals.Raw;


Entschuldigt, ist ein bisschen lange und zum Teil sicher komplizierter als Notwendig. Zb der Teil hier:
Code:

% Errechnen der skalierten totalen Assets des vergangenen Jahres
[firm_years,firm_stats]=size(Data);
STot_Acc=zeros(size(Tot_Acc)); %Skalierte totale Accruals
for i=1:firm_years
    for j=i:firm_years-i
        if Data(i,1)==Data(j,1) && (Data(j,3)-Data(i,3))==1
            STot_Acc(j,1)=Tot_Acc(j,1)/Tot_Ass(i,1);
        end
    end
end

Könnte man sicher vereinfachen: Also ich habe mir diese Variable Tot_Acc erstellt aus Nibei-Cashflow. Und nun möchte ich, dass diese Variable jeweils geteilt wird durch das Totale Vermögen der Firma des vergangenen Jahres. Da aber meine Daten unvollständig sind und ich nicht zu jeder Firma von jedem Jahr alle Daten habe, soll der Code zuerst die Firmen durchsuchen und schauen ob eine zweimal vorkommt, und wenn die Jahre aufeinander sind, dann solls den Wert anpassen. Aber so drei Schlaufen verpackt sind schon nicht so schön... Aber eigentlich ist das ja ein anderes Problem - sorry... Confused

Auf jeden Fall ist eigentlich der Teil wo ich hängen geblieben bin, der Teil ganz unten, wo ich die Regression mache. Ich mache jetzt hier eine Regression ohne diese fixed effects und probiere es mit unterschiedlichen Formeln und das passt alles ganz gut. Aber eben, jetzt müsste ich die Effekte pro Jahr und pro Land beachten und ich hab keine Ahnung wie ich das machen muss. Der Ansatz mit den Dummy-Variablen sei falsch habe ich im Internet gelesen (eine Dummy Variable, wäre einfach eine Variable welche ich einfüge, die den Wert 1 annimmt im Jahr 1 und 0 sonst. Aber eben, dass hätte dann bei 10 Jahren weitere 10 Variablen gegeben und bei 29 Ländern nochmals 29 Variablen, daher ist dies dann ziemlich ungenau).

Habt ihr Erfahrungen mit der Funktion FixedEffects? Oder sonst eine Idee wie man das lösen könnte?

Danke viel vielmals für eure Bemühungen!

Allerbeste Grüsse

Silvan

Testdaten.xls
 Beschreibung:

Download
 Dateiname:  Testdaten.xls
 Dateigröße:  262 KB
 Heruntergeladen:  483 mal
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.