Namespaces in R Language Made Easy

The packages can have namespaces in R Language, and currently, all of the base and recommended packages do except the dataset packages. Understanding the use of namespaces is vital if one plans to submit a package to CRAN because CRAN requires that the package plays nicely with other submitted packages on CRAN.

Namespaces in R Language

Namespaces in R Language are essential tools for organizing code and preventing naming conflicts.
They become especially important when dealing with multiple packages, each potentially containing functions or objects with the same names.

Namespaces in R Language ensure that other packages will not interfere with your code and that the package works regardless of the environment in which it’s run. In R Language, the namespace environment is the internal interface of the package. It includes all objects in the package, both exported and non-exported to ensure that every function can find every other function in the package.

For example, plyr and Hmisc both provide a function namely summarize(). Loading plyr package and then Hmise, the summarize() function will refer to the Hmisc. However, loading the package in the opposite order, the summarize() function will refer to the plyr package version.

To avoid confusion, one can explicitly refer to the specific function, for example,

Hmisc::summarize

and

plyr::summarize
Namespaces in R Language

Now, the order in which the packages are loaded would not matter.

The Namespaces in R Language do three things:

  • Namespaces allow the package writer to hide functions and data that are meant only for internal use,
  • Namespaces prevent functions from breaking when a user (or other package writers) picks a name that clashes with one in the package, and
  • Namespaces in R provide a way to refer to an object within a particular package

Namespace Operators

In R language, two operators work with namespaces.

  • Doule-Colon Operator
    The double-colon operator:: selects definitions from a particular namespace. The transpose function t() will always be available as the base::t because it is defined in the base package. Only functions exported from the package can be retrieved this way.
  • Triple-Colon Operator
    The triple-colon operator ::: acts like the double-colon operator but also allows access to hidden objects. Users are more likely to use the getAnywhere() function, which searches multiple packages.

Packages are often interdependent, and loading one may cause others to be automatically loaded. The colon operators will also cause automatic loading of the associated package. When packages with namespaces are loaded automatically they are not added to the search list.

Benefits of using namespaces:

  • Clarity: Namespaces clarify the code by avoiding ambiguity when using common function names across different packages.
  • Fewer conflicts: Namespaces prevent errors that might arise if a user accidentally overwrites an object from another package with the same name.
  • Modular design: Namespaces promotes a modular approach to code organization, making managing and reusing code across projects easier.

FAQs about Namespaces in R Language

  1. What is namespace in R Language?
  2. What do namespaces in R language ensure?
  3. List and discuss namespace operators.
  4. Write a note on the benefits of using namespaces in R Language.
  5. What is the purpose of getAnywhere() function in R?
  6. Discuss double colon and triple colon operators.

R Language Basics: Frequently Asked Questions

Online MCQs Test Preparation Website with Answers

mctest R Package for Detection of Collinearity

In this post, I will discuss the existence and detection of collinearity among regressors using the mctest R Package.

The problem of multicollinearity plagues the numerical stability of regression estimates. It also causes some serious problems in the validation and interpretation of the regression model. Consider the usual multiple linear regression model,

$$y = X \beta+u$$

where $y$ is an $n\times 1$ vector of observation on dependent variable, $X$ is known design matrix of order $\times p$, having full-column rank $p$, $\beta$ is $p \times 1$ vector of unknown parameters and $u$ is an $n\times 1$ vector of random errors with mean zero and variance $\sigma^2 I_n$, where $I_n$ is an identity matrix of order $n$.

Collinearity Among Regressors

The existence of linear dependence (relationship) between regressors can affect the regression model’s ability to estimate the model’s parameters. Therefore, multicollinearity is a lack of independence or the presence of interdependence signified by usually high inter-correlations within a set of regressors (predictors).

In case of severe multicollinearity (mathematically when the matrix is ill-conditioned) the $X’X$ matrix cannot be inverted, implausible signs of coefficients, low t-ratios, high R-squared values, inflated standard errors, wider confidence intervals, very large condition number (CN) and non-significant and/or magnitude of regression coefficient estimates are some of the possible issues.

There are many diagnostic methods are available to check the existence of collinearity among regressors, such as variance inflation Factor (VIF), values of pair-wise correlation among regressors, eigenvalues, CN, Farrar and Glauber tests, Theil’s measure, and Klein’s rule, etc.

Our recently developed R package mctest computes several collinearity diagnostics measures to test the existence of collinearity among regressors. We classified these measures as individual collinearity diagnostics and overall collinearity diagnostics. Overall collinearity diagnostic includes determinant of $X’X$ matrix, red indicator, Farrar Chi-Square test, Theil indicator, CN, and the sum of lambda inverse values. Individual collinearity diagnostics include VIF/ TOL, Farrar and Glauber Wi test, the relationship between $R^2$ and F-test, corrected VIF (CVIF), and Klein’s rule.

How to use the mctest R Package

You must have installed and loaded the mctest R Package to start with the testing/ detection of collinearity among regressors. As an example, we used Hald data which is already bundled in the mctest R Package.

mctest R package have 4 functions namely, mctest(), omcdiag(), imcdiag() and mc.plot() functions. The mctest() function can be used to have overall and/or individual collinearity diagnostic. The mc.plot() is used to draw the graph of VIF and eigenvalues to judge collinearity among regressors.

mctest illustrative Example

Arguments of mctest with syntax are

mctest(x, y, type = c("o", "I", "b"), na.rm = TRUE, Inter = TRUE, method = NULL, corr = FALSE, detr = 0.01, red = 0.5, theil = 0.5, cn = 30, vif = 10, tol = 0.1, conf = 0.95, cvif = 10, leamer = 0.1, all = all)

See the detail of each argument and see the mctest package documentation. Following are a few commands that can be used to get different collinearity diagnostics.

x <- Hald[ ,-1]     # X variables from Hald data
> y <- Hald[ ,1]      # y variable from Hald data

mctest(x, y)        # default collinearity diagnostics
mctest(x, y, type = "i")  # individual collinearity diagnostics
mctest(x, y, type = "o") # overall collinearity diagnostics

Overall Collinearity Diagnostics in R

For overall collinearity diagnostics, eigenvalues, and condition numbers are also produced whether the intercept term is included or not. The syntax of omcdiag() function is

omcdiag(x, y, na.rm = TRUE, Inter = True, detr = 0.01, red = 0.5, conf = 0.95, theil = 0.5, cn = 30, …)

Determinant of the correlation matrix, Farrar test of Chi-square, Red indicator, the sum of lambda inverse values, Theils’ indicator, and CN.

omcdiag(x, y, Inter=FALSE)
omcdiag(x, y)[1]

omcidag(x,y, detr = 0.001, conf = 0.99)

For the last command (with the threshold for determinant and confidence interval for the Farrar and Glauber test). The output is,

mctest r package overall collinearity diagnostics

Individual Collinearity Diagnostics in R

The general syntax of individual collinearity Diagnostics in R Language through mctest packages is:

imcdiag(x, y, method = NULL, na.rm = TRUE, corr = FALSE, vif = 10, tol = 0.1, conf = 0.95, cvif = 10, leamer = 0.1, all = all)

Function imcdiag() detects the existence of multicollinearity due to certain X-variable. This includes VIF, TOL, Klein’s rule, CVIF, F&G test of Chi-square and F-test.

imcdiag(x = x, y)
imcdiag(x = x, y, corr = TRUE) # correlation matrix
imcdiag(x = x, y, vif = 5, leamer = 0.05)  # with threshold of VIF and leamer method
mctest r package individual collinearity diagnostics
imcdiag(x = x, y, all = True)
imcdiag(x = x, y, all = TRUE, vif = 5, leamer = 0.2, cvif = 5)
mctest: individual collinearity diagnostics

Graphical Representation of VIF and Eigenvalues

mc.plot(x, y, Inter = FALSE, vif = 10, ev = 0.01)
mc.plot(x, y)
mc.plot(x, y, vif = 5, ev = 0.2)
mctest: collinearity diagnostic measures

For further details about collinearity diagnostic see

R Package Questions and Answers

The post is about some important R package questions and answers. The R Package Questions and Answers are about how to load, install, and remove an R package.

R Package Questions and Answers

Question: What is an R Package?
Answer: The r package is a collection of objects that the R Language can use. A package contains functions, data sets, and documentation (which helps how to use the package) or other objects such as dynamically loaded libraries of already compiled code.

Question: How do I see which packages I have available?
Answer: To see which packages you have to use the command at the R prompt

library()

Question: Which packages do I already have?
Answer: To see what packages are installed one can use the installed.packages() command an R prompt. The output will show the packages installed.

installed.packages()
installed.packages()[1:5,]

Loading R Packages

Question: How one can load a Package in R language?
Answer: Basic packages are already loaded. If you want to load a downloaded version of packages use the command

library("package name")
library("car")

where the package name is the name of the package you want to load. Here in the example, we used the “car”, which means the “car” package will be loaded.

Getting Help in R Language

Question: How one can see the documentation of a particular package?
Answer: To see the documentation of a particular package use the command

library(help="package name")
help(package="package name")
help(package="car")
library(help="car")

for more information about getting help follow the link: Getting Help in R Language

Question: How do I see the help for a specific function?
Answer: To get help with a function in R use the command

help("function name")
? function name
?Manova
help("Manova")

Question: What functions and datasets are available in a package?
Answer: To check what functions and datasets are in a package using the help command at the R prompt. This will provide package information giving a list of functions and datasets.

help(package = "MASS")

Note that once a package is loaded, the help command can also be used with all available functions and datasets.

Installing and Removing R Packages

Question: How can one add or delete a package?
Answer: A package can be installed using the command

install.packages("package name")

and a package can be removed or deleted using the command

remove.packages("package name")
R Packages Questions and Answers R Faqs

Computer MCQs Test Online

SPSS Data Analysis