transformation boxcox

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 22 Mai 2007, 14:15

raphaële terrail a écrit :bon alors j'ai fait ça :

Code : Tout sélectionner

>survie.cox<-boxcox(V4~V1, data = a, lambda = seq(-2, 2, length = 10))

> survie.cox<-boxcox(V4~V3, data = a, lambda = seq(-2, 2, length = 10))

> survie.cox<-boxcox(V4~V1+V3, data = a, lambda = seq(-2, 2, length = 10))

qu'en penses-tu???

merci pour tes réponses...

oui je pense qu'au point de vue code c'est bon. Après il faut voir ce que tu cherches à faire une foi ta transfo boxcox effectuée.

Si ce sont des données de survie, il ne faut pas aller dans cette voie mais utiliser un modèle approprié pour ce type de données: il faut notamment tenir compte des censures, problème constant avec les données de survie.

attention à cela tout de même. Mais il est vrai que si tes expériences sont indépendantes, tu dois pouvoir considérer tes effectifs de survie comme de simples effectifs quelques soit leur nature précise.

Peut être que la première des choses est de tester l'effet concentration. Si il s'avère significatif, il va falloir prendre cela en compte pour tester les autres facteur.

Thomas Galtier
Messages : 93
Enregistré le : 14 Mai 2007, 12:08

Messagepar Thomas Galtier » 22 Mai 2007, 14:16

Quelqu'un pourrait t'il m'aider pour mon vecteur de données me donnant en histogramme mauvais pour ce que je voudrai faire sur mes données ?

En fait j'ai un vecteur de taille 70, et après transformation manuelle de ce vecteur par un lambda choisit de façon arbitraire j'arrive à quelque chose d'un peu plus symetrique, d'un peu plus normal.

Mais j'aimerai bien utiliser la fonction boxcox mais sans succès ...

En tapant :

Code : Tout sélectionner

temp.cox<-boxcox(TEMP)
Erreur dans boxcox.default(TEMP) : TEMP does not have both 'qr' and 'y' components
De plus : Warning message:
$ operator is deprecated for atomic vectors, returning NULL in: object$y


Je ne vois pas trop ... mon vecteur à cet tête là :

    [1] 28.063 32.024 26.849 31.984 32.651 23.190 25.200 33.008 29.389 23.491
    [11] 29.991 33.770 35.079 27.130 25.579 29.694 35.286 34.083 33.833 35.968
    [21] 34.175 38.151 37.016 23.294 25.574 29.481 20.778 29.454 30.159 27.000
    [31] 24.595 27.167 29.754 29.087 36.563 34.500 35.698 37.011 37.722 35.167
    [41] 35.913 35.833 36.333 37.563 37.000 36.643 35.657 36.024 36.286 38.413
    [51] 38.183 35.352 37.810 36.603 37.500 37.024 36.730 28.071 31.889 30.583
    [61] 34.413 30.429 33.759 33.139 35.444 36.365 36.095 37.833 38.222 37.213
    [71] 39.083 37.802 39.071 36.200 39.143 38.731 38.214 39.881 37.968 35.963
    [81] 37.365 36.648 36.037 37.413 30.365 36.286 30.056 29.786 34.175 38.889
    [91] 38.683 39.310 37.762 38.000 38.444 38.548 37.786 37.907 37.065 38.246
    [101] 39.000 36.460 38.972 37.587 34.563 36.817 38.159 37.762 37.651 37.603
    [111] 36.889 35.500 33.509 36.667 35.903 38.452 38.587 39.373 40.008 39.102
    [121] 36.627 36.429 31.556 35.405 26.698 37.157 39.627 39.302 38.861 36.476
    [131] 34.063 31.278 34.659 37.407 39.730 37.159 36.214 39.421 36.659 39.190
    [141] 38.824 39.778 38.270 31.620 33.000 33.183 38.270 36.246 35.000 36.370
    [151] 36.460 33.639 33.770 28.269 33.952 38.944 33.204 32.028 33.468 32.139
    [161] 35.159 30.817 31.102 34.397 32.056 33.954 33.778 32.611 35.643 35.825


C'est des données de temperatures ... que j'aimerai bien utiliser après transformation pour faire du krigeage.

Thomas

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 22 Mai 2007, 14:34

