Bonjour,
je souhaite avoir le coefficient de détermination d'un modèle linéaire simple sur la base de données test. pour cela je doit le calculer manuellement. j'ai trouvé dans la littérature 2 formules qui sont égales à savoir:
R²=∑(ûi-ü)²/∑(ui-ü)² = 1-((∑ui-ûi)²/∑(ui-ü)²)
avec :
ui:valeurs observées
ûi: valeurs prédites
ü: moyenne des valeurs observée
sauf que les deux formules ne me donnent pas le même résultat je ne comprend pas trop pourquoi, il arrive parfois que la première formule me donne R²>1 et la deuxième un R²<0 alors qu'on sais tous que R²[0:1]
voyez vous-même
tout d'abord je souhaite savoir si ma démarche est cohérente
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 v<-1:60 x<-rnorm(60, 45, 7) y<-rnorm(60, 5, 1.5) my.data<-data.frame(v, x, y) traindata<-subset(my.data, v%in%1:40) mod<-lm(y~x, data=traindata) testdata<-subset(my.data, v%in%41:60) pred<-predict(mod, testdata) #R² {u<-sum((pred-mean(testdata$y))^2) w<-sum((testdata$y-mean(testdata$y))^2) r=(u/w) print(r)} #R² 2ème formule {u<-sum((testdata$y-pred)^2) w<-sum((testdata$y-mean(testdata$y))^2) r=1-(u/w) print(r)}
puis où se situe le problème pour les R², est-ce que c'est mon code qui comporte une erreur?
merci.
Partager