Ich habe einen einfachen Datensatz: Tägliche Renditen von allen gelisteten Firmen im SMI von den Jahren 1993-2017.
Ich möchte grundsätzlich schauen, welcher Tag hat die höchste und welcher die tiefste Tagesrendite. Dafür habe ich diesen Code:
- Code: Alles auswählen
generate dayofweek = dow(date)
list, abbreviate(16)
rename (THENATIVE-ZWAHLENMAYR) (return=)
reshape long return, i(date) j(Firm) string
sort Firm date
order Firm date
bys date (dayofweek): gen returns = sum(return)
drop if returns == 0
collapse (mean) Mean = return (sd) Std_Dev = return (count) N = return, by(dayofweek)
gen t_stat = Mean/(Std_Dev/sqrt(N))
Ich bekomme dann auch die Mittelwerte, Standardabweichung, N und t-Wert so wie ich es im Code eingebe. Das Problem:
Der N (also Observationen) variieren wenn ich das Excel wieder importiere und den Code rennen lasse. Also der Datensatz und der Code bleiben exakt die gleichen, die Resultate ändern minim.
Beispielsweise erhalte ich einmal für den Montag einen Mittelwert von 0.0000981, Std. 0.0289, N= 280'140 und t-Wert 1.79286
und beim anderen run einen Mittelwert von 0.00009789, Std. 0.0289, N= 280'484 und t-Wert von 1.791432.
Die Abweichungen sind minim, sie sind jedoch da und ich weiss nicht ob die Resultate so stimmen. Ich habe in Foren dazu gefunden, dass es mit stable und sort gelöst werden kann, jedoch habe ich nicht verstanden wie ich dies in meinem Code einsetzen kann. Kann mir jemand weiterhelfen?