même problème que Raphaële...
il faut utiliser une formule et pas simplement un vecteur de données.
regardes l'aide de boxcox

Thomas Galtier
Messages : 93
Enregistré le : 14 Mai 2007, 12:08

Messagepar Thomas Galtier » 22 Mai 2007, 15:11

j'ai vu mais quel formules justement ?
en fait je connais pas trop cette methode si ce n'est l principe de base ....

je me galere un peu là :twisted:

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 22 Mai 2007, 17:17

merci Renaud pour ta rponse,

je me suis penchée sur ce problème, mais dans mon cas, je ne considère pas la survie dépendante du temps ou deel'âge comme c'est fait en général en médecine ou en biologie quand il s'agit d'un suivi de population dans le temps, je veux voir l'effet du traitement sur la survie ...

merci beaucoup en tous les cas, ça m'a permis de m'instruire sur ces sujets là, merci


Si je comprends bien, tu appliques un plan d'expérience sur des unités expérimentales (placettes, portées, ...) et tu regardes la proportion des unités survivant après l'expé. C'est ça ? Si oui, tu es dans un cadre d'analyse de proportions ou de comptages qui rélève du modèle linéaire généralisé (on peut aussi traiter la survie au sens où je l'entendais dans ce cadre): régression binomiale logistique, ou de Poisson, etc. Voir la fct glm et ses nombreuses variantes. En tout cas, ce n'est pas la transformation de Box-Cox qui va régler ton pb.

Renaud

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 23 Mai 2007, 06:08

j'ai vu mais quel formules justement ?
en fait je connais pas trop cette methode si ce n'est l principe de base ....

je me galere un peu là :twisted:


il faut une variable explicative à mettre dans ta formule tout simplement donc ce n'est pas moi qui peut te donner la réponse mais toi, suivant les questions que tu te poses.

Thomas Galtier
Messages : 93
Enregistré le : 14 Mai 2007, 12:08

Messagepar Thomas Galtier » 23 Mai 2007, 08:11

Je croyais que boxcox c'etait à partir d'une variable y non normal on avait la transformation suivante :

y'= (y^{lambda}-1)/(lambda)) ou quelque chose dans le genre quand (lambda) etait different de zero.

Pour ma part j'ai bien mon "y" qui est mon vecteur de données de temperatures ... donc je ne comprends pas "la variable explicative" ...

Encor merci pour vos posts ;)

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 23 Mai 2007, 08:41

Bonjour,

Regarde du côté de la library "car", ou tu as essentiellement deux fonctions qui vont te permettre de transformer tes données :
box.cox.powers qui te sert a estimer le paramètre lambda (je ne sais pas sur quel critère) et ensuite la transformation se fait par box.cox. Néanmoins je pense que tu devrais prendre en compte les conseils de Renaud.

Maxime

Thomas Galtier
Messages : 93
Enregistré le : 14 Mai 2007, 12:08

Messagepar Thomas Galtier » 23 Mai 2007, 09:59

Bonjour je n'ai pas accès à la library "car" :(

EN fait je vai vous exposer mon problème de façon plus clair :

J'ai trois vecteurs : un de longitude :

    1.60 1.83 2.33 3.10 3.15 -1.93 -1.48 -0.45 0.06 -0.76 0.16 1.18
    [13] 1.23 -1.50 1.10 0.08 2.11 2.51 3.20 4.03 4.63 6.13 6.25 -5.05
    [25] -4.73 -4.15 -4.33 -4.43 -4.41 -3.46 -3.46 -3.46 -2.85 -2.06 -1.73 -0.73
    [37] 0.10 1.38 1.50 2.00 1.10 2.20 2.33 2.38 2.43 2.68 2.33 2.53
    [49] 4.18 4.01 4.90 6.43 6.21 5.96 2.33 7.63 7.40 -4.36 -4.16 -3.50
    [61] -3.35 -3.16 -2.71 -2.30 -2.16 -1.60 -0.60 0.20 0.73 1.21 1.68 1.78
    [73] 2.36 5.41 2.63 2.65 3.10 3.55 5.08 5.33 5.98 6.38 6.88 7.51
    [85] -2.33 -1.38 -1.56 -1.41 -1.15 -0.40 0.30 1.71 1.86 2.35 3.40 4.01
    [97] 4.80 5.41 5.51 -0.31 0.81 1.18 1.46 3.16 3.76 4.30 4.93 5.08
    [109] 5.33 5.33 5.86 6.76 -1.25 -1.13 -1.25 -0.68 0.60 0.51 1.40 1.38
    [121] 2.41 2.48 2.51 3.01 3.58 4.36 4.73 4.83 5.05 6.00 6.50 -1.68
    [133] -1.53 -1.06 -0.50 -0.41 0.00 0.60 1.10 1.36 1.36 2.11 2.31 3.68
    [145] 3.35 3.96 4.40 4.41 4.91 5.10 5.23 5.93 5.93 3.06 6.15 6.38
    [157] 6.46 6.95 7.20 7.33 2.86 3.13 8.91 8.80 8.80 9.40 9.16 9.53
    [169] 9.10 9.48

