### Load and prepare the ozone dataset Source: http://factominer.free.fr/missMDA/ozone.R Imports the ozone dataset from a URL and separates continuous variables for analysis. ```R don <- read.table("http://factominer.free.fr/missMDA/ozoneNA.csv",header=TRUE,sep=",",row.names=1, stringsAsFactors = TRUE) WindDirection <- don[,12] don <- don[,1:11] #### keep the continuous variables ``` -------------------------------- ### Visualize Missing Data Patterns Source: http://factominer.free.fr/missMDA/ecological.csv Uses the VIM package to aggregate missing data patterns and MCA to visualize the structure of missingness. ```R #### Visualize the pattern library(VIM) aggr(Ecolo) aggr(Ecolo,only.miss=TRUE,numbers=TRUE,sortVar=TRUE) res <- summary(aggr(Ecolo,prop=TRUE,combined=TRUE))$combinations res[rev(order(res[,2])),] mis.ind <- matrix("o",nrow=nrow(Ecolo),ncol=ncol(Ecolo)) mis.ind[is.na(Ecolo)] <- "m" dimnames(mis.ind) <- dimnames(Ecolo) library(FactoMineR) resMCA <- MCA(mis.ind) plot(resMCA,invis="ind",title="MCA graph of the categories") ``` -------------------------------- ### Estimate parameters using EM algorithm Source: http://factominer.free.fr/missMDA/ozone.R Uses the norm package to estimate mean and covariance parameters via the EM algorithm. ```R library(norm) pre <- prelim.norm(as.matrix(don)) thetahat <- em.norm(pre) getparam.norm(pre,thetahat) ``` -------------------------------- ### Perform multiple imputation Source: http://factominer.free.fr/missMDA/ozone.R Implements multiple imputation using Amelia, mice, and missMDA packages. ```R don <- read.table("ozoneNA.csv",header=TRUE,sep=",",row.names=1) WindDirection <- don[,12] don <- don[,1:11] #### keep the continuous variables library(Amelia) res.amelia <- amelia(don,m=100,p2s=0) library(mice) res.mice <- mice(don,m=100,defaultMethod="norm", printFlag=F) # here the variability of the regression parameters is obtained by bootstrap library(missMDA) res.MIPCA <- MIPCA(don,ncp=2) ``` -------------------------------- ### Visualize missing data patterns Source: http://factominer.free.fr/missMDA/ozone.R Uses the VIM package to aggregate and plot missing value distributions and associations. ```R library(VIM) aggr(don) aggr(don,only.miss=TRUE,sortVar=TRUE) res <- summary(aggr(don,prop=TRUE,combined=TRUE))$combinations res[rev(order(res[,2])),] matrixplot(don,sortby=2) marginplot(don[,c("T9","maxO3")]) ``` -------------------------------- ### Create categorical missing indicator matrix Source: http://factominer.free.fr/missMDA/ozone.R Generates a matrix identifying observed ('o') and missing ('m') values, followed by Multiple Correspondence Analysis. ```R # Creation of a categorical data set with "o" when observed and "m" when missing mis.ind <- matrix("o",nrow=nrow(don),ncol=ncol(don)) mis.ind[is.na(don)] <- "m" dimnames(mis.ind) <- dimnames(don) mis.ind # Performing a multiple correspondence analysis to visualize the association library(FactoMineR) resMCA <- MCA(mis.ind) plot(resMCA,invis="ind",title="MCA graph of the categories") ``` -------------------------------- ### Visualize and pool multiple imputation results Source: http://factominer.free.fr/missMDA/ozone.R Checks imputation quality via density plots and pools regression results across imputed datasets. ```R ## Checking and visualization of the imputations plot(res.amelia) par(mfrow=c(1,1)) compare.density(res.amelia, var="T12") overimpute(res.amelia, var="maxO3") # visualization with PCA plot(res.MIPCA,choice= "ind.supp"); plot(res.MIPCA,choice="var") ## Pooling the results lm.mice.out <- with(res.mice, lm(maxO3 ~ T9+T12+T15+Ne9+Ne12+Ne15+Vx9+Vx12+Vx15+maxO3v)) pool.mice <- pool(lm.mice.out) resultmice <- summary(pool.mice) require(mice) imp<-prelim(res.mi=res.MIPCA,X=ozone[,1:11]) fit <- with(data=imp,exp=lm(maxO3~T9+T12+T15+Ne9+Ne12+Ne15+Vx9+Vx12+Vx15+maxO3v)) res.pool<-pool(fit) summary(res.pool) ``` -------------------------------- ### Visualize imputation uncertainty Source: http://factominer.free.fr/missMDA/PCA.html Visualizes the uncertainties generated by multiple imputation in a PCA context. ```R library(missMDA) data(orange) nb = estim_ncpPCA(orange,ncp.max=5) res.comp = MIPCA(orange, ncp = nbdim$ncp, nboot = 1000) plot(res.comp) ``` -------------------------------- ### Load and Clean Ecological Data Source: http://factominer.free.fr/missMDA/ecological.csv Imports the dataset and removes species rows that contain only missing values for continuous variables. ```R Ecolo <- read.csv("ecological.csv", header = TRUE, sep=";",dec=",",stringsAsFactors = TRUE) ## Delete species with only missing values for contiuous variables ind <- which(rowSums(is.na(Ecolo[,-1])) == 6) biome <- Ecolo[-ind,1] ### Keep a categorical variable Ecolo <- Ecolo[-ind,-1] ### Select continuous variables dim(Ecolo) ``` -------------------------------- ### Impute and Analyze Data Source: http://factominer.free.fr/missMDA/ecological.csv Performs PCA imputation using missMDA and visualizes the results with PCA. ```R ### Impute the incomplete data set library(missMDA) ### nb <- estim_ncpPCA(Ecolo,method.cv="Kfold",nbsim=100) ### Time consuming! res.comp <- imputePCA(Ecolo,ncp=2) #Perform a PCA on the completed data set imp <- cbind.data.frame(res.comp$completeObs,biome) res.pca <- PCA(imp,quali.sup=7,graph=FALSE) plot(res.pca, hab=7, lab="quali") plot(res.pca, hab=7, lab="quali",invisible="ind") plot(res.pca, choix="var") ``` -------------------------------- ### Perform multiple imputation for PCA Source: http://factominer.free.fr/missMDA/PCA.html Generates multiple imputed datasets using the PCA model to account for uncertainty. ```R library(missMDA) data(orange) nb = estim_ncpPCA(orange,ncp.max=5) res.comp = MIPCA(orange, ncp = nbdim$ncp, nboot = 1000) ``` -------------------------------- ### Perform single imputation Source: http://factominer.free.fr/missMDA/ozone.R Demonstrates single imputation using normal distribution draws or PCA-based methods. ```R ## Single imputation using a draw from a normal distribution library(norm) pre <- prelim.norm(as.matrix(don)) thetahat <- em.norm(pre) rngseed(123) ### must be done! imp <- imp.norm(pre,thetahat,don) ## Single imputation with PCA library(missMDA) nb <- estim_ncpPCA(don) nb$ncp plot(0:5,nb$criterion,xlab="dim",ylab="MSEP") res.comp <- imputePCA(don,ncp=2) res.comp$completeObs indvar="T9" indNA=which(is.na(don[,indvar])) plot(density(res.comp$completeObs[indNA,indvar]),main="Observed and imputed values for T9",xlab="T9") lines(density(res.comp$completeObs[which(!((1:nrow(don))%in%indNA)),indvar]),col="red") legend("topleft",text.col=c("black","red"),legend=c("Observed values","Imputations")) #Performing a PCA on the completed data set imp <- cbind.data.frame(res.comp$completeObs, WindDirection) res.pca <- PCA(imp,quanti.sup=1,quali.sup=12) plot(res.pca, hab=12, lab="quali") plot(res.pca, choix="var") res.pca$ind$coord #scores (principal components) res.pca$var$coord ``` -------------------------------- ### Analyze Missing Value Proportions Source: http://factominer.free.fr/missMDA/ecological.csv Calculates the overall proportion of missing values and checks the impact of listwise deletion. ```R ## proportion of missing values sum(is.na(Ecolo))/(nrow(Ecolo)*ncol(Ecolo)) # 55% of missing values ## Delete species with missing values dim(na.omit(Ecolo)) # only 72 remaining species! ``` -------------------------------- ### Visualize Imputation Uncertainty with MIPCA Source: http://factominer.free.fr/missMDA/trustMI.html Estimate the number of dimensions for imputation and plot the results to assess uncertainty. ```R library(missMDA) data(orange) nbdim = estim_ncpPCA(orange) # estimate the number of dimensions to impute plot(res.comp) ``` -------------------------------- ### Perform Multiple Imputation with PCA Source: http://factominer.free.fr/missMDA/MI.html Estimates the number of dimensions and performs multiple imputation for continuous data using PCA. ```R library(missMDA) data(orange) nbdim = estim_ncpPCA(orange,ncp.max=5) res.comp = MIPCA(orange, ncp = nbdim$ncp, nboot = 1000) plot(res.comp) ``` -------------------------------- ### Perform Multiple Imputation with MCA Source: http://factominer.free.fr/missMDA/MI.html Estimates the number of dimensions and performs multiple imputation for qualitative data using MCA. ```R library(missMDA) data(vnf) nbdim = estim_ncpMCA(vnf,ncp.max=5) ## Time-consuming, nb = 4 res = MIMCA(vnf, ncp=4,nboot=10) plot(res) ``` -------------------------------- ### Impute missing values for PCA Source: http://factominer.free.fr/missMDA/PCA.html Estimates the optimal number of dimensions and imputes missing values in a dataset before performing PCA. ```R library(missMDA) data(orange) nb = estim_ncpPCA(orange,ncp.max=5) res.comp = imputePCA(orange,ncp=2) res.pca = PCA(res.comp$completeObs) ``` -------------------------------- ### Impute missing values and perform MCA Source: http://factominer.free.fr/missMDA/MCA.html Estimates the number of dimensions, imputes the disjunctive data table, and performs MCA on the completed matrix. ```R library(missMDA) data(vnf) nb = estim_ncpMCA(vnf,ncp.max=5) tab.disj.comp = imputeMCA(vnf, ncp=4)$tab.disj res.mca = MCA(vnf,tab.disj=tab.disj.comp) ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.