Bonjour!
j'ai un truc a faire en validation croisée
je suis arrivé jusque la mais j'arrive pas a comprendre le resultat que me donne la fonction predict
voici l'énoncé puis le code:
"On utilisera le jeu de données Airqualitty et plus précisément les colonnes Ozone et Temp.
Le principe consiste a estimer le modele (ici un modele linéaire) sur une partie de l'échantillon (dit echantillon d'apprentissage); puis a calculer l'erreur commise sur une autre partie de l'échantillon (dit echantillon d validation), qui n'a pas participé a l'estimation des parametres du modele.
Différentes facons de constituer les échantillons d'apprentissage et de validation peuvent etre considérées. La méthode envisagée ici consiste a découper l'échantillon de départ en k=10 sous échantillons. Un échantillon , obtenu par reunion de 9 partis sur les 10, sera utilisé pour estimer le modele, et on calcluera l'erreur commise par ce modele sur la dixieme partie qui constituera l'échantillon de validation Ei.On calculera alors l'erreur du modele comme étant la moyenne quadratique des erreurs commises par le modele sur chaque valeur de l'échantillon.
On demande de calculer cette erreur Ei , puis d'itérer ce processus de facon a ce que chacune des 10 parties de l'échantillon de départ soit utilisée une fois comme échantillon de validation.
On obtient ainsi dix calculs d'erreurs (Ei, i variant de 1 a 10).On donnera la valeur de Qu moyenne des 10 Ei.
Commenter"
Voici le code:
"
> library(cluster)
> data(airquality)
> attach(airquality)
> Airq<-na.omit(airquality[,c("Ozone", "Temp")])> Airq
Ozone Temp
1 41 67
2 36 72
3 12 74
4 18 62
6 28 66
7 23 65
8 19 59
.......
151 14 75
152 18 76
153 20 68
> nrow(Airq)
[1] 116
> Airq$k<-sample(1:10,nrow(Airq),replace=TRUE)
> table(Airq$k)
1 2 3 4 5 6 7 8 9 10
11 15 14 9 12 12 10 9 11 13
> L=lm(Airq$Ozone~Airq$Temp,data=Airq,1:9)
Call:
lm(formula = Airq$Ozone ~ Airq$Temp, data = Airq, subset = 1:9)
Coefficients:
(Intercept) Airq$Temp
17.89418 0.05159
> subset(Airq,k=="10")
Ozone Temp k
6 28 66 10
11 7 74 10
15 18 58 10
19 30 68 10
44 23 82 10
70 97 92 10
86 108 85 10
88 52 86 10
90 50 86 10
98 66 87 10
118 73 86 10
131 23 78 10
132 21 75 10
> t=subset(Airq,k=="10")
> predict(L,t)
1 2 3 4 5 6 7 8 9 10
21.35053 21.60847 21.71164 21.09259 21.29894 21.24735 20.93783 21.04101 21.71164 21.45370
11 12 13 14 15 16 17 18 19 20
21.29894 21.40212 20.88624 21.19577 21.29894 20.83466 21.40212 21.09259 20.93783 21.66005
21 22 23 24 25 26 27 28 29 30
21.04101 21.04101 21.35053 22.07275 21.96958 21.81481 22.12434 22.53704 22.38228 22.12434
31 32 33 34 35 36 37 38 39 40
21.86640 21.60847 21.24735 21.66005 21.81481 22.22751 22.27910 22.07275 22.17593 22.17593
41 42 43 44 45 46 47 48 49 50
22.43386 22.64021 22.64021 22.48545 21.66005 22.07275 22.02116 22.07275 22.12434 22.22751
51 52 53 54 55 56 57 58 59 60
22.38228 22.27910 21.71164 22.33069 22.27910 22.12434 22.33069 22.43386 22.33069 22.17593
61 62 63 64 65 66 67 68 69 70
22.07275 22.07275 22.07275 22.12434 22.33069 22.27910 22.38228 22.48545 22.53704 22.53704
71 72 73 74 75 76 77 78 79 80
22.33069 22.12434 22.02116 21.86640 21.96958 21.81481 21.91799 21.91799 21.86640 21.60847
81 82 83 84 85 86 87 88 89 90
21.96958 22.07275 22.33069 22.89815 22.74339 22.84656 22.74339 22.58862 22.64021 22.69180
91 92 93 94 95 96 97 98 99 100
22.69180 22.38228 22.22751 22.02116 21.91799 21.76323 21.66005 22.07275 21.81481 21.86640
101 102 103 104 105 106 107 108 109 110
21.55688 21.55688 21.91799 21.35053 21.81481 21.40212 22.12434 21.19577 21.55688 22.07275
111 112 113 114 115 116
21.45370 21.14418 21.50529 21.76323 21.81481 21.40212
Message d'avis :
'newdata' avait 13 lignes mais les variables trouvées ont 116 lignes"
Voila, je ne comprend pas le résultat de la partie en rouge.
pouvez vous me l'expliquer et m'éclairer svp?
merci!
Partager