Un de Latitude :

    50.73 50.13 51.05 50.56 50.21 49.71 49.65 49.18 49.50 49.35 49.36 49.38
    [13] 49.01 49.51 49.93 49.53 49.46 49.25 49.81 49.30 49.78 49.08 48.98 48.48
    [25] 48.03 48.51 48.68 48.28 48.45 48.75 48.83 48.75 48.53 48.58 48.06 48.03
    [37] 48.43 48.06 48.46 48.76 48.76 48.76 48.60 48.71 48.96 48.61 48.81 49.01
    [49] 48.78 48.33 48.63 48.20 48.68 48.58 48.58 48.55 47.91 47.80 47.96 47.65
    [61] 47.76 47.30 47.60 47.23 47.31 47.15 47.48 47.93 47.45 47.68 47.31 47.98
    [73] 47.06 47.03 47.05 47.05 47.00 47.80 47.26 47.85 47.25 47.80 47.63 47.60
    [85] 46.70 46.70 46.25 46.05 46.15 46.31 46.58 46.85 46.16 46.21 46.16 46.41
    [97] 46.30 47.03 46.68 45.66 45.20 45.86 45.15 45.78 45.08 45.53 45.71 45.73
    [109] 45.98 45.36 45.63 45.61 44.63 44.53 44.43 44.83 44.18 44.81 44.75 44.03
    [121] 44.88 44.40 44.18 44.11 44.11 44.53 44.58 44.13 44.08 44.06 44.56 43.40
    [133] 43.46 43.68 43.91 43.38 43.18 43.68 43.00 43.63 43.53 43.91 43.21 43.40
    [145] 43.31 43.58 43.86 43.75 43.51 43.60 43.45 43.10 43.08 42.91 43.10 43.38
    [157] 43.03 43.53 43.65 43.68 42.73 42.51 42.63 42.53 41.91 41.91 41.36 42.26
    [169] 41.50 42.55

Et enfin un de temperature :

    28.063 32.024 26.849 31.984 32.651 23.190 25.200 33.008 29.389 23.491
    [11] 29.991 33.770 35.079 27.130 25.579 29.694 35.286 34.083 33.833 35.968
    [21] 34.175 38.151 37.016 23.294 25.574 29.481 20.778 29.454 30.159 27.000
    [31] 24.595 27.167 29.754 29.087 36.563 34.500 35.698 37.011 37.722 35.167
    [41] 35.913 35.833 36.333 37.563 37.000 36.643 35.657 36.024 36.286 38.413
    [51] 38.183 35.352 37.810 36.603 37.500 37.024 36.730 28.071 31.889 30.583
    [61] 34.413 30.429 33.759 33.139 35.444 36.365 36.095 37.833 38.222 37.213
    [71] 39.083 37.802 39.071 36.200 39.143 38.731 38.214 39.881 37.968 35.963
    [81] 37.365 36.648 36.037 37.413 30.365 36.286 30.056 29.786 34.175 38.889
    [91] 38.683 39.310 37.762 38.000 38.444 38.548 37.786 37.907 37.065 38.246
    [101] 39.000 36.460 38.972 37.587 34.563 36.817 38.159 37.762 37.651 37.603
    [111] 36.889 35.500 33.509 36.667 35.903 38.452 38.587 39.373 40.008 39.102
    [121] 36.627 36.429 31.556 35.405 26.698 37.157 39.627 39.302 38.861 36.476
    [131] 34.063 31.278 34.659 37.407 39.730 37.159 36.214 39.421 36.659 39.190
    [141] 38.824 39.778 38.270 31.620 33.000 33.183 38.270 36.246 35.000 36.370
    [151] 36.460 33.639 33.770 28.269 33.952 38.944 33.204 32.028 33.468 32.139
    [161] 35.159 30.817 31.102 34.397 32.056 33.954 33.778 32.611 35.643 35.825



Le truc c'est que quand je fais l'histogramme de mes données de temperatures (qui correspondent chacune à un couple de longitude et de latitude) j'ai quelque chose qui est loin d'etre normal.

Du coup j'ai pensé à appliquer la fonction boxcox à mes données de temperatures.
Malheureusement, je n'y arrive pas, j'ai tapé :

Code : Tout sélectionner

boxcox(TEMP~1)
mais cela ne me donne pas la valeur du parametre lambda, plutot une approximation et de plus en traçant l'histogramme avec la formule de boxcox j'ai quelque chose d'un peu plus normal mais pas non plus terrible.

Peut-etre me suis-je trompé de formule ?

Le truc c'est que je ne dispose que de ces trois données, et que je dois travailler sur les données de temperatures avec un modele qui suppose que c'est gaussien.

Malheureusement puisque ce n'est pas le cas je suis obligé de passer par une transofrmation ...

J'ai un gros soucis là j'avoue ... si quelque pouvait m'aider ...

Encore merci pour vos reponses ;)

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 23 Mai 2007, 10:46

Bonjour,

Tout est dans mon précédent post, si tu n'as pas accès à la librray "car", alors télécharges la et installe la. Avec la fonction box.cox.powers(TEMP) tu rtécupères lambda et ensuite avec box.cox(TEMP,lambda) tu transformes ta variables, je l'ai fait sur ma machine avec ton jeu de données et ça a marché.

Maxime

Thomas Galtier
Messages : 93
Enregistré le : 14 Mai 2007, 12:08

Messagepar Thomas Galtier » 23 Mai 2007, 11:07

Merci Maxime je test et je te tiens au courant ;)

Thomas Galtier
Messages : 93
Enregistré le : 14 Mai 2007, 12:08

Messagepar Thomas Galtier » 23 Mai 2007, 11:55

Comment fais-tu pour telecharger la library "car" ?

De mon pc je ne peux que les telcharger en .zip car depuis R, il y a un port qui est bloqué et qui m'empeche de telecharger directement les library ou packages.

Thomas Galtier
Messages : 93
Enregistré le : 14 Mai 2007, 12:08

Messagepar Thomas Galtier » 23 Mai 2007, 12:01

C'est bon j'ai reussi à telecharger car.

J'ai tapé cette manipulation là :

Code : Tout sélectionner

> library(car)
> box.cox.powers(TEMP)
Box-Cox Transformation to Normality

 Est.Power Std.Err. Wald(Power=0) Wald(Power=1)
    5.1922   0.6998        7.4191        5.9902

L.R. test, power = 0:  72.1817   df = 1   p = 0
L.R. test, power = 1:  44.5479   df = 1   p = 0
> lambda<-box.cox.powers(TEMP)
> box.cox(TEMP,lambda)
Erreur dans p * log(x) : argument non numérique pour un opérateur binaire


Et voilà l'erreur que j'ai ...pas bien comprendre là :oops: :oops:

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 23 Mai 2007, 12:02

re,


Un petit conseil commence par lire des document d'introduction a R, il y en a plein sur le net dont celui de Paradis R pour les débutants. Sinon quand tu démarres R tu as un menu Packages, et install package ou installer packages(s) tu choisis un serveur et tu choisis la lbirary car. Ensuite il te faudra la charger dans R avec la commande library(car).

Maxime

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 23 Mai 2007, 12:05

Re,

quand tu tapes box.cox.powers comme tu peux le voir il te génère pas mal de choses qu'il t'affiche :

Code : Tout sélectionner

test <- box.cox.powers(1:10)
names(test)
[1] "start"       "criterion"   "lambda"      "stderr"      "LR0"         "LR1"         "return.code"
# et tu as bien le paramètre lambda
box.cox(1:10,test$lambda)
[1] 0.0000000 0.8995268 1.6764922 2.3832298 3.0419521 3.6647768 4.2592516 4.8304883 5.3821557 5.9170021


Maxime


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité