Fonction de simulation pour calcul d'écart entre échantillons
Bonjour ,
J'ai une base de données de vins de 10 lignes (produits) et 60 colonnes(consommateurs) de laquelle je veux effectuer 500 tirages d'un échantillon de 30 colonnes que j'appelle vin1, appliquer une régression, calculer les prédictions en chaque point d'un espace discrétisé que j'ai posé et récupérer les notes ainsi que les % des consos, et puis refaire ceci pour l'échantillon complémentaire vin2 restant après extraction de vin1.
Dans ce programme, je veux calculer l'écart moyen entre les notes2 de ech2 et les notes1 de ech1 ainsi que l'écart entre % conso.
J'ai posé le programme suivant, je ne sais pas comment je peux récupérer ces écarts en un tableau directement :roll:.
D'abord pouvez-vous m'aider à m'assurer de la validité de mon programme :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| n=500
for (i in (1:n)) {
vin1=sample(hedovin,30)
colnames(vin1)
{
# Estimation
# discretspace espace déjà défini de 50*50 points auxquels je vais affecter les notes ainsi que nbconsos
notes=rep(0,nrow(discretspace))
nbconsos=rep(0,nrow(discretspace))
for (nom in names(vin1))
{
modele=as.formula(paste(nom,"~I(F1*F1)+I(F2*F2)+F1*F2"))
reg=lm(modele,data=vin1)
pr=predict(reg,newdata=discretspace)
preference=(pr> mean(vin1[[nom]])) # Les préférences sont définies telles que les pr sont supérieurs au moyennes des notes par conso
notes=notes+pr
nbconsos=nbconsos+preference
}
nb.conso=length(colnames(vin1))
nb.conso
notes1=notes/nb.conso
nbconsos1=nbconsos*100/nb.conso
}
vin2=hedovin[-c(vin1[,]),-c(vin1[,])]
{
for (nom in names(vin2))
{
modele=as.formula(paste(nom,"~I(F1*F1)+I(F2*F2)+F1*F2"))
reg=lm(modele,data=vin1)
pr=predict(reg,newdata=discretspace)
preference=(pr> mean(vin2[[nom]]))
notes=notes+pr
nbconsos=nbconsos+preference
}
nb.conso=length(colnames(vin1))
nb.conso
notes2=notes/nb.conso
nbconsos2=nbconsos*100/nb.conso
summary(nbconsos)
}
Ecartnote[i]=sum((notes2-notes1)^2)/(nbpoints^2)
Ecartconso[i]=sum((nbconsos2-nbconsos1)^2)/(nbpoints^2)
} |
Merci d'avance :lol: