This commit is contained in:
2024-04-22 15:28:03 +02:00
parent 52096035e7
commit 88ff5dbae1
47 changed files with 753 additions and 46 deletions

10
Analyse Multidimensionnelle/ADN/.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,10 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# GitHub Copilot persisted chat sessions
/copilot/chatSessions

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.idea/copilot/chatSessions" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DiscordProjectSettings">
<option name="show" value="PROJECT_FILES" />
<option name="description" value="" />
</component>
</project>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_20" default="true" project-jdk-name="20" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
<component name="RMarkdownSettings">
<option name="renderProfiles">
<map>
<entry key="file://$PROJECT_DIR$/main.rmd">
<value>
<RMarkdownRenderProfile>
<option name="outputDirectoryUrl" value="file://$PROJECT_DIR$" />
</RMarkdownRenderProfile>
</value>
</entry>
</map>
</option>
</component>
</project>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/ADN.iml" filepath="$PROJECT_DIR$/.idea/ADN.iml" />
</modules>
</component>
</project>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RGraphicsSettings">
<option name="height" value="450" />
<option name="resolution" value="75" />
<option name="version" value="2" />
<option name="width" value="720" />
</component>
</project>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RMarkdownGraphicsSettings">
<option name="globalResolution" value="75" />
<option name="version" value="2" />
</component>
</project>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RSettings">
<option name="interpreterPath" value="/usr/local/bin/R" />
<option name="loadWorkspace" value="true" />
<option name="saveWorkspace" value="true" />
</component>
</project>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
</component>
</project>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="R_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@@ -0,0 +1,6 @@
```{r}
library(FactoMineR)
data(iris)
res.test <- PCA(iris[,1:4], scale.unit=TRUE, ncp=4)
res.test
```

10
Analyse Multidimensionnelle/DM ACP/.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,10 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# GitHub Copilot persisted chat sessions
/copilot/chatSessions

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DiscordProjectSettings">
<option name="show" value="PROJECT_FILES" />
<option name="description" value="" />
</component>
</project>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_20" default="true" project-jdk-name="20" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
<component name="RMarkdownSettings">
<option name="renderProfiles">
<map>
<entry key="file://$PROJECT_DIR$/DM_ACP.Rmd">
<value>
<RMarkdownRenderProfile>
<option name="outputDirectoryUrl" value="file://$PROJECT_DIR$" />
</RMarkdownRenderProfile>
</value>
</entry>
</map>
</option>
</component>
</project>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/DM ACP.iml" filepath="$PROJECT_DIR$/.idea/DM ACP.iml" />
</modules>
</component>
</project>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RGraphicsSettings">
<option name="height" value="450" />
<option name="resolution" value="75" />
<option name="version" value="2" />
<option name="width" value="720" />
</component>
</project>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RMarkdownGraphicsSettings">
<option name="globalResolution" value="75" />
<option name="version" value="2" />
</component>
</project>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RSettings">
<option name="interpreterPath" value="/usr/local/bin/R" />
</component>
</project>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
</component>
</project>

View File

@@ -1,12 +1,12 @@
---
title: "DM Statistique exploratoire multidimensionelle - Arthur DANJOU"
output:
pdf_document: default
html_document:
df_print: paged
editor_options:
markdown:
wrap: 72
pdf_document: default
html_document:
df_print: paged
editor_options:
markdown:
wrap: 72
---
------------------------------------------------------------------------
@@ -28,23 +28,23 @@ knitr::opts_chunk$set(include = FALSE)
# PARTIE 1 : Calcul de composantes principales sous R (Sans FactoMineR)
- Vide l'environnement de travail, initialise la matrice avec laquelle
vous allez travailler
vous allez travailler
```{r}
rm(list=ls())
rm(list = ls())
```
- Importation du jeu de données (compiler ce qui est ci-dessous mais
NE SURTOUT PAS MODIFIER)
NE SURTOUT PAS MODIFIER)
```{r}
library(dplyr)
notes_MAN <- read.table("notes_MAN.csv", sep=";", dec=",", row.names=1, header=TRUE)
notes_MAN <- read.table("notes_MAN.csv", sep = ";", dec = ",", row.names = 1, header = TRUE)
# on prépare le jeu de données en retirant la colonne des Mentions
# qui est une variable catégorielle
notes_MAN_prep <- notes_MAN[,-1]
notes_MAN_prep <- notes_MAN[, -1]
X <- notes_MAN[1:6,]%>%select(c("Probas","Analyse","Anglais","MAN.Stats","Stats.Inférentielles"))
X <- notes_MAN[1:6,] %>% select(c("Probas", "Analyse", "Anglais", "MAN.Stats", "Stats.Inférentielles"))
# on prépare le jeu de données en retirant la colonne des Mentions
# qui est une variable catégorielle
# View(X)
@@ -52,19 +52,19 @@ X <- notes_MAN[1:6,]%>%select(c("Probas","Analyse","Anglais","MAN.Stats","Stats.
```
```{r}
X <- scale(X,center=TRUE,scale=TRUE)
X <- scale(X, center = TRUE, scale = TRUE)
X
```
- Question 1 : que fait la fonction “scale” dans la cellule ci-dessus
? (1 point)
? (1 point)
La fonction *scale* permet de normaliser et de réduire notre matrice X.
- Question 2: utiliser la fonction eigen afin de calculer les valeurs
propres et vecteurs propres de la matrice de corrélation de X. Vous
stockerez les valeurs propres dans un vecteur nommé lambda et les
vecteurs propres dans une matrice nommée vect (1 point).
propres et vecteurs propres de la matrice de corrélation de X. Vous
stockerez les valeurs propres dans un vecteur nommé lambda et les
vecteurs propres dans une matrice nommée vect (1 point).
```{r}
cor_X <- cor(X)
@@ -78,7 +78,7 @@ lambda
```
- Question 3 : quelle est la part dinertie expliquée par les 2
premières composantes principales ? (1 point)
premières composantes principales ? (1 point)
```{r}
inertie_total_1 <- sum(diag(cor_X)) # Inertie est égale à la trace de la matrice de corrélation
@@ -90,26 +90,26 @@ inertie_axes
```
- Question 4 : calculer les coordonnées des individus sur les deux
premières composantes principales (1 point)
premières composantes principales (1 point)
```{r}
C <- X %*% vect
C[,1:2]
C[, 1:2]
```
- Question 5 : représenter les individus sur le plan formé par les
deux premières composantes principales (1 point)
deux premières composantes principales (1 point)
```{r}
colors <- c('blue', 'red', 'green', 'yellow', 'purple', 'orange')
plot(
C[,1],C[,2],
main="Coordonnées des individus par rapport \n aux deux premières composantes principales",
C[, 1], C[, 2],
main = "Coordonnées des individus par rapport \n aux deux premières composantes principales",
xlab = "Première composante principale",
ylab = "Deuxieme composante principale",
panel.first = grid(),
col = colors,
pch=15
pch = 15
)
legend(x = 'topleft', legend = rownames(X), col = colors, pch = 15)
```
@@ -122,7 +122,7 @@ legend(x = 'topleft', legend = rownames(X), col = colors, pch = 15)
étudiants.
- Question 1 : Écrire maximum 2 lignes de code qui renvoient le nombre
dindividus et le nombre de variables.
dindividus et le nombre de variables.
```{r}
nrow(notes_MAN_prep) # Nombre d'individus
@@ -161,7 +161,7 @@ summary(res.notes, nbind = Inf, nbelements = Inf, nb.dec = 2)
eigen_values <- res.notes$eig
bplot <- barplot(
eigen_values[, 1],
eigen_values[, 1],
names.arg = 1:nrow(eigen_values),
main = "Eboulis des valeurs propres",
xlab = "Principal Components",
@@ -169,11 +169,11 @@ bplot <- barplot(
col = "lightblue"
)
lines(x = bplot, eigen_values[, 1], type = "b", col = "red")
abline(h=1, col = "darkgray", lty = 5)
abline(h = 1, col = "darkgray", lty = 5)
```
- Question 4 : Quelles sont les coordonnées de la variable MAN.Stats
sur le cercle des corrélations ?
sur le cercle des corrélations ?
La variable **MAN.Stats** est la **9-ième** variable de notre dataset. Les
coordonnées de cette variable sont : $(corr(C_1, X_9), corr(C_2, X_9))$
@@ -198,12 +198,12 @@ Les coordonnées de la variable **MAN.Stats** sont donc environ
**(0.766,-0.193)**
- Question 5 : Quelle est la contribution moyenne des individus ?
Quelle est la contribution de Thérèse au 3e axe principal ?
Quelle est la contribution de Thérèse au 3e axe principal ?
```{r}
contribs <- res.notes$ind$contrib
contrib_moy_ind <- mean(contribs) # 100 * 1/42
contrib_therese <- res.notes$ind$contrib["Thérèse",3]
contrib_therese <- res.notes$ind$contrib["Thérèse", 3]
contrib_moy_ind
contrib_therese
@@ -213,7 +213,7 @@ La contribution moyenne est donc environ égale à **2,38%**. La
contribution de Thérèse au 3e axe principal est environ égal à **5.8%**
- Question 6 : Quelle est la qualité de représentation de Julien sur
le premier plan factoriel (constitué du premier et deuxième axe) ?
le premier plan factoriel (constitué du premier et deuxième axe) ?
La qualité de représentation de 'Julien' sur le premier plan factoriel
est donné par la formule :
@@ -236,8 +236,8 @@ principales. On a donc une qualité environ égale à **0.95** soit
**95%.**
- Question 7 : Discuter du nombre daxes à conserver selon les deux
critères vus en cours. Dans toutes la suite on gardera néanmoins 2
axes.
critères vus en cours. Dans toutes la suite on gardera néanmoins 2
axes.
Nous avons vu deux critères principaux: le critère de Kaiser et le
critère du coude. Le critère de Kaiser dit de garder uniquement les
@@ -253,7 +253,7 @@ plus grandes valeurs propres ou bien les quatre plus grandes**, donc
conserver ou bien **deux axes principaux, ou bien quatre**.
- Question 8 : Effectuer létude des individus. Être en particulier
vigilant aux étudiants mal représentés et commenter.
vigilant aux étudiants mal représentés et commenter.
## Contribution moyenne
@@ -266,7 +266,7 @@ La contribution moyenne est donc environ égale à **2,38%**
## Axe 1
```{r}
indiv_contrib_axe_1 <- sort(res.notes$ind$contrib[,1], decreasing = TRUE)
indiv_contrib_axe_1 <- sort(res.notes$ind$contrib[, 1], decreasing = TRUE)
head(indiv_contrib_axe_1, 3)
```
@@ -278,7 +278,7 @@ sur l'axe 1.
## Axe 2
```{r}
indiv_contrib_axe_2 <- sort(res.notes$ind$contrib[,2], decreasing = TRUE)
indiv_contrib_axe_2 <- sort(res.notes$ind$contrib[, 2], decreasing = TRUE)
head(indiv_contrib_axe_2, 3)
```
@@ -294,12 +294,12 @@ axes, c'est à dire ceux qui se distinguent ni par l'axe 1, ni par l'axe
2.
```{r}
mal_representes <- rownames(res.notes$ind$cos2)[rowSums(res.notes$ind$cos2[,1:2]) <= mean(res.notes$ind$cos2[,1:2])]
mal_representes <- rownames(res.notes$ind$cos2)[rowSums(res.notes$ind$cos2[, 1:2]) <= mean(res.notes$ind$cos2[, 1:2])]
mal_representes
```
- Question 9 : Relancer une ACP en incluant la variable catégorielle
des mentions comme variable supplémentaire.
des mentions comme variable supplémentaire.
```{r}
res.notes_sup <- PCA(notes_MAN, scale.unit = TRUE, quali.sup = c("Mention"))
@@ -311,7 +311,7 @@ summary(res.notes_sup, nb.dec = 2, nbelements = Inf, nbind = Inf)
```
- Question 10 : Déduire des deux questions précédentes une
interprétation du premier axe principal.
interprétation du premier axe principal.
La prise en compte de la variable supplémentaire **Mentions**, montre en outre que la
première composante principale est liée à la mention obtenue par les étudiants.
@@ -320,7 +320,7 @@ réussite des étudiants.
- Question 11 : Effectuer lanalyse des variables. Commenter les UE
mal représentées.
mal représentées.
## Contribution moyenne
@@ -340,7 +340,7 @@ toutes une coordonnée positive.
## Axe 2
```{r}
var_contrib_axe_2 <- sort(res.notes_sup$var$contrib[,2], decreasing = TRUE)
var_contrib_axe_2 <- sort(res.notes_sup$var$contrib[, 2], decreasing = TRUE)
head(var_contrib_axe_2, 3)
```
@@ -351,9 +351,9 @@ et **Options.S6**, corrélées négativement.
## Qualité de la représentation
```{r}
mal_representes <- rownames(res.notes_sup$var$cos2[,1:2])[rowSums(res.notes_sup$var$cos2[,1:2]) <= 0.6]
mal_representes <- rownames(res.notes_sup$var$cos2[, 1:2])[rowSums(res.notes_sup$var$cos2[, 1:2]) <= 0.6]
mal_representes
mal_representes_moy <- rownames(res.notes_sup$var$cos2[,1:2])[rowSums(res.notes_sup$var$cos2[,1:2]) <= mean(res.notes_sup$var$cos2[,1:2])]
mal_representes_moy <- rownames(res.notes_sup$var$cos2[, 1:2])[rowSums(res.notes_sup$var$cos2[, 1:2]) <= mean(res.notes_sup$var$cos2[, 1:2])]
mal_representes_moy
```
@@ -364,7 +364,7 @@ sauf 4 variables : l'**Anglais**, **MAN.PPEI.Projet**, **Options.S5** et
On remarque également que l'**Options.S5** est la variable la moins bien représentée dans le plan car sa qualité de représentation dans le plan est inférieure à la moyenne des qualités de représentation des variables dans le plan.
- Question 12 : Interpréter les deux premières composantes
principales.
principales.
On dira que la première composante principale définit un “facteur de taille” car
toutes les variables sont corrélées positivement entre elles. Ce phénomène
@@ -379,5 +379,5 @@ moyenne), c'est à dire selon leur réussite, donc leur moyenne générale de le
Le deuxième axe définit un “facteur de forme” : il y a deux groupes de variables
opposées, celles qui contribuent positivement à laxe, celles qui contribuent
négativement. Vu les variables en question, la deuxième composante principale
négativement. Vu les variables en question, la deuxième composante principale
sinterprète aisément comme opposant les matières du semestre 5 à celles du semestre 6.

8
Analyse Multidimensionnelle/TP1/.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DiscordProjectSettings">
<option name="show" value="PROJECT_FILES" />
<option name="description" value="" />
</component>
</project>

View File

@@ -0,0 +1,12 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<option name="ignoredErrors">
<list>
<option value="N806" />
</list>
</option>
</inspection_tool>
</profile>
</component>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_20" default="true" project-jdk-name="20" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
<component name="RMarkdownSettings">
<option name="renderProfiles">
<map>
<entry key="file://$PROJECT_DIR$/TP2_Enonce_2024.Rmd">
<value>
<RMarkdownRenderProfile>
<option name="outputDirectoryUrl" value="file://$PROJECT_DIR$" />
</RMarkdownRenderProfile>
</value>
</entry>
</map>
</option>
</component>
</project>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/TP1.iml" filepath="$PROJECT_DIR$/.idea/TP1.iml" />
</modules>
</component>
</project>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RGraphicsSettings">
<option name="height" value="450" />
<option name="resolution" value="75" />
<option name="version" value="2" />
<option name="width" value="720" />
</component>
</project>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RMarkdownGraphicsSettings">
<option name="globalResolution" value="75" />
<option name="version" value="2" />
</component>
</project>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RSettings">
<option name="interpreterPath" value="/usr/local/bin/R" />
</component>
</project>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
</component>
</project>

View File

@@ -3,6 +3,7 @@ title: "TP2 : ACP "
output:
pdf_document: default
html_document: default
output: rmarkdown::html_vignette
---
```{r setup, include=FALSE}
@@ -59,7 +60,7 @@ help(PCA)
```{r,echo=FALSE}
res.autos<-PCA(autos, scale.unit=TRUE, quanti.sup = c("PRIX"))
res.autos<-PCA(autos, scale.unit=TRUE, quanti.sup = "PRIX")
```
```{r}
summary(res.autos, nb.dec=2, nb.elements =Inf, nbind = Inf, ncp=3) #les résultats avec deux décimales, pour tous les individus, toutes les variables, sur les 3 premières CP

View File

@@ -0,0 +1,167 @@
---
title: "TP4 Enoncé"
output:
pdf_document: default
html_document: default
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
Nous allons étudier un exemple qui porte sur les exploitations agricoles de la région Midi-Pyrénées. Les données proviennent des “Tableaux Economiques de Midi-Pyrénées”, publiées par la Direction Régionale de Toulouse de lINSEE, en 1996.
Le tableau de contingence provient du croisement de deux variables, Département (8 modalités) et S.A.U (Surface Agricole Utilisée, 6 classes). Notez que cette dernière est une variable continue discrétisée.
Voici les abréviations :
Pour les départements
ARIE= Ariège, AVER: Aveyron, H.G. = Haute-Garonne, GERS, LOT, H.P. = Hautes-Pyrénées, TARN, T.G. = Tarn et Garonne.
Pour les S.A.U
INF05: moins de 5 hectares, S0510: entre 5 et 10 hectares etc..., SUP50: plus de 50 hectares.
1) Importer le tableau de contingence. Appeler le depsau.
```{r}
library(FactoMineR)
rm(list=ls())
depsau <- read.table("depsau.csv", sep=";",header=TRUE, row.names=c("X"))
```
2) L'étude porte sur combien d'exploitations agricoles ?
```{r}
n = sum(depsau)
print(c("l'étude porte sur",n,"exploitations"),quote=FALSE)
```
3) Afin d'étudier la liaison entre les variables Département et S.A.U. réalisez un test du khi-2 d'indépendance au seuil d'erreur 5% (bien écrire le test complètement sur votre copie avec les hypothèses etc.). Vous pourrez utiliser la fonction chisq.test
```{r}
chi <- chisq.test(depsau)
chi$statistic
```
```{r}
tobs <- sum((depsau - chi$expected)**2/chi$expected)
tobs
```
```{r}
quantile <- qchisq(0.95,(dim(depsau)[1]-1)*(dim(depsau)[2]-1))
quantile
```
```{r}
chi
```
4) Afficher le tableau des effectifs observés. Vous pourrez utiliser la fonction summary et la question 3.
```{r}
par(mar =c(a=6,b=6,c=6,d=6))
barplot(t(chi$observed),beside = TRUE, col = rainbow(6),main = "Observés")
```
5) Afficher le tableau des effectifs attendus sous l'hypothèse d'indépendance entre les deux variables. Vous pourrez utiliser la fonction summary et la question 3.
```{r}
par(mar =c(a=6,b=6,c=6,d=6))
barplot(t(chi$expected),beside = TRUE, col = rainbow(6),main = "Observés")
```
6) Calculer le tableau des contributions au chi-2. Commenter.
```{r}
contrib <- round(((depsau - chi$expected)**2/chi$expected) * 100/tobs,digits = 2)
```
```{r}
```
7) Calculer le tableau des probabilités associé au tableau de contingence.
```{r}
prob <- depsau/n
```
8) Calculer les probabilités marginales des lignes. On pourra utiliser la fonction apply.
```{r}
marg.ligne <- apply(prob,MARGIN = 1,FUN = sum)
```
9) Calculer le tableau des profils lignes et le profil moyen associé. Commenter.
```{r}
prof.ligne <- prob / marg.line
```
```{r}
prof.ligne.moyen <- apply(prob,2,sum)
```
10) Calculer les probabilités marginales des colonnes.
```{r}
marg.col <- prof.ligne.moyen
```
11) Calculer le tableau des profils colonnes et le profil moyen associé.
```{r}
prof.col <- t(t(prob) / marg.col)
```
```{r}
prof.col.moyen <- marg.ligne
```
12) Lancer une AFC avec FactoMineR sur depsau.
```{r}
res.depsau<-CA(depsau)
summary(res.depsau)
eig.val <- res.depsau$eig
barplot(eig.val[, 2],
names.arg = 1:nrow(eig.val),
main = "Variances Explained by Dimensions (%)",
xlab = "Principal Dimensions",
ylab = "Percentage of variances",
col ="steelblue")
# Add connected line segments to the plot
#lines(x = 1:nrow(eig.val), eig.val[, 2],
# type = "b", pch = 19, col = "red")
plot(res.depsau, invisible = "row")
plot(res.depsau, invisible = "col")
```
13) Combien d'axes factoriels y-a-t-il à calculer ?
Le nombre d'axes factoriels a calculer est min(I-1,J-1) avec I le nombre de lignes et J le nombres de colones. Il y en a donc 5. Cependant, par le critère du coude, on en concerve que 2.
14) Faire l'étude statistique complète.
Le premier axe range les espaces agricoles selon leur superficie et les régions selon le nombres de espaces agricoles ayant la même taille.
Le second axe range les régions selon leur concentration en espaces agricole extrême.

View File

@@ -0,0 +1,13 @@
Version: 1.0
RestoreWorkspace: Default
SaveWorkspace: Default
AlwaysSaveHistory: Default
EnableCodeIndexing: Yes
UseSpacesForTab: Yes
NumSpacesForTab: 2
Encoding: UTF-8
RnwWeave: Sweave
LaTeX: pdfLaTeX

View File

@@ -0,0 +1,9 @@
;INF05;S0510;S1020;S2035;S3550;SUP50
ARIE;870;330;730;680;470;890
AVER;820;1260;2460;3330;2170;2960
H.G.;2290;1070;1420;1830;1260;2330
GERS;1650;890;1350;2540;2090;3230
LOT;1940;1130;1750;1660;770;1140
H.P.;2110;1170;1640;1500;550;430
TARN;1770;820;1260;2010;1680;2090
T.G;1740;920;1560;2210;990;1240
1 INF05 S0510 S1020 S2035 S3550 SUP50
2 ARIE 870 330 730 680 470 890
3 AVER 820 1260 2460 3330 2170 2960
4 H.G. 2290 1070 1420 1830 1260 2330
5 GERS 1650 890 1350 2540 2090 3230
6 LOT 1940 1130 1750 1660 770 1140
7 H.P. 2110 1170 1640 1500 550 430
8 TARN 1770 820 1260 2010 1680 2090
9 T.G 1740 920 1560 2210 990 1240

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="jdk" jdkName="$USER_HOME$/anaconda3" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@@ -0,0 +1,157 @@
import numpy as np
import matplotlib.pyplot as plt
import numpy.random as random
import itertools
class ModeleSchelling:
def __init__(self, M, p, L):
self.M = M
self.p = p
self.L = L
self.Ntot = 0
self.grille = self.initialisation_grille()
def initialisation_grille(self):
grille = np.zeros((self.M, self.M), dtype=int)
occupes = np.random.choice(self.M * self.M, size=int((1 - self.p) * self.M * self.M), replace=False)
self.Ntot = len(occupes)
for occupe in occupes:
i, j = divmod(occupe, self.M)
grille[i, j] = random.choice([-1, 1])
return grille
def afficher_grille(self, title):
color = plt.imshow(self.grille, cmap='coolwarm', interpolation='nearest')
plt.colorbar(color)
plt.title(title)
plt.show()
def satisfaisante(self, x, y, agent):
groupe = self.grille[agent[0], agent[1]]
count_similaires = 0
count_differents = 0
voisins = []
for (i,j) in list(itertools.product([x-1, x, x+1], [y-1, y, y+1])):
if 0 <= i < self.M and 0 <= j < self.M and (i, j) != (x, y):
voisins.append((i, j))
for voisin in voisins:
i, j = voisin
case = self.grille[i, j]
if case == 0: pass
else:
if case == groupe:
count_similaires += 1
else:
count_differents += 1
if count_similaires+count_differents == 0:
return False
else:
return float(count_similaires/(count_similaires+count_differents)) >= self.L
def clusters(self):
visited = np.zeros_like(self.grille, dtype=bool)
clusters = []
def dfs(i, j, groupe, cluster):
stack = [(i, j)]
while stack:
i, j = stack.pop()
if 0 <= i < self.M and 0 <= j < self.M and not visited[i, j] and self.grille[i, j] == groupe:
visited[i, j] = True
cluster.add((i, j))
for (di, dj) in [(-1, 0), (1, 0), (0, -1), (0, 1)]:
stack.append((i + di, j + dj))
added_clusters = set()
for groupe in [-1, 1]:
indices = np.argwhere((self.grille == groupe) & (~visited))
for i, j in indices:
current_cluster = set()
dfs(i, j, groupe, current_cluster)
if current_cluster and frozenset(current_cluster) not in added_clusters:
clusters.append((groupe, len(current_cluster)))
added_clusters.add(frozenset(current_cluster))
return clusters
def coef_segregation(self):
S = 0
clusters = self.clusters()
for i in range(len(clusters)):
S += int(clusters[i][1])**2
return S * 2 / (self.Ntot**2)
def simuler(self, T=400, move_satisfaits=True):
for t in range(1, int((1-self.p)*self.M**2 * T)):
agents = [(i, j) for i, row in enumerate(self.grille) for j, val in enumerate(row) if val != 0]
agent = agents[random.randint(0, len(agents) - 1)]
while not move_satisfaits and self.satisfaisante(agent[0], agent[1], agent):
agents.remove(agent)
if len(agents) == 0:
break
agent = agents[random.randint(0, len(agents) - 1)]
cases_non_occupees = [(i, j) for i, row in enumerate(self.grille) for j, val in enumerate(row) if val == 0]
nouvelle_case = cases_non_occupees[random.randint(0, len(cases_non_occupees) - 1)]
while not self.satisfaisante(nouvelle_case[0], nouvelle_case[1], agent):
cases_non_occupees.remove(nouvelle_case)
if len(cases_non_occupees) == 0:
break
nouvelle_case = cases_non_occupees[random.randint(0, len(cases_non_occupees) - 1)]
self.grille[nouvelle_case[0]][nouvelle_case[1]] = self.grille[agent[0]][agent[1]]
self.grille[agent[0]][agent[1]] = 0
cases_non_occupees.append(agent)
self.afficher_grille(f'Configuration Finale de T={T} pour (M, p, L) = ({self.M},{self.p},{self.L})')
M = 100
p = 5/100
L = 1/2
modele = ModeleSchelling(M, p, L)
modele.afficher_grille("Configuration Initiale")
for T in [1, 10, 100, 400]:
modele.simuler(T, True)
M = 50
T = 400
p_list = [2/100, 6/100, 12/100, 18/100]
L_list = [1/5, 2/7, 1/3, 5/7, 3/4]
for p in p_list:
for L in L_list:
modele = ModeleSchelling(M, p, L)
modele.afficher_grille(f"Configuration Initiale pour p={p} et L={L}")
modele.simuler(T, False)
M = 40
T = 400
p = 5/100
L = 2/7
modele = ModeleSchelling(M, p, L)
modele.afficher_grille("Configuration Initiale")
modele.simuler(T)
print(modele.clusters())
print(len(modele.clusters()))
print(modele.coef_segregation())

8
Projet Numérique/Java/.idea/.gitignore generated vendored Normal file
View File

@@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DiscordProjectSettings">
<option name="show" value="PROJECT_FILES" />
<option name="description" value="" />
</component>
</project>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component>
</project>

View File

@@ -0,0 +1,12 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<option name="ignoredErrors">
<list>
<option value="N806" />
</list>
</option>
</inspection_tool>
</profile>
</component>

6
Projet Numérique/Java/.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_20" default="true" project-jdk-name="20" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/Java.iml" filepath="$PROJECT_DIR$/Java.iml" />
</modules>
</component>
</project>

6
Projet Numérique/Java/.idea/vcs.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
</component>
</project>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

View File

@@ -0,0 +1,14 @@
public class SchellingModel {
private int M;
private int p;
private int L;
private int Ntot;
public SchellingModel(int M, int p, int L) {
this.M = M;
this.p = p;
this.L = L;
this.Ntot = L * L;
}
}

View File

@@ -0,0 +1,2 @@
package fr.arthurdanjou;public class SchellingModel {
}