Amélioration de mon modèle prédictif du nombre de membres


#1

Bonjour à tous,
Dernièrement Galuel a lancé sur fb un petit défis que j’ai relevé concernant des prévisions sur le nombre de membres à partir de la courbe d’évolution. J’ai commencé il y a quelques semaines à construire ce modèle prédictif sur mon tableur (libre!:)) et pour la petite histoire j’ai commencé à l’imaginer le jour où j’avais vu une prédiction du nombre de membres de l’ordre de 50000 en 2045 ce qui m’avait paru assez tiré par les cheveux… bref… Afin d’être le plus précis possible j’aurais besoin d’avoir accès à la table du nombre de membre au jour le jour, celle qui sert par exemple à construire la courbe sur Cesium. Quelqu’un pourrait m’aider svp?
Bert


#2

Tu pourrais te rapprocher des travaux de @gerard94 qui a déjà lui aussi avancé sur un modèle, en cherchant ses posts sur le forum associé au mots clés “modèle” “membres” “évolution” ou équivalent tu pourras trouver ce qu’il a déjà fait et voir avec lui comment il a fait.

De manière générale il est toujours intéressant de voir ce qui existe concernant un sujet, ce qui peut éviter de refaire un truc déjà fait, ou bien de s’inspirer du déjà fait pour tenter de faire mieux ou autrement.


#3

Excellente idée


#4

Bonjour,

Oui, j’ai écrit un petit programme, dérivé de WotWizard, qui permet de sortir le nombre de membres en fonction du nombre de jours depuis le démarrage de la june. Aujourd’hui, il donne ceci :

0    59
1    59
2    59
3    59
4    59
5    62
6    62
7    62
8    62
9    62
10    64
11    65
12    65
13    65
14    65
15    68
16    68
17    68
18    68
19    68
20    69
21    70
22    70
23    70
24    70
25    72
26    73
27    73
28    73
29    73
30    75
31    76
32    76
33    78
34    78
35    79
36    79
37    79
38    83
39    83
40    85
41    85
42    85
43    88
44    88
45    89
46    89
47    89
48    93
49    93
50    95
51    95
52    95
53    98
54    99
55    101
56    102
57    102
58    105
59    106
60    109
61    109
62    109
63    113
64    113
65    113
66    113
67    113
68    117
69    117
70    118
71    118
72    118
73    123
74    124
75    125
76    126
77    126
78    130
79    130
80    131
81    131
82    131
83    135
84    136
85    138
86    138
87    138
88    141
89    142
90    143
91    143
92    143
93    148
94    148
95    149
96    151
97    151
98    154
99    154
100    154
101    156
102    156
103    161
104    161
105    163
106    165
107    165
108    168
109    168
110    170
111    173
112    173
113    174
114    174
115    174
116    177
117    178
118    181
119    181
120    181
121    182
122    182
123    185
124    185
125    186
126    188
127    189
128    191
129    192
130    193
131    195
132    196
133    199
134    199
135    201
136    202
137    203
138    206
139    206
140    207
141    208
142    209
143    214
144    214
145    216
146    218
147    220
148    225
149    225
150    225
151    226
152    227
153    232
154    232
155    233
156    234
157    235
158    240
159    240
160    241
161    241
162    243
163    247
164    247
165    250
166    251
167    252
168    256
169    256
170    257
171    261
172    262
173    265
174    266
175    266
176    269
177    270
178    273
179    274
180    275
181    276
182    276
183    280
184    280
185    280
186    280
187    282
188    286
189    287
190    290
191    290
192    292
193    298
194    300
195    303
196    304
197    305
198    307
199    309
200    310
201    312
202    314
203    315
204    318
205    319
206    322
207    323
208    325
209    330
210    331
211    331
212    331
213    333
214    336
215    338
216    339
217    342
218    344
219    351
220    351
221    351
222    353
223    356
224    361
225    366
226    367
227    368
228    371
229    376
230    381
231    382
232    383
233    386
234    388
235    395
236    396
237    397
238    400
239    402
240    409
241    410
242    410
243    414
244    414
245    418
246    420
247    420
248    427
249    427
250    431
251    433
252    434
253    438
254    438
255    444
256    446
257    448
258    451
259    452
260    459
261    461
262    462
263    464
264    466
265    470
266    474
267    477
268    479
269    483
270    491
271    493
272    493
273    493
274    498
275    507
276    509
277    509
278    510
279    516
280    520
281    522
282    523
283    524
284    527
285    531
286    534

Ce programme, comme WotWizard, est écrit en Component Pascal (sous Windows, ou, sous Linux, avec Wine) et nécessite la présence d’un noeud Duniter sur le même poste pour fonctionner. Si tu es intéressé, je peux te fournir le source et t’expliquer comment l’installer.


#5

Salut Gérard,
Tout d’abord merci pour ta réponse rapide et pour le tableau. Je suis bien sûr très intéressé pour avoir tes explications. Ensuite je peux te montrer ce que j’ai fait dans mon modèle prédictif mais je pense qu’il est moins complet que le tien.
À+
Bert


#6

Resalut Gérard,
En analysant tes chiffres je me rends compte que pour le jour 286 qui est le 19 décembre (le jour de mes 40 ans = ev/2… bref…) nous étions 529 (cf: https://g1.duniter.fr/#/app/currency/stats/lg) et non 534 comme indiqué dans ta table… y a un bug dans le pâté…


#7

@gerard94 tu pourrais poster ton modèle en mode prédictif ici ? Cela aidera sans doute nos Ğchatons à relativiser un peu la notion de modèle :slight_smile:


#8

@bert31 cela dépend a quel heure de la journée tu fait le relevé, mon module monit indique 532 membres au 19 décembre et je sais qu’il n’y a aucun bug : https://g1-monit.elois.org/membersCount?lg=fr&begin=0&end=0&step=1&stepUnit=days&nbMaxPoints=400&adaptMaxPoints=begin&pow=yes

Dans mon cas je considère le nombre de membres a la fin de la journée, c’est à dire lors du 1er bloc du jours suivant. @kimamila dans Cesium fait différemment et @gerard94 probablement encore différemment d’où les écarts :wink:


#9

Je confirme ce que dit @elois. Je fais partir mes mesures du début de la Ğ1 (08/03/2017 15:32:07), en regroupant par 24h. Je ne pense pas qu’il y ait d’erreur, vu que je retombe toujours sur le total affiché par Duniter.
@Galuel : Je n’ai pas de compte facebook, et n’en créerai pas pour l’occasion. Je compte publier bientôt un graphique, que tu pourras recopier si tu veux.
@bert31 : Je suis intéressé par ton modèle, bien sûr, je trouve que mettre des courbes sur des points est un jeu fascinant. Toutefois, je ne crois pas que l’on puisse tirer de vrais prédictions à long terme. Pour ce qui est du logiciel, je t’enverrai les sources et les explications bientôt.


#10

Oui la mesure, pour être précise, doit spécifier le dernier n°de bloc auquel elle fait référence, lequel bloc étant généré toutes les 5 minutes, cela signifie qu’une telle mesure doit indiquer l’heure à 5 minutes près qui lui correspond.

Ex : 19/12/2017 15h:32:07 - bloc #79106 - nombre de membres de la TdC Ğ1: 532


#11

Oui, bien sûr. Mais dans mon cas, je n’en avais pas besoin, c’était juste pour tracer la courbe. Si besoin était, je pourrais afficher ces informations.


#12

J’adore lire ce genre de choses :smiley:

Amis matheux, merci d’avance pour ce que vous pourriez produire à propos de la Ğ1, sachez que bien sûr les développeurs suivent tout cela avec un grand intérêt ! (même s’ils ne disent rien)


#13

Oui, Cesium utilise le bloc journalier qui produit le DU. Ainsi, le graph a le même pas de temps et référence de temps que le graphique sur la masse monétaire.


#14

Salut @gerard94 ! Je suis super intéressé par ton programme ! Est-ce que tu pourrais me transmettre le code source et les explications d’installation ? :blush:

J’ai commencé à travailler moi aussi sur mon propre modèle, j’espère pouvoir bosser beaucoup plus dessus une fois les fêtes passées et vous présenter ça dans les premières semaines de janvier. En attendant, @bert31, @gerard94, je suis vos développements avec passion. :wink:


#15

https://forum.duniter.org/t/sortie-de-la-version-2-0-de-wotwizard/3744

https://github.com/duniter/WotWizard


#16

Je fournirai code et explications dans la semaine. Ce sera mon cadeau de fin d’année :wink:


#17

Merci Père Noël Gérard, j’ai posé mes petits soulier à côté de mon PC et j’attends avec impatience la marche à suivre! Joyeux Noël à tout le monde!


#18

Pour ceux qui veullent avoir l’évolution du nombre de membre avec le temps :

  • Obtenir un fichier duniter.db à jour (en suivant le lien ou via votre noeud local)
  • Utiliser sqliteBrowser (librement téléchargeable) ou autre programme pour extraire les info que vous souhaitez de la base de donnée duniter.db.

Exemple de requêtes permétant de créer des vues spécialisé pour obtenir l’évolution quotidienne du nombre de membre :

drop view if exists memberCountEvolutionFlavorDU;
create view memberCountEvolutionFlavorDU
	as select distinct
		cast (round((time - (select time from block where number=0)) /(24*3600.0)) as int) as daySinceLaunch,
		number as blockNumber,
		strftime('%d/%m/%Y', datetime(time, 'unixepoch')) as date,
		strftime('%H:%M:%S', datetime(time, 'unixepoch')) as horaire,
		membersCount
	from block
	where dividend is not null
	order by blockNumber asc
	;

drop view if exists memberCountEvolutionFlavorMidNight;
create view memberCountEvolutionFlavorMidNight
	as select distinct
		(time - strftime('%s',strftime('%Y-%m-%d 00:00:00', datetime((select time from block where number=0), 'unixepoch')))) /(24*3600) as daySinceLaunch,
		number as blockNumber,
		strftime('%d/%m/%Y', datetime(time, 'unixepoch')) as date,
		strftime('%H:%M:%S', datetime(time, 'unixepoch')) as horaire,
		membersCount
	from block
	group by date
	HAVING MIN(ROWID)
	order by blockNumber asc
	;

Il ne vous reste plus qu’a demander select * from memberCountEvolutionFlavorDU pour afficher le comptage façon Cesium, ou select * from memberCountEvolutionFlavorMidNight pour l’afficher le nombre de membre au premier block passé minuit.

PS : depuis les vues crées il est possible d’exporter en csv pour s’en servir dans un tableur, et ces vue s’actualiserons toutes seule si le duniter.db utilisé est celui d’un noeud actif, donc il suffit de refaire des exports csv ou de générer une vue en requêtant directement dessus.


#19

Et pour les flémards via ces quelques lignes exécutées quotidiennement avec la CI de duniter-mycelia-view voici l’historique d’évolution du nombre de membres actualisé chaque jour :

  • au moment du DU (façon Cesium) json, csv, html
  • au premier bloc passé minuit (façon Monit) json, csv, html

#20

Voila, j’ai publié plusieurs de mes outils sur Github (https://github.com/duniter/WotWizard), dont l’affichage du nombre de membres jour par jour. C’est la version 2.1 (https://github.com/duniter/WotWizard/releases). Il suffit de copier l’exécutable dans un répertoire vide, puis d’y ajouter le fichier sqlite3.dll (https://www.sqlite.org/2015/sqlite-dll-win32-x86-3081002.zip). Lancer WotWizard.exe directement dans Windows, ou avec Wine dans Linux.
Attention :

  • un noeud Duniter doit tourner sur le même poste ;
  • la base de données de Duniter doit être accessible ; vérifier avec la commande “Édition->Changer la base de données Duniter” ;
  • Wotwizard crée sa propre base de données Duniter/DBase.data ; cette création peut prendre un temps assez long au démarrage ;
  • ne pas réutiliser un fichier DBase.data d’une version précédente, le format a changé.