Alternativa regressione lineare

nico87

Forumer storico
Salve qualcuno può indicarmi una valida alternativa alla regressione lineare rimanendo naturalmente nell ambiente econometrico.
La mia necessità è quella di mettere in relazione più variabili.
Grazie
 
Salve qualcuno può indicarmi una valida alternativa alla regressione lineare rimanendo naturalmente nell ambiente econometrico.
La mia necessità è quella di mettere in relazione più variabili.
Grazie
Le alternative sono tante, ma dipende ovviamente dalla tipologia dei dati che hai in mano.

In generale il tuo approccio non può prescindere da una fase preliminare di ispezione visiva; a questa devi naturalmente affiancare alcune ipotesi che hai formulato in precedenza.

Ad esempio supponi di voler mettere in relazione il tasso di inflazione di un Paese con la variazione del prezzo del petrolio e del tasso di cambio vs. USD: da un lato osserverai visivamente il legame tra le singole variabili, dall'altro comincerai a formulare le ipotesi sul tuo modello (ad es. partirai semplicemente con l'ipotizzare che il tasso di inflazione sia dato dalla somma di: variazione del prezzo del petrolio; deprezzamento del tasso di cambio; una costante).

Quando ti accorgi che un modello lineare come quello ha dei limiti nello spiegare la relazione e che "c'è dell'altro", cerchi di aumentarne il potere esplicativo aggiungendo informazione (nuovi dati), manipolando quella attuale (prima ipotizzi, poi sperimenti... non il contrario!) e/o ricorrendo a modelli via via più sofisticati (cioè modelli che riescano a tenere in conto legami tra le variabili di natura non lineare).

Quello che non devi fare ovviamente è:
1. buttare nel tritacarne variabili a casaccio (cioé per le quali non hai bene chiaro nemmeno tu il tipo di legame che dovrebbe esserci);
2. incaponirti nello scomodare modelli sofisticatissimi quando persino una ispezione visiva conferma che in mano hai solo rumore e nessun legame di causalità;
3. manipolare furiosamente i tuoi dati finché non trovi qualcosa che ti soddisfa.
In generale ciò che può funzionare ad esempio in statistica biomedica in finanza fa acqua: infatti se dai un'occhiata alla ricerca prodotta da grossi nomi nell'ambito finanziario ti accorgi che solo nel 5 ~ 10% dei casi gli analisti scomodano modelli più complessi di una semplice regressione lineare per provare le loro intuizioni.

Questo perché generalmente nella ricerca economico-finanziaria vale la regola del pollice che, se hai in mano una relazione causale buona perché solida, allora anche una semplice ispezione visiva è sufficiente a mostrare empiricamente cosa hai trovato; al contrario, non si può spremere sangue dalle rape: se non hai in mano nulla di buono e nessuna ipotesi fondata, passare a modelli complessi ti farà solo buttare del tempo.
 
Ultima modifica:
Le alternative sono tante, ma dipende ovviamente dalla tipologia dei dati che hai in mano.

In generale il tuo approccio non può prescindere da una fase preliminare di ispezione visiva; a questa devi naturalmente affiancare alcune ipotesi che hai formulato in precedenza.

Ad esempio supponi di voler mettere in relazione il tasso di inflazione di un Paese con la variazione del prezzo del petrolio e del tasso di cambio vs. USD: da un lato osserverai visivamente il legame tra le singole variabili, dall'altro comincerai a formulare le ipotesi sul tuo modello (ad es. partirai semplicemente con l'ipotizzare che il tasso di inflazione sia dato dalla somma di: variazione del prezzo del petrolio; deprezzamento del tasso di cambio; una costante).

Quando ti accorgi che un modello lineare come quello ha dei limiti nello spiegare la relazione e che "c'è dell'altro", cerchi di aumentarne il potere esplicativo aggiungendo informazione (nuovi dati), manipolando quella attuale (prima ipotizzi, poi sperimenti... non il contrario!) e/o ricorrendo a modelli via via più sofisticati (cioè modelli che riescano a tenere in conto legami tra le variabili di natura non lineare).

Quello che non devi fare ovviamente è:
1. buttare nel tritacarne variabili a casaccio (cioé per le quali non hai bene chiaro nemmeno tu il tipo di legame che dovrebbe esserci);
2. incaponirti nello scomodare modelli sofisticatissimi quando persino una ispezione visiva conferma che in mano hai solo rumore e nessun legame di causalità;
3. manipolare furiosamente i tuoi dati finché non trovi qualcosa che ti soddisfa.
In generale ciò che può funzionare ad esempio in statistica biomedica in finanza fa acqua: infatti se dai un'occhiata alla ricerca prodotta da grossi nomi nell'ambito finanziario ti accorgi che solo nel 5 ~ 10% dei casi gli analisti scomodano modelli più complessi di una semplice regressione lineare per provare le loro intuizioni.

Questo perché generalmente nella ricerca economico-finanziaria vale la regola del pollice che, se hai in mano una relazione causale buona perché solida, allora anche una semplice ispezione visiva è sufficiente a mostrare empiricamente cosa hai trovato; al contrario, non si può spremere sangue dalle rape: se non hai in mano nulla di buono e nessuna ipotesi fondata, passare a modelli complessi ti farà solo buttare del tempo.



Ti ringrazio, hai descritto egregiamente il concetto di "metodo scientifico" !
Infatti sto utilizzando la regressione con ottimi risultati mi chiedevo però se c'è qualcosa di altrettanto semplice ma con un approccio tecnico diverso.
 
...mi chiedevo però se c'è qualcosa di altrettanto semplice ma con un approccio tecnico diverso.
Come detto, c'è un mare di roba.

Non sono uno statistico né un analista quantitativo, ma sporadiche sortite su Cross Validated mi hanno insegnato alcune cose.

Una delle più interessanti, se non altro per gli involontari e ironici riferimenti al mondo del trading, è che anche nel campo dell'analisi dei dati e della scelta dei modelli... non esistono pasti gratis.

Che significa?

Significa ad esempio che se esistesse il miglior modello in assoluto per fare una regressione probabilmente non ci sarebbe il lavoro per chi invece ha fatto dell'analisi dei dati una scelta di vita, così come se esistesse una strategia in opzioni migliore di tutte verosimilmente il mercato ne annullerebbe i vantaggi con una certa rapidità :D

Lo stesso concetto, visto da una prospettiva più ampia e seria, ci dice che è soprattutto la capacità dell'analista di scegliere il modello giusto per il problema che ha di fronte a fare la differenza; ovvero: reti neurali, SVM (macchine a vettori di supporto), LOESS (regressione locale), Random Forest ("foresta" di alberi decisionali), polinomi di qualsiasi grado e specie etc. etc. ...hanno tutti lo stesso diritto di esistere di fronte ad un problema di regressione: non esiste il migliore di essi in senso assoluto, perchè dipende da cosa hai di fronte e da come pensi di affrontarlo.

Ti riporto una citazione dal medesimo sito che si spinge addirittura oltre:
I've come across a rumour that some study showed that the performance of predictive models depends more on the expertise of the data analyst with the chosen method than on the choice of the method. In other words, the claim is that it is more important that the data analyst is familiar with the chosen method than how "appropriate" the method would seem for the problem from a more theoretical standpoint.
Il che significa che è più importante che tu conosca bene cosa stai usando nel tuo modello e come lo stai usando piuttosto che impazzire alla ricerca del modello più adatto per il tuo problema.

Sinceramente non so se questo sia vero, ma per i profani è una prospettiva a suo modo inquietante :lol:
 
Come detto, c'è un mare di roba.

Non sono uno statistico né un analista quantitativo, ma sporadiche sortite su Cross Validated mi hanno insegnato alcune cose.

Una delle più interessanti, se non altro per gli involontari e ironici riferimenti al mondo del trading, è che anche nel campo dell'analisi dei dati e della scelta dei modelli... non esistono pasti gratis.

Che significa?

Significa ad esempio che se esistesse il miglior modello in assoluto per fare una regressione probabilmente non ci sarebbe il lavoro per chi invece ha fatto dell'analisi dei dati una scelta di vita, così come se esistesse una strategia in opzioni migliore di tutte verosimilmente il mercato ne annullerebbe i vantaggi con una certa rapidità :D

Lo stesso concetto, visto da una prospettiva più ampia e seria, ci dice che è soprattutto la capacità dell'analista di scegliere il modello giusto per il problema che ha di fronte a fare la differenza; ovvero: reti neurali, SVM (macchine a vettori di supporto), LOESS (regressione locale), Random Forest ("foresta" di alberi decisionali), polinomi di qualsiasi grado e specie etc. etc. ...hanno tutti lo stesso diritto di esistere di fronte ad un problema di regressione: non esiste il migliore di essi in senso assoluto, perchè dipende da cosa hai di fronte e da come pensi di affrontarlo.

Ti riporto una citazione dal medesimo sito che si spinge addirittura oltre:

Il che significa che è più importante che tu conosca bene cosa stai usando nel tuo modello e come lo stai usando piuttosto che impazzire alla ricerca del modello più adatto per il tuo problema.

Sinceramente non so se questo sia vero, ma per i profani è una prospettiva a suo modo inquietante :lol:

Ottimo, allora passiamo al tecnico operativo.
Il mio metodo consiste nel rilevare la ciclicità delle variabili che muovo i prezzi dei titoli indici ecc.
una volta ricavata l'ipotetica ciclicità verifico che gli indicatori ricavati abbiano correlazione, cointegrazione, in generale una qualsiasi relazione.
Appurato come ci si aspetta che i p-value sono tutti significativi vado a ricercare un modello econometrico che "fonda" tutte le variabili in un qualche indicatore.

Quindi detto questo quale modello posso sperimentare oltre alla regressione lineare generalizzata o pesata?
 
Il mio metodo consiste nel rilevare la ciclicità delle variabili che muovo i prezzi dei titoli indici ecc.
una volta ricavata l'ipotetica ciclicità verifico che gli indicatori ricavati abbiano correlazione, cointegrazione, in generale una qualsiasi relazione.
Appurato come ci si aspetta che i p-value sono tutti significativi vado a ricercare un modello econometrico che "fonda" tutte le variabili in un qualche indicatore.

Quindi detto questo quale modello posso sperimentare oltre alla regressione lineare generalizzata o pesata?
Mi hai scritto:
nico87 ha scritto:
...hai descritto egregiamente il concetto di "metodo scientifico" !
ma non mi pare che tu stia procedendo con quell'approccio.

Prima di tutto le domande di "base" che costituiscono il fondamento della tua ipotesi:
1. quali sono le variabili che «muovono il prezzo di titoli & indici»?
2. Per quale motivo queste variabili - e non altre - «muovono il prezzo di titoli & indici»?
3. Perché queste variabili dovrebbero avere un comportamento ciclico?​
Senza aver dato risposte valide a queste domande sei ancora molto lontano dal pensare ad un qualche modello.
 
Mi hai scritto:

ma non mi pare che tu stia procedendo con quell'approccio.

Prima di tutto le domande di "base" che costituiscono il fondamento della tua ipotesi:
1. quali sono le variabili che «muovono il prezzo di titoli & indici»?
2. Per quale motivo queste variabili - e non altre - «muovono il prezzo di titoli & indici»?
3. Perché queste variabili dovrebbero avere un comportamento ciclico?​
Senza aver dato risposte valide a queste domande sei ancora molto lontano dal pensare ad un qualche modello.

Molto sinteticamente, la relazione fra i prezzi e le variabili (rendimenti-volatilità-volatilità realizzata-volumi) sono statisticamente significative questo significa che c'è un qualche collegamento. Detto questo dubito che possa arrivare a determinare specificatamente in che modo avviene il tutto altrimenti probabilmente scoprire il reale funzionamento dei mercati.
Il perchè della ciclicità non lo posso conoscere con certezza ma posso ipotizzare che come i prezzi anche queste variabili sono cicliche alla fine i mercati hanno un indubbia ciclicità.
Se queste ipotesi hanno una qualche valenza statistica allora devo provvedere a trovare un modello che possa fornirmi un qualche risultato.
 
Molto sinteticamente, la relazione fra i prezzi e le variabili (rendimenti-volatilità-volatilità realizzata-volumi) sono statisticamente significative questo significa che c'è un qualche collegamento. Detto questo dubito che possa arrivare a determinare specificatamente in che modo avviene il tutto altrimenti probabilmente scoprire il reale funzionamento dei mercati.
Il perchè della ciclicità non lo posso conoscere con certezza ma posso ipotizzare che come i prezzi anche queste variabili sono cicliche alla fine i mercati hanno un indubbia ciclicità.
Se queste ipotesi hanno una qualche valenza statistica allora devo provvedere a trovare un modello che possa fornirmi un qualche risultato.
Quindi sostanzialmente mi stai dicendo che non sei a conoscenza di alcun legame causale né ne stai ipotizzando uno, stai solo incrociando le dita sperando che qualche modello matematico trovi qualcosa al posto tuo.

Questo modo di procedere è abbastanza pericoloso.

Ti faccio un esempio: prova a lanciare il seguente script in R.


install.packages('compiler')
install.packages('DEoptim')
install.packages('PerformanceAnalytics')
install.packages('quantmod')

# +---------------------------------
# | Loading packages
# +---------------------------------

require(compiler)
require(DEoptim)
require(PerformanceAnalytics)
require(quantmod)

# +---------------------------------
# | Downloading and merging some example data
# +---------------------------------

env = new.env()
Symbols = c('VXX', 'SPY', 'TLT', 'GLD')
getSymbols(Symbols, env, from = '1950-01-01')
args = eapply(env, FUN = function(x){Cl(x)})[Symbols]
data_matrix = na.omit(do.call(merge, args))
plot.zoo(data_matrix, log = 'y', main = '')

# +---------------------------------
# | AnalystDigger function
# +---------------------------------

AnalystDigger = cmpfun(function(Symbols, data, min_sample, lag_max, lag_min, itermax, first_diff)
{
fn = cmpfun(function(x)
{
n = round(x[1])
k = round(x[2])
i = round(x[3])
j = round(x[4])

if(i == j)
{
R2 = -Inf​
}
else
{
y = tail(data[,i], n)
x = tail(data[,j], n)
R2 = summary(lm(y ~ lag(x, k)))$adj.r.squared​
}

return(-R2)​
})

lower = c(min_sample, lag_min, 1, 1)
upper = c(nrow(data), lag_max, ncol(data), ncol(data))
control = DEoptim.control(strategy = 6, itermax = itermax)
opt = DEoptim(fn, lower, upper, control = control)
pars = round(opt$optim$bestmem)
names(pars) = c('Sample size (last obs.)', 'Lag', 'y data column', 'x data column')
print(pars)
print(paste("R-squared =", round(-opt$optim$bestval, 2)))

chart.Regression(tail(data[,pars[3]], pars[1]), tail(lag(data[,pars[4]], k = pars[2]), pars[1]), fit = 'linear', ylab = Symbols[pars[3]], xlab = paste(Symbols[pars[4]], ', lag = ', pars[2], sep = ''), main = '', type = 'o')
object = lm(tail(data[,pars[3]], pars[1]) ~ tail(lag(data[,pars[4]], k = pars[2]), pars[1]))
coeffs = coef(object)
model = as.xts(fitted(object))

tBS = timeBasedSeq(paste(last(index(model)) + 1, '/', last(index(model)) + pars[2], sep = ''))
extended_model = xts(coeffs[1] + coeffs[2] * tail(data[,pars[4]], pars[2]), tBS)

if(first_diff)
{
chart.CumReturns(merge(rbind(model, extended_model), data[,pars[3]], data[,pars[4]]), main = '')​
}
else
{
plot.xts(rbind(model, extended_model), main = '', log = 'y', ylim = c(min(model, tail(data[,pars[3]], pars[1]), tail(data[,pars[4]], pars[1])), max(model, tail(data[,pars[3]], pars[1]), tail(data[,pars[4]], pars[1]))))
lines(data[,pars[3]], col = 2, lwd = 2)
lines(data[,pars[4]], col = 3, lwd = 2)​
}


legend('topleft', legend = c('Fitted model', Symbols[pars[3]], Symbols[pars[4]]), col = 1:3, lwd = c(1,2,2), bty = 'n')

output = merge(rbind(model, extended_model), data[,pars[3]], data[,pars[4]])
colnames(output) = c('Fitted model', Symbols[pars[3]], Symbols[pars[4]])

return(output)​
})

# +---------------------------------
# | Example
# +---------------------------------

AnalystDigger(Symbols, data_matrix, 120, 60, 20, 200, FALSE)

Quello che vedrai lanciandolo oggi 26-apr è che negli ultimi 424 giorni il range di prezzo del GLD (ETF sull'oro in dollari) di 22 giorni prima ha predetto quasi tutta la varianza dei prezzi dello SPY (ETF sullo S&P 500 in dollari) di 22 giorni dopo: relazione statisticamente significativa e coefficiente di bontà di adattamento 0.85 (altissimo).

A dimostrazione ti allego anche due immagini: una in cui vedi il procedere dei residui attorno alla retta di regressione e una in cui vedi l'aderenza del modello al mercato.

Domanda: pensi che il prezzo di 22 giorni prima del GLD possa veramente avere qualche potere previsionale sul prezzo dello SPY di 22 giorni dopo?

La cosa se vuoi divertente è che cambiando le serie storiche in ingresso (io ho preso casualmente VXX, SPY, TLT e GLD) il codice ti troverà sempre qualcosa che apparentemente ha potere previsionale secondo un modello di regressione OLS, anche se ci metti dentro il numero di piume del tacchino del vicino e il tasso di interesse sui mutui in Malesia :D
_________________________________

Dopo questo lunghissimo preambolo, facciamo finta che tu abbia veramente in mano qualcosa di causale (e non casuale); prima di cambiare modello, ovvero di arricchire la relazione che hai ipotizzato con elementi di non linearità, solitamente si procede in due direzioni:
1. inclusione di variabili di controllo per appurare che i legami che hai individuato mantengano significatività statistica;
2. inclusione di variabili dummy per eliminare o evidenziare l'effetto di eventi particolari che ritieni possano aver avuto un impatto sulle relazioni che hai ipotizzato.​
Nota che per il momento il modello resta una regressione lineare, ma cerchi di stressarne il potere esplicativo.
 

Allegati

  • Rplot.png
    Rplot.png
    9,4 KB · Visite: 669
  • Rplot01.png
    Rplot01.png
    9,6 KB · Visite: 626
Ultima modifica:
Crengi,

Come caz.... l'hai trovato quell'esempio?
L'ho scritto io: è uno script farsa che ho realizzato per prendere un po' in giro in modo molto sottile alcuni analisti che avevano l'abitudine di mettere in regressione qualsiasi cosa capitasse loro a tiro e spiattellarne il R² :D

Allora ho scritto una cosa che, variando tutto il possibile inclusa la dimensione del campione, tirasse sempre fuori da mele, pere & arance il più alto R² indipendentemente da quello che gli passi dentro, relazioni spurie, stazionarietà etc. etc. :lol:

A 'sto giro mi è venuto in mente perchè si parlava di regressione e l'ho tirato fuori dal cilindro.
 

Users who are viewing this thread

Back
Alto