Le revenu non agricole fait référence aux revenus générés par des activités économiques autres que l’agriculture. Il englobe généralement les revenus provenant de sources telles que l’emploi salarié dans les secteurs industriel et des services, les revenus d’entreprise, les revenus de location immobilière, les revenus de propriété intellectuelle, les pensions et les transferts sociaux, etc.
Lors du recensement de 2021, il a été collecté des données des entreprises non agricoles à travers le Sénégal, données regroupées dans les bases (a) et (b). Dans le but de déduire le revenu non agricole sénégalais, l’on doit faire usage de ces bases. Il est donc nécessaire de procéder à l’apurement des deux bases pour obtenir des résultats fiables.
L’objectif de ce document est d’expliquer le procédé par lequel ces bases ont été apurées.
Pour le calcul du revenu non agricole, la section 10 est celle dont l’usage a été fait.
En effet, cette section est composé de deux bases (a) et (b). La base (a) est une base ménage et la section (b) est une base entreprise. Dans la base (a), les variables révèlent quant à la présence d’une entreprise non-agricole dans le ménage en répondant à des questions par Oui(1) ou Non(2). La base (b) est quant à elle, rassemble les informations sur les entreprises présentes dans le ménage.
Dans la base (a), toutes les variables sont d’intérêt car renseignant sur la présence d’une entreprise.
Dans la base (b), le but de ce document étant le calcul des revenu non agricole, les variables d’intérêts sont logiquement les variables qui retracent le compte financier de l’entreprise. Cela implique les variables s10q46 à s10q57. En plus de ceux là, à des fins de statistiques descriptives, certaines variables ont été ajoutées, les variables qui donnent un aperçu de l’activité de l’entreprise, de la section, de la branche à laquelle elle appartient mais également les variables qui donnent la situation formelle de l’entreprise c’est à dire la possesion de numéro de téléphone, la forme légale de l’entreprise, la source de financement, la possession d’une comptabilité etc.
Les bases, prises individuellement, sont cohérentes. Cependant, il peut y avoir incohérence entre les deux bases si le ménage renseigne n’avoir aucune entreprise dans la base (a) mais rempli la base (b). Il n’y a cependant pas de ces cas dans la section 10. Les bases sont donc tout à fait cohérentes entre elles.
En premier lieu, il est important de remarquer que tous les ménages qui ont au moins une entreprise ont bien répondu aux questions dans la base (b) sans valeurs manquantes. Les ménages où il n’y a pas d’entreprises, n’ont répondu à aucune question dans le base (b). Les valeurs manquantes, pour ces ménages, seront remplacés par des 0 pour les variables d’intérêt principal c’est à dire les variables s10q46 à s10q57 (pour pouvoir déduire le revenu agricole par ménage) et par des cases vides pour les autres variables étant donné que ce sont des variables pour lesquelles les techniques usuelles de gestion des NA ne sont pas fonctionnelles car étant ponctuelles (par exemple le code de section qui prend des valeurs spécifiques). Les ménages qui n’ont pas rempli la based (a) n’ont pas rempli la base (b) non plus.
Par conséquent, les ménages qui n’ont pas rempli la base (a) seuls seront retirés. Il est d’abord nécessaire de fusionner les deux bases avant d’effectuer l’opération.La base (b) est la base de référence pour la fusion.
Dans la base (b), il y a 3382 entreprises et dans la base (a), 2485 ménages. Il y a 5 ménages qui n’ont rempli ni la base (a) ni la base (b). Et parmi ceux qui ont rempli, 961 n’ont pas d’entreprises. La base apurée fait donc un total de 3377 répondants dont 961 n’ont pas d’entreprises.
#Preparation des donnèes
library(haven)
library(dplyr)
library(psych)
path = ('C:/Users/user/Desktop/mtn/ENSAE/ISE/ISEP2/SEMESTRE 2/Informatique/R_2023/Projet_final/Ressources')
path_10a = paste0(path, '/s10a_me_SEN_2021.dta')
path_10b = paste0(path, '/s10b_me_SEN_2021.dta')
data_10a = read_dta(path_10a)
data_10b = read_dta(path_10b)
## Starting with the 10b base
data_10b_subset = subset(data_10b, select = c('interview__key', 's10q12a', 's10q16', 's10q17a',
's10q17b', 's10q17c','s10q23', 's10q28', 's10q29', 's10q30', 's10q31', 's10q32',
's10q33', 's10q34', 's10q46', 's10q47', 's10q48', 's10q49', 's10q50', 's10q51',
's10q52', 's10q53', 's10q54', 's10q55', 's10q56', 's10q57'))
## Renaming the variables
new_names_10b = c('interview_key', 'Activity', 'Product', 'Section_Code', 'Branch_Code', 'Activity_Code', 'Activity_local',
'Phone_number', 'Accounting', 'Taxation_phone', 'RC_Registered', 'Person_registered', 'Legal_form', 'Finance_source', 'Sold_product', 'Buy_product', 'Profit_product',
'Raw_materials_buy', 'Profit_services', 'Other_CI', 'Home_spending', 'Services_fees', 'Other_spending', 'Patente', 'Taxes', 'Admin_fees')
colnames(data_10b_subset) = new_names_10b
View(data_10b_subset)
variables_avant_sold_product = c('interview_key', 'Activity', 'Product', 'Section_Code', 'Branch_Code',
'Activity_Code', 'Activity_local', 'Phone_number', 'Accounting',
'Taxation_phone', 'RC_Registered', 'Person_registered', 'Legal_form', 'Finance_source')
variables_apres_sold_product = c('Sold_product', 'Buy_product', 'Profit_product', 'Raw_materials_buy',
'Profit_services', 'Other_CI', 'Home_spending', 'Services_fees',
'Other_spending', 'Patente', 'Taxes', 'Admin_fees')
# Remplacer les valeurs manquantes par des chaînes vides pour les variables avant 'Sold_product'
data_10b_subset = data_10b_subset %>%
mutate(across(all_of(variables_avant_sold_product), ~ ifelse(is.na(.), "", as.character(.))))
# Remplacer les valeurs manquantes par des zéros pour les variables après 'Sold_product'
data_10b_subset = data_10b_subset %>%
mutate(across(all_of(variables_apres_sold_product), ~ ifelse(is.na(.), 0, as.numeric(.))))
## Now for the 10a base
data_10a_subset = subset(data_10a, select = c('interview__key', 's10q01', 's10q02', 's10q03', 's10q04', 's10q05',
's10q06', 's10q07', 's10q08', 's10q09', 's10q10'))
new_names_10a = c('interview_key', 's10q01', 's10q02', 's10q03', 's10q04', 's10q05',
's10q06', 's10q07', 's10q08', 's10q09', 's10q10')
colnames(data_10a_subset) = new_names_10a
View(data_10a_subset)
## Merging the two dataset
data_10 <- merge(data_10a_subset, data_10b_subset, by = 'interview_key', all.y = TRUE)
# Traitement des variables
## Nombre de na
na_count = colSums(is.na(data_10))
print(na_count)
## interview_key s10q01 s10q02 s10q03
## 0 5 5 5
## s10q04 s10q05 s10q06 s10q07
## 5 5 5 5
## s10q08 s10q09 s10q10 Activity
## 5 5 5 0
## Product Section_Code Branch_Code Activity_Code
## 0 0 0 0
## Activity_local Phone_number Accounting Taxation_phone
## 0 0 0 0
## RC_Registered Person_registered Legal_form Finance_source
## 0 0 0 0
## Sold_product Buy_product Profit_product Raw_materials_buy
## 0 0 0 0
## Profit_services Other_CI Home_spending Services_fees
## 0 0 0 0
## Other_spending Patente Taxes Admin_fees
## 0 0 0 0
##Like we can see with the na_count, there is no NA for the data_10b previous base. But we have some NA values in the 10a base.
## Therefore, we are going to drop these NA values from the data_10 base so that we only got persons who filled the form in the database.
data_10 <- data_10[complete.cases(data_10), ]
View(data_10) ## We now have 3377 lines in our chart. 5 less lines than the previous base. We dropped the NA values
## Let's check the number of NA values
na_count = colSums(is.na(data_10))
print(na_count) ## It's OK
## interview_key s10q01 s10q02 s10q03
## 0 0 0 0
## s10q04 s10q05 s10q06 s10q07
## 0 0 0 0
## s10q08 s10q09 s10q10 Activity
## 0 0 0 0
## Product Section_Code Branch_Code Activity_Code
## 0 0 0 0
## Activity_local Phone_number Accounting Taxation_phone
## 0 0 0 0
## RC_Registered Person_registered Legal_form Finance_source
## 0 0 0 0
## Sold_product Buy_product Profit_product Raw_materials_buy
## 0 0 0 0
## Profit_services Other_CI Home_spending Services_fees
## 0 0 0 0
## Other_spending Patente Taxes Admin_fees
## 0 0 0 0
## Verification of the coherence of the data.
## In this case, this work is about seeing if someone filled the 10b data base even though he answered 'No' to all the 10a question
i = 0
error_filling = list()
variables_data_10 = c('s10q02', 's10q03', 's10q04', 's10q05', 's10q06', 's10q07', 's10q08', 's10q09', 's10q10')
for (row in 1:nrow(data_10)) {
if (all(data_10[row, variables_data_10] == 2) && all(data_10[row, variables_apres_sold_product] != 0)) {
i = i + 1
error_filling = c(error_filling, row)
}
}
print(i)
## [1] 0
print(error_filling)
## list()
### On voit donc qu'il n'existe pas d'éléments ayant rempli 'Non' à toutes les questions de 10a mais qui a rempli 10b
## Nombre de répondant n'ayant pas d'entreprises
count = 0
if (sum(apply(data_10[, variables_data_10], 1, function(x) all(x == 2))) > 0) {
count = sum(apply(data_10[, variables_data_10], 1, function(x) all(x == 2)))
}
print(count)
## [1] 961
### Il y a donc 961 répondants qui n'ont pas d'entreprises.
## De ce fait la base est tout à fait cohérente.
En définitive, la base compte 3377 lignes qui seront analysés par des analyses univariées, bivariées afin de déduire le niveau de revenu non agricole du Sénégal.