[C] Parametro con valore atteso uguale a zero

Messaggioda bad.alex » 12/10/2017, 12:51

Ciao ragazzi.
Come da titolo, desideravo chiedervi come calcolare un parametro (casuale) il cui valore atteso sia uguale a zero.
Probabilmente sarà una domanda banale, ma al momento non mi viene nulla in mente, se non utilizzare rand() in un intervallo ben definito.
Ho provato a svolgere in questo modo:
Codice:
       

sum=0.;

while(i<t){

       gamma=rand()/(RAND_MAX);
        sum+=gamma;
}

mean=sum/(double)t;



Qualora volessi considerare l'intervallo [-1,+1], lo calcolerei invece con
Codice:
 gamma=2.*((double)(rand()/(double)RAND_MAX))-1.0;
. Tuttavia, il valore atteso non risulta essere 0. :(

Spero possiate aiutarmi.

Grazie :wink:
bad.alex
Senior Member
Senior Member
 
Messaggio: 1100 di 1283
Iscritto il: 10/01/2007, 19:01

Re: [C] Parametro con valore atteso uguale a zero

Messaggioda kobeilprofeta » 12/10/2017, 15:22

Ciao.
La seguente funzione genera un numero double tra a e b.
Codice:
double double_casuale (double a, double b) {
  double x;
  x=(double) rand(); /*x sta tra 0 e RAND_MAX*/
  x=x/RAND_MAX; /*x sta tra 0 e 1*/
  x*=(b-a); /*x sta tra 0 e b-a*/
  x+=a; /*x sta tra a e b*/
}

Ora puoi usarla per generare numeri tra -1 e 1 oppure tra -k e k.
Ognuno di questi numeri sarà casuale con valore atteso nullo. Se ne generi n, anche la loro somma sarà casuale con valore atteso nullo.
kobeilprofeta
Cannot live without
Cannot live without
 
Messaggio: 2525 di 5262
Iscritto il: 24/09/2012, 18:25

Re: [C] Parametro con valore atteso uguale a zero

Messaggioda bad.alex » 12/10/2017, 15:48

Ti ringrazio tantissimo, kobeilprofeta! Proverò subito ad utilizzarla ;)

EDIT: Mi restituisce: mean: 0.023213 var: 0.202919. Sbaglio qualcosa? :? Ho inserito come a=-1 e come b=+1, ritornando x dalla funzione..
bad.alex
Senior Member
Senior Member
 
Messaggio: 1101 di 1283
Iscritto il: 10/01/2007, 19:01

Re: [C] Parametro con valore atteso uguale a zero

Messaggioda apatriarca » 12/10/2017, 16:26

Il risultato non sarà mai esattamente zero.. Dopotutto stai stimando la media a partire da un numero limitato di valori. Con l'aumentare dei valori la media dovrebbe avvicinarsi sempre di più a zero.

Il generatore di numeri casuali nel C non ha comunque caratteristiche particolarmente buone dal punto di vista statistico..
apatriarca
Moderatore
Moderatore
 
Messaggio: 4855 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [C] Parametro con valore atteso uguale a zero

Messaggioda kobeilprofeta » 12/10/2017, 16:27

Posta tutto il codice.
kobeilprofeta
Cannot live without
Cannot live without
 
Messaggio: 2526 di 5262
Iscritto il: 24/09/2012, 18:25

Re: [C] Parametro con valore atteso uguale a zero

Messaggioda bad.alex » 12/10/2017, 16:54

Vi ringrazio per le risposte e per l'aiuto. Postare tutto il codice risulterebbe complicato in quanto è molto lungo.
La parte di codice che sto utilizzando è:

Codice:
        gamma=double casuale(0, 0.5);


Con l'intervallo [-1,1] ho avuto qualche problema per via di alcuni valori negativi privi di significato :lol:
Il valore di gamma, però, risulta essere indipendente dal resto, in quanto lo sto considerando come un termine di errore la cui media sia nulla. I valori che ottengo nelle varia simulazioni mi restituiscono i seguenti valori:

Codice:
Simulation n. 0
mean: 0.089120 var: 0.173448

Simulation n. 1
mean: 0.095981 var: 0.180343

Simulation n. 2
mean: 0.099322 var: 0.183633

Simulation n. 3
mean: 0.101221 var: 0.185073

Simulation n. 4
mean: 0.107695 var: 0.190167

Simulation n. 5
mean: 0.119018 var: 0.199608

Simulation n. 6
mean: 0.111448 var: 0.193786

Simulation n. 7
mean: 0.112169 var: 0.194510

Simulation n. 8
mean: 0.105887 var: 0.188843

Simulation n. 9
mean: 0.114680 var: 0.196293


Potrebbero essere 'accettabili'?
L'equazione per cui sto calcolando gamma è:

$a(t)=a(t-1)+gamma$
bad.alex
Senior Member
Senior Member
 
Messaggio: 1102 di 1283
Iscritto il: 10/01/2007, 19:01

Re: [C] Parametro con valore atteso uguale a zero

Messaggioda apatriarca » 12/10/2017, 17:06

Ma la media che desideri quale è? Se hai solo numeri positivi non avrai mai una media nulla a meno di avere solo zeri. Che cosa fa la funzione casuale?
apatriarca
Moderatore
Moderatore
 
Messaggio: 4856 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: [C] Parametro con valore atteso uguale a zero

Messaggioda bad.alex » 12/10/2017, 17:12

In realtà io mi aspetto di trovare "an error term with expected value of zero" (dall'articolo che sto prendendo in riferimento). Da qui la media nulla. La funzione casuale proposta da kobeilprofeta mi serve ad attribuire un valore casuale al termine di errore gamma. La variabile a(t), in questo modo, può assumere dei valori che includono una piccola percentuale di errore. E, in teoria, potrebbero(anzi, dovrebbero) generare anche dei valori di a(t) negativi. Probabilmente speravo di ottenere medie nulle, con valori casuali generati da double_casuale senza che gamma avesse sempre valore nullo ... Ma solo ora mi sono reso conto che non è realizzabile.
bad.alex
Senior Member
Senior Member
 
Messaggio: 1103 di 1283
Iscritto il: 10/01/2007, 19:01


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite