Verfasst am: 16.05.2016, 14:45
Titel: Fehler: Too many Inputs
Hallo,
seit kurzem beschäftige ich mich mit Matlab und bin sozusagen nicht die hellste Kerze auf der Torte zzt.
Ich möchte gern mit Matlab eine lineare Regression auf Heteroskedastizität testen. Bisher habe ich zwei Tests von anderen Personen dazu gefunden. Einen habe ich zum "laufen" bekommen. Möchte nun allerding gern überprüfen. ob beide zum selben bzw. änhlichen Ergebnissen führen.
Bei folgenden Test bekomme ich leider immer die Fehlermeldung
Too many input arguments.
Ich hoffe einer von euch kann mir den Grund nennen.
% TESTHET Tests wether heteroskedasticity affects data. Need 'regstats' and 'chi2cdf' (Stat TB).
%
% PVAL = TESTHET(RES, X, WHICHTEST, YHAT) % Inputs: % - Res: residuals obtained by regressing Y on x1, x2 etc...(1) It can be a numeric 'n-by-1' vector or % a 'n-by-p' matrix with 'p' residuals obtained from different regressions. The # of obs. is 'n'. % - X: predictors suspected of causing heteroskedasticity. Not necessarily all those in (1). Same format as % Res. % - Whichtest: test chosen in format string. % a. Breush-Pagan, Koenker modification --> -BPK (Breush-Pagan 1979; Koenker 1981) % b. White --> -W (White 1980b) % c. White, Wooldridge special case --> -Ws (White 1980b; Wooldridge 2006, p.286) % [OPTIONAL] % - Yhat: only for '-Ws' test. Fitted values from (1). Same format as Res.
%
% Output: % A '1-by-p' array with p-values.
%
% EXAMPLE: % 1. Regress Y on x1, x2 --> regstats(Y, [x1 x2], 'linear', {'r', 'yhat'}) % 2. Test with -Ws: % TestHet(r,[x1, x2], '-Ws', yhat)
%
% See also REGSTATS, CHI2CDF, X2FX
% Author: Oleg Komarov (oleg.komarov@hotmail.it) % Date: 11/07/2009 vers. 1.00 - Last modified: --
%
% For general econometric reference: % [1] Greene, W.H. (2003 - 5th ed.) Econometric Analysis. Prentice Hall. % [2] Wooldridge, J.M. (2006 - 3rd ed.). Introductory Econometrics: A Modern Approach. Thomson - South West. % [3] Kennedy, P. (2008 - 6th ed.). A Guide to Econometrics. Blackwell Publishing.
% ------------------------------------------------------------------------------------------------------------ % CHECK part % ------------------------------------------------------------------------------------------------------------
% Ninputs error(nargchk(3,4,nargin)) % Yhat (for White simpified case) ifstrcmp(Whichtest, '-Ws') ifnargin == 3 error('TestHet:YhatMissing','Can''t perform -Ws test without Yhat.') end elseifnargin == 4;
warning('TestHet:InpOverSpec', 'Performing -W test. Yhat not required.') else
Yhat = ones(size(Res,1)); % for check purposes end % Numeric format if ~isnumeric(X) || ~isnumeric(Res) || ~isnumeric(Yhat) error('TestHet:NumericFormat', 'Res, X and Yhat (if specified) must be numeric.') end % Whichtest ifischar(Whichtest) ifall(~strcmp(Whichtest, {'-BPK','-W','-Ws'})) error('TestHet:WhichtestNotAllowed','Whichtest: choose among those allowed.') end else error('TestHet:WhichtestNotString','Whichtest must be a string.') end % Nobservations ifany(diff(cellfun(@(x)size(x,1), {Res,X,Yhat}))) error('TestHet:NumberObservations','Res, X and Yhat (if specified must have the same number of observations') end
% ------------------------------------------------------------------------------------------------------------ % ENGINE part % ------------------------------------------------------------------------------------------------------------
% STEP 1: inputs manipulation % ---------------------------
Res2 = Res.^2; % Squared residuals ifnargin == 4;
Yhat2 = Yhat.^2; % Squared Yhat (for -Ws test only) end
Nseries = size(Res,2); % # of series to test
pVal = NaN(1,Nseries); % Preallocation
switch Whichtest % Specific settings % [-BPK] Breush-Pagan case '-BPK'
df = size(X,2); % degrees of freedom % [-WH] White case '-W'
model = 'quadratic';
% For degrees of freedom don't take the "constant". % Reference on the interaction form : 'x2fx'.
df = size(X,2)*2 + max(cumsum(1:size(X,2))) - size(X,2);
% [-Ws] White special case case '-Ws'
% Degrees of freedom fixed; the terms are always Yhat and Yhat^2.
df = 2;
end
% STEP 3: p-values % ---------------- % [1] LOOP for Nseries for s = 1:Nseries
% [2a] CONDITION if Ws test, 'Regressors' are combined matrixes ifstrcmpi(Whichtest, '-Ws'); Regressors = [Yhat(:,s),Yhat2(:,s)]; end; %[2a] % [2b] CONDITION Regressors+1 must be < Nobserv if df+1 < sum(~isnan(any(Regressors,2)+ Res2(:,s))) % 1. R^2res^2: res^2 on the regression terms
Temp = regstats(Res2(:,s), Regressors, model, {'rsquare'});
% 2. pVal = 1-cdf(LM statistic, df) from a Chi^2 distribution. % Where LM statistic = R^2res^2 * #obs
pVal(1,s) = 1-chi2cdf(Temp.rsquare*nnz(~isnan(Res2(:,s))),df);
end% [2b]
der entscheidende Teil fehlt: wie rufst du die Funktion auf?
Zudem bitte die Code-Umgebung verwenden.
Grüße,
Harald
Smoper
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 16.05.2016, 15:25
Titel:
Hallo Harald,
ich glaube damit triffst du exakt ins Schwarze. Leider weiß ich nicht genau wie ich diese Funktion aufrufen kann, ich dachte bisher immer, dass ich erst alles einpflegen muss, damit ich die Funktion nutzen könnte. Laut deiner Fragestellung scheint dies aber nicht der Fall zu sein. Nach welcher Thematik müsste ich suchen, damit ich mich schlau machen kann?
was meinst du denn mit "einpflegen"? Du musst die 3-4 Argumente definieren und sie dann an die Funktion übergeben.
Am Ende der Doku der Funktion ist ja sogar ein Beispiel angegeben, wie die Funktion aufgerufen werden soll.
Das Tutorial hat sehr geholfen. Eine Frage ist leider geblieben.
Wie kann ich folgenden Part definieren?
- Whichtest: test chosen in format string.
% a. Breush-Pagan, Koenker modification --> -BPK (Breush-Pagan 1979; Koenker 1981)
% b. White --> -W (White 1980b)
% c. White, Wooldridge special case --> -Ws (White 1980b; Wooldridge 2006, p.286)
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
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.