Modérateur : Groupe des modérateurs
Code : Tout sélectionner
tab <- data.frame(id = 1:20,
var1 = runif(20, 0, 1))
n <- nrow(tab)
tab$k <- sample(rep(1:10, length=n))
pourrais tu m'expliquer stp ce que signifient les 2 premieres lignes de ton code
Code : Tout sélectionner
# je créé un data frame avec y = 1.5 x + erreur
tab <- data.frame(x = 1:20, y = 1:20 * 1.5 + rnorm(20, 0, 5))
# modèle linéaire
modL <- lm(y ~ x, data=tab)
summary(modL)
# je trace y ~ x et ajoute la ligne de régression
plot(y ~ x, data=tab)
abline(modL)
Code : Tout sélectionner
> library(cluster)
> data(airquality)
> attach(airquality)
> A=data.frame(Temp,Ozone) #création d’un data frame de 2 colonnes avec Temp et Ozone#
> B=na.omit(A) #suppression des NA#
> dim(B)
[1] 116 2 #116 valeurs, impossible pour transformer en matrice#
> vec=c(1:6)
> C=B[-vec,] #on supprime 6 lignes du data frame B qu’on renomme en C#
> dim(C)
[1] 110 2 #on va pouvoir avoir une matrice de dimension 11x10 le 10 représentant les 10 échantillons#
> o=C$Ozone
> t=C$Temp
> L=lm(o~t)
> L
Call:
lm(formula = o ~ t)
Coefficients:
(Intercept) t
-154.289 2.515 #on obtient les données de la droite des moindres carrés en effectuant une régression linéaire#
> a=c(2.515)
> b=c(-154.289)
> y=a*x+b #on définit la formule de la droite des moindres carrés #
> mat1=matrix(C$Ozone,11,10)
> mat1
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 19 11 39 40 79 39 65 76 23 24
[2,] 8 1 23 77 63 9 22 118 21 16
[3,] 7 11 21 97 16 16 59 84 24 13
[4,] 16 4 37 97 80 78 23 85 44 23
[5,] 11 32 20 85 108 35 31 96 21 36
[6,] 14 23 12 10 20 66 44 78 28 7
[7,] 18 45 13 27 52 122 21 73 9 14
[8,] 14 115 135 7 82 89 9 91 13 30
[9,] 34 37 49 48 50 110 45 47 46 14
[10,] 6 29 32 35 64 44 168 32 18 18
[11,] 30 71 64 61 59 28 73 20 13 20
> mat2=matrix(C$Temp,11,10)
> mat2
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 59 62 87 83 87 81 80 97 78 68
[2,] 61 59 82 88 85 81 77 94 75 82
[3,] 74 73 77 92 74 82 79 96 73 64
[4,] 69 61 72 92 86 86 76 94 81 71
[5,] 66 61 65 89 85 85 78 91 76 81
[6,] 68 67 73 73 82 87 78 92 77 69
[7,] 58 81 76 81 86 89 77 93 71 63
[8,] 64 79 84 80 88 90 72 93 71 70
[9,] 66 76 85 81 86 90 79 87 78 75
[10,] 57 82 81 82 83 86 81 84 67 76
[11,] 68 90 83 84 81 82 86 80 76 68
#on crée 2 matrices, une pour temp et une pour ozone, qui vont permettre de découper en 10 échantillons de 11 valeurs le data frame#
Code : Tout sélectionner
y=a*x+b
avec
a=c(2.515)
b=c(-154.289)
mat3=a*mat2+b
> mat3
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] -5.904 1.641 64.516 54.456 64.516 49.426 46.911 89.666 41.881 16.731
[2,] -0.874 -5.904 51.941 67.031 59.486 49.426 39.366 82.121 34.336 51.941
[3,] 31.821 29.306 39.366 77.091 31.821 51.941 44.396 87.151 29.306 6.671
[4,] 19.246 -0.874 26.791 77.091 62.001 62.001 36.851 82.121 49.426 24.276
[5,] 11.701 -0.874 9.186 69.546 59.486 59.486 41.881 74.576 36.851 49.426
[6,] 16.731 14.216 29.306 29.306 51.941 64.516 41.881 77.091 39.366 19.246
[7,] -8.419 49.426 36.851 49.426 62.001 69.546 39.366 79.606 24.276 4.156
[8,] 6.671 44.396 56.971 46.911 67.031 72.061 26.791 79.606 24.276 21.761
[9,] 11.701 36.851 59.486 49.426 62.001 72.061 44.396 64.516 41.881 34.336
[10,] -10.934 51.941 49.426 51.941 54.456 62.001 49.426 56.971 14.216 36.851
[11,] 16.731 72.061 54.456 56.971 49.426 51.941 62.001 46.911 36.851 16.731
Code : Tout sélectionner
data(airquality)
AirQ <- na.omit(airquality[,c("Ozone", "Temp")])
nrow(AirQ)
Code : Tout sélectionner
AirQ$k <- sample(1:10, nrow(AirQ), replace = TRUE)
table(AirQ$k)
Code : Tout sélectionner
modl <- lm(Ozone ~ Temp, data = AirQ, ...
Code : Tout sélectionner
coef(modl)
Code : Tout sélectionner
> L
Call:
lm(formula = Airq$Ozone ~ Airq$Temp, data = Airq, subset = 1:9)
Coefficients:
(Intercept) Airq$Temp
17.89418 0.05159 > newdata=subset(Airq,k=="10")
> predict(L,newdata)
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
pour en revenir a l'histoire du sample, je sais pas s'il faudrait pas plutot le faire sans remise le tirage non?
Code : Tout sélectionner
AirQ$k <- sample(rep(1:10, length=nrow(AirQ)))
Code : Tout sélectionner
AirQ$k <- sample(1:10, nrow(AirQ), replace = TRUE)
Code : Tout sélectionner
modl <- lm(Ozone ~ Temp, data = AirQ, subset = k %in% 1:9)
AirQ$pred <- predict(modl, newdata=AirQ)
xmax <- max(AirQ$Ozone)
plot(pred ~ Ozone, data=AirQ, subset = k < 10,
col = "blue", pch = 20,
xlim = c(0, xmax), ylim=c(0, xmax))
par(new=TRUE)
plot(pred ~ Ozone, data=AirQ, subset = k == 10,
col = "red", pch = 20,
xlim = c(0, xmax), ylim=c(0, xmax))
il n'y a plus q'a mettre en valeur les échantillons et faire les moyennes.
Code : Tout sélectionner
plot(Ozone ~ Temp, data=AirQ)
abline(lm(Ozone ~ Temp, data = AirQ))
Retourner vers « Questions en cours »
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité