Poster un nouveau sujet Poster une réponse
Moindres Carrés
Auteur Message
Indigo
Invité
Posté le : Mar 14 Aoû 2012, 14:41   Citer 

Bonjour,
je dois régulièrement faire des calculs de régression linéaire et je dois alors fournir un certains nombre de données fatigantes à calculer ou à trouver dans ma ti-82 stat. Par exemple l'écart type des résidus, celui sur l'abscisse et l'ordonnée, leurs encadrements aux niveaux de confiance de 95 ou 99% le plus souvent ou encore l'écart type de la valeur mesurée grâce à l'équation de régression. Auriez-vous un programme "sous le coude" qui centraliserait et/ou calculerait ces valeurs?? Ou des idées sachant que je n'ai peut être pas exploré correctement ma calculatrice et que je ne sais pas du tout programmer...? notgood.gif
Merci!

  Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 14 Aoû 2012, 17:38   Citer 

La ti82stat est cappable d'effectuer la régression et d'en obtenir immédiatement le coefficient de régression ainsi que la liste des résidus.
D'autre part elle sait en calculer la variance et un grand nombre de choses que je n'ai pas essayé d'apprendre.
Je ne sais pas me servir d'autre chose que les régressions et des graphiques, et je ne pratique pas de statistiques à ce niveau (moindres carrés...connais pas)

Les résidus sont toujours stockés dans lRESID, disponible dans le menu liste(2nde+stat)).
Si elle n'est pas dans la liste il faut saisir manuellement son nom avec le préfixe "l" du menu 2nde+stat+droite+haut.

J'ai supposé que les équations calculées sont toujours de parfaites réciproques, ce qui n'est pas nécessairement le cas selon les approximations.
Cela facilite le travail de commander deux modèles réciproques plutôt que de calculer la réciproque d'un premier modèle.

Pour afficher les premiers résultats du modèle dans l'écran principal, il suffit de saisir le code suivant :

