# How to graphically reveal data structures?

I have a dataframe with 8 columns (variables, X1 to X8) . Each column represents a different model parameter. Each row of the dataframe represents a modelling scenario.

All the modelling scenarios result in some desired output (i.e. Y1). In other words, different model parameters can result in Y1.

I was wondering - are there ways in R to graphically reveal the data structure of my dataframe?

Ideally, I would like some way to quantify: if the value of variable X1 is 1000, what are the likely values of variables X2 to X8?

I was thinking that perhaps some kind of tree diagram might be useful.

Hope I am making sense.

-
I like to use trellis displays for this kind of visual investigations. You'll find them in the lattice package. –  MånsT Jul 13 '12 at 8:57
Thanks. I have found these displays similar to scatterplotMatrix(). –  mjburns Jul 13 '12 at 11:49

I would suggest you to use matrix scatter plots such as Scatterplot Matrices in R or Plot matrix in MatLab

Here is sample code for R:

library(car)
scatterplotMatrix(x = mtcars)


It will help you to understand the one-to-one dependencies in data and possibly find the prediction you are looking for (if they really exist). E.g., if some Xs are perfectly correlated you will see the points lying in strait line.

-
Thanks for your response. This plot shows up OK. However, I should probably have mentioned, that the variables X1, X2 etc. are not continuous. They are more like categories. So for example, all the values of X1 are either 1,2, 3 or 4. Because of this, the correlations look strange. –  mjburns Jul 13 '12 at 11:43
Than probably you can fix one variable value (e.g. X_1 = 1) and plot histograms of other variables. You will see the frequencies. I do not know the out-of-box solution for such analysis. Hope this helps. –  Paul Jul 13 '12 at 12:06
Thanks Paul good idea. I like the idea of fixing a variable of interest to a set number and then seeing what the other variables turn out to be. –  mjburns Jul 14 '12 at 7:39

Although your data represent particular things - estimates of parameters under different scenarios - the net result is the same as though you have any ordinary set of eight-dimensional (nine if you count Y1) data. So all the ordinary multidimensional visualisation techniques apply.

Normally I would start with a scatterplot matrix - there are implementations in base graphics, lattice or ggplot2 according to your preference.

-
Thanks for your response. I did start with a scatterplot matrix (see comment above). As mentioned, my variables are not contineious. The variables are basically factors? I would really like to show something like: when X1 was 1000, the frequency of observing X3 as 1 was '44' etc. Hope that makes sense. –  mjburns Jul 13 '12 at 11:52

If you want a tree with conditions, check out rpart. It fits a CART/Regression tree to your data. Simply run

fit = rpart(Y1~X1+X2+X3+X4+X5+X6+X7+X8, data=d)
plot(fit, uniform=TRUE)
text(fit, use.n=TRUE, all=TRUE, cex=.8)


Which leads to a tree like this:

-
Thanks theomega. I was able to plot a useful tree diagram. –  mjburns Jul 14 '12 at 7:40