Partage
  • Partager sur Facebook
  • Partager sur Twitter

REGRESSION NON LINEAIRE

urgent!!

25 février 2019 à 11:12:10

Bonjour,

je dispose du modèle mathématique suivant:

y= b1*x(^-3/2) +  b1*x(^-2) +  b2*x(^-2.5) +  b3*x(^-3) +  b4*x(^-3.5) +  b5*x(^-4).

et des points de mesures suivants:

pourriez-vous svp m'aider à trouver les paramètres b0,b1,.... sachant que j'ai essayé avec les moindres carrés mais ça a pas donné un bon résultat notamment en extrapolation car c'est un modèle prédictif. il me faut une méthode beaucoup plus sophistiquée.


merci d'avance!

x

y

5

3.370

6

3.025

7

2.736

8

2.487

9

2.288

10

2.104

11

1.966

12

1.824

13

1.679

14

1.573

15

1.479

20

1.08

21

1.04

22

0.986

23

0.921

24

0.871

26

0.814

28

0.750

30

0.690

36

0.580

40

0.523

44

0.482

60

0.360

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  • Partager sur Facebook
  • Partager sur Twitter

helloworld

25 février 2019 à 14:21:23

Salut,

chez moi, les moindres carrés fonctionnent donnent un résultat qui me semble bon. Voici le code que j'exécute en Python :

import numpy as np
import matplotlib.pyplot as plt
from scipy.linalg import solve

x = [5., 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 24, 26, 
   28, 30, 36, 40, 44, 60]
y = [3.37, 3.025, 2.736, 2.487, 2.288, 2.104, 1.966, 1.824, 1.679, 1.573, 
     1.479, 1.08, 1.04, 0.986, 0.921, 0.871, 0.814, 0.75, 0.69, 0.58, 0.523, 
     0.482, 0.36]

x = np.array(x).reshape((-1, 1))
y = np.array(y).reshape((-1, 1))

A = np.concatenate((x**(-3/2), x**(-2), x**(-5/2), x**(-3), 
                    x**(-7/2), x**(-4)), axis=1)
b   = np.dot(A.T, y)
Als = np.dot(A.T, A)
coefs = solve(Als, b)
y_interp = np.sum(coefs.T * A, axis=1)
plt.figure()
plt.loglog(x, y, 'og')
plt.loglog(x, y_interp, 'r-')
plt.legend(["Mesure", "Interpolation"])
plt.show()

Le fit n'est pas assez bon pour toi ?

-
Edité par Nozio 25 février 2019 à 14:24:58

  • Partager sur Facebook
  • Partager sur Twitter

Avez-vous entendu parler de Julia ? Laissez-vous tenter ...

25 février 2019 à 14:31:19

merci pour la réponse,

juste comme j'ai pas python sur mon pc maintenant, est-ce que c'est possible de me filer les paramètres b0,b1....pour les essayer sur mes données sur excel?

  • Partager sur Facebook
  • Partager sur Twitter

helloworld

25 février 2019 à 14:38:33

Dans l'ordre, j'ai

[[    802.44057809]
 [ -10698.4336568 ]
 [  67181.02536776]
 [-214685.68336722]
 [ 337553.52207377]
 [-207762.21944385]]



  • Partager sur Facebook
  • Partager sur Twitter

Avez-vous entendu parler de Julia ? Laissez-vous tenter ...

25 février 2019 à 14:54:15

génial!

merci beaucoup, ça fonctionne super bien!

merci une autre fois,

  • Partager sur Facebook
  • Partager sur Twitter

helloworld