Code
DiagnosticOn // permet l'affichage automatique des coefficients de régression
LinReg(ax+b) L1,L2,Y1  // Y1 sert à stocker l'équation de la courbe modèle
lRESID // résidu de y par rapport à f(x)
stdDev(lRESID // écart-type
LinReg(ax+b) L2,L1,Y2
lRESID // résidu de x par rapport à g(y)
stdDev(lRESID

Mais pour effectuer les mêmes opérations dans un programme, il faut recourir au menu var. C'est plus lourd mais on ne s'embête à le saisir qu'une seule fois.

Code
LinReg(ax+b) L1,L2,Y1  //les résultats ne sont pas affichés dans un prog
Disp a,b,r,r²  // ces variables sont dans var+5+droite+droite
Pause lRESID
Pause stdDev(lRESID
LinReg(ax+b) L2,L1,Y2
Disp a,b,r,r²
Pause lRESID
Pause stdDev(lRESID

Les intervalles de confiance se calculent avec le menu stat/TInterval (d'après le manuel).

Pour comparer graphiquement liste et modèle, active un graphe statistique et paramètre le en xyLine et L2=f(L1)
Tout est dans le menu [2nde]+[y=f(X)].
Enfin utilise zoom/ZoomStat pour cadrer la fenêtre si elle ne convient pas.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
indigo
Invité
Posté le : Sam 08 Sep 2012, 19:13   Citer 

Merci pour la réponse si rapide et désolée pour la mienne si tardive. Vacances obligent... tongue.gif
J'ai bidouillé un programme (pas joli joli mais bon tant que ça marche) qui me donne grosso modo tout ce que je veux mais j'ai un petit problème sur un truc.
J'aimerais qu'une des opérations soit facultative et dépende de si oui ou non une des listes est remplie. J'ai essayé avec :
if dim(liste>=1) [j'ai fixé L3 comme liste]
then ...etc
ce qui marche très bien pour le cas où la liste est remplie mais pas pour le cas où elle ne l'est pas et j'ai le droit à un joli invalid dim...
Une idée?
Merci

  Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Sam 08 Sep 2012, 20:14   Citer 

Normal happy.gif

Si ta liste n'existe pas alors elle n'a pas de dimension. (la dimension n'est pas considérée comme égale à 0, elle n'est PAS considérée, si tu vois ce que je veux dire).

Remplace :

If Dim(L3>=1

Par :

If L3
Then
Etc ...


Ainsi, si L3 existe, les instructions suivantes seront utilisées, sinon ... non winkle.gif

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Sam 08 Sep 2012, 20:37   Citer 


Citer : The K
Remplace :

If Dim(L3>=1

Par :

If L3
Then
Etc ...


Ainsi, si L3 existe, les instructions suivantes seront utilisées, sinon ... non winkle.gif

L3 est une liste et If attend un nombre, donc il y a une erreur DataType ; il faudrait à la rigueur écrire "If L3(1)"
If X ne signifie pas "si X existe" mais "si X différent de zéro" : il est impossible d'évaluer l'existence de variables autres que les nombres réels.

Ne pas confondre l'existence d'une variable (en particulier liste) avec la dimmension d'une liste. (erreurs Undefined ou InvalidDim)

A partir de la TI83plus il devient possible d'évaluer la dimension NULLE d'une liste vide (mais existante). C'est impossible de le faire dans une TI82stat.

Le moyen alternatif que j'ai trouvé pour qu'un programme se débrouille avec une liste personalisée sans intervention manuelle suit le schéma suivant (valable sur toutes les Z80 et pour toute liste).
Malheureusement il n'est pas valable pour des données générées par un autre programmes ou quoi que ce soit dans un autre format de données.

Citer
// préparer la liste au début du programme
N->dim(Liste // N est souvent le nombre maximal possible de données +1

// vérifier existence de données
If Liste(1
Then
...
End

// stockage de données
{1,a,b,c,d ... ->Liste // on peut utiliser d'autres fonctions, mais réservez toujours la case du début à laquelle on associe 1 pour pouvoir détecter la présence de données.

// suppression
Si la liste est une des six listes de base, alors on écrira :
EffListe Liste
Si la liste est une liste personalisée, alors : EffVar Liste



----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Dim 09 Sep 2012, 12:45   Citer 


Citer
A partir de la TI83plus



Ok noté ^^' Sorry !

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 09 Sep 2012, 12:48   Citer 

Ne t'en fait pas, c'est Sandro qui m'a appris cela. Moi non plus je ne l'ai pas trouvé tout seul. winkle.gif

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
indigo
Invité
Posté le : Dim 09 Sep 2012, 13:13   Citer 

Effectivement, le programme ne bug plus mais il ne me donne plus le bon résultat pour le cas où je rentre des valeurs dans ma liste. En effet, le calcul qui suit prend en compte la dimension de ma liste or si je fixe arbitrairement le nombre max de données dans la liste et qu'il est différent de celui réel dont j'ai eu besoin, ça fausse tout. Je suis alors obligée de corriger à chaque fois le nombre de valeurs max dans le programme, ce qui est presque plus fastidieux de faire quit quand ça bug... Je na sais pas si c'est parce que je n'ai pas tout compris au code ou simplement que ça ne peut pas être autrement mais en tout cas merci pour vos réponses. happy.gif

  Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 09 Sep 2012, 14:14   Citer 

Tu peux poster ton code actuel afin que nous voyions exactement ce que tu veux faire.
Nous pourrions trouver une solution plus adaptée que celle que j'ai proposée.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
indigo
Invité
Posté le : Dim 09 Sep 2012, 16:01   Citer 

En fait, comme je l'avais dit dans mon 1er post, mon programme centralise une partie des données déjà calculée par ma ti, le reste ce sont des formules que j'ai entré à la main. Le problème c'est qu'il y en a un certain nombre et que le plus simple serait que je scanne le formulaire sur lequel je m'appuie mais je n'ai pas de scanner... cry.gif
Je mets quand même la partie du code qui bug mais comme ça fait appelle à des valeurs précédemment calculées, je sais pas si ça va vraiment vous parler ou si c'est utile parce que la solution serait peut être justement dans le reste du code... Et tout réecrire serait trop long.

Code
If dim(L3>=1
Then
mean(L3)->M
(s/A)racine((dim(L3))-1+dim(L1))-1+((M-xbarre)²/N))->T
Output...


Sachant que :
s est l'écart type des résidus que l'on obtient en faisant LinRegTTest.
A le coeff directeur (que j'ai recalculé mais qui est strictement le même que celui de la calculatrice)
xbarre la valeur moyenne de L1
N est Sxx soit (somme des x²)-((somme des x )²/dim(L1))

Et que cette partie ne s'applique qu'au cas où (pour ceux à qui ça parle) je veux avoir l'écart type d'une valeur x déterminée à partir de l'équation de régression précédemment obtenue. Cette valeur peut avoir été déterminée par 1 ou en faisant la moyenne sur plusieurs mesures (qui correspondent aux valeurs de L3) ce qui augmente la certitude sur x et réduit l'écart type, d'où l'importance de la dimension de L3.

J'ai quand même trouvé un document où la plupart des formules que j'ai utilisé sont recensées (fin page 8 - 9), dont le Sxx ce qui sera peut être plus clair que ma formule, mais évidemment pas celle qui m'intéresse ici... crazy.gif
http://www.utc.fr/~avalle/dossiers-pdf/Incertitudes-version2002.PDF

Si vous voulez vous pencher sur le problème vous êtes les bienvenus mais je peux tout à fait comprendre que vous capituliez, l'intérêt pour vous n'étant que faible. moodforlove.gif

  Haut de page Bas de page 
 
The K



Autorisation : Membre
Nb de messages : 850
Inscrit le : Sam 15 Oct 2011, 11:07
Posté le : Dim 09 Sep 2012, 16:49   Citer 

Moi je capitule t'inquiètes pas ^^

(en plus je sais même pas comment faire des régressions ... remarque, je n'en ai pas l'utilité !)

Mais Linkakro devrait pouvoir te répondre.

----------------------
La la la ...

Avez-vous pensé à regarder le manuel avant de demander conseil ? Un manuel est fait avant tout pour être consulté : MANUEL

Vous avez un problème avec l'ordinateur avec votre calculatrice ? SOLUTION EN VIDEO

Mes programmes sur le site : Produit scalaire KMorpion Puissance 4 Mastermind

Mes nouveaux programmes de calcul formel : FCarré FPrime

Projet base de données : ici mais abandonné. Trop de travail ...
 Adresse email Haut de page Bas de page 
 
Google_AdSense



Publicité    



 
indigo
Invité
Posté le : Dim 09 Sep 2012, 19:19   Citer 

happy.gif oui je comprends, j'en reviens même pas de ne pas avoir jeté l'éponge moi même... ^^

Tant que j'y suis, j'ai une autre petite question :

Est-il possible de faire une régression linéaire en imposant b=0 ?

  Haut de page Bas de page 
 
linkakro



Autorisation : Membre
Nb de messages : 3738
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Dim 09 Sep 2012, 20:03   Citer 

Je viens de trouver un autre bug : dim(L3>=1 doit être coorigé avec une parenthèse : dim(L3)>=1
Voire même 1<=dimm(L3

hs : j'ai corrigé dans mon premier message le calcul de l'écart type, car j'ai enfin trouvé que stdDev() en anglais désigne écart-type() en français. (c'est plus simple que de calculer la racine de la variance)

----

La liste L3 est générée par la régression, cela explique bien pourquoi ma solution est incompatible avec ton programme.

La détection de l'existence de la liste est un tout autre problème que les calculs à venir.

Si ce test sert uniquement à s'assurer qu'un autre programme a été executé précédemment, alors je pense que ce n'est pas nécessaire : si les programmes ont été conçus pour fonctionner ensemble, alors il devrait sembler évident d'executer le premier programme avant si le deuxième plante pour une liste vide.

Je désire savoir ce que représente L3 : je veux savoir ce qui régie sa longueur afin de savoir si mes arguments précédents se vallent.

-----

Je ne connais pas de façon d'imposer b=0.

----------------------
ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)

Pour tout le monde et surtout les débutants, quelques-uns des articles courants :
*Traductions Algorithmie/Ti-Basic.
*Caractères spéciaux sur Tout82
Les défauts du TI-Basic : Goto_versus_algo et DelVar/End/Lbl/guillemet/store
 Adresse email Haut de page Bas de page 
 
indigo
Invité
Posté le : Dim 09 Sep 2012, 21:12   Citer 

A vrai dire, je rentre manuellement les valeurs de L3...

Que j'explique un peu, j'utilise toutes ces données en analyse chimique où l'on réalise beaucoup de courbes d'étalonnage afin de déterminer ultérieurement des valeurs, principalement des concentrations. Mais toute méthode a ses défauts, toute manipulation ses erreurs... Il faut donc que j'évalue des intervalles de confiance sur mes valeurs, aussi bien celles ayant servies à l'étalonnage que celles réalisées sur des échantillons. Ces dernières sont celles que je rentre dans L3. Leur nombre peut énormément varier en fonction du nombre de "prises", mesures que j'ai réalisé. D'où l'impossibilité de fixer ce nombre.

Mais je sens que tout ça devient assez compliqué alors que j'ai fait ça pour me simplifier la vie et surtout, ne pas être complètement dépendante d'un ordinateur. Car excel "marche" très bien et est plus adapté pour gérer beaucoup de données, et il existe sûrement d'autres logiciels bien spécifiques, je ne les connais simplement pas encore car tout ça est encore très théorique pour moi. Donc pas la peine de trop vous creuser le ciboulot, c'est déjà pas mal comme ça pour l'instant. happy.gif

  Haut de page Bas de page 
 
Sangohan38



Autorisation : Membre
Nb de messages : 3293
Inscrit le : Sam 31 Déc 2005, 19:48
Posté le : Lun 10 Sep 2012, 12:51   Citer 

La méthode des moindres carrés consiste en fait à simuler des rectangles d'aire connus en dessous de la courbe. Ainsi pour une infinité de rectangles, on obtient l'aire entre les axes, la courbe et le point fixé en abscisse.

Que rentres-tu exactement dans excel pour obtenir les résultats? Je suppose que tu parle en fait de la différentiation des écarts que donne la verrerie pour connaitre l'écart de mesure du à la méthode (puisque les écarts ne sont pas additifs sinon se serais trop facile).

Sangohan38

 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Page générée en 6 requêtes