royer
royer

Reputation: 645

Plotting a multiple linear regression in R using scatter3D() (package plot3D)

I have the following data in a csv file.

y,x1,x2,x3,x4,x5,x6,x7,x8,x9
10,2113,1985,38.9,64.7,4,868,59.7,2205,1917
11,2003,2855,38.8,61.3,3,615,55,2096,1575
11,2957,1737,40.1,60,14,914,65.6,1847,2175
13,2285,2905,41.6,45.3,-4,957,61.4,1903,2476
10,2971,1666,39.2,53.8,15,836,66.1,1457,1866
11,2309,2927,39.7,74.1,8,786,61,1848,2339
10,2528,2341,38.1,65.4,12,754,66.1,1564,2092
11,2147,2737,37,78.3,-1,761,58,1821,1909
4,1689,1414,42.1,47.6,-3,714,57,2577,2001
2,2566,1838,42.3,54.2,-1,797,58.9,2476,2254
7,2363,1480,37.3,48,19,984,67.5,1984,2217
example = data.frame(x1,x2,x3,x4,y)

How can I graph the variables x1, x2, x3 using scatter3D(x,y,z)?

I have tried:

library("plot3D")
with(example,scatter3D(y ~ x1 + x2 + x3))

But I get error:

Error in min(x,na.rm) : invalid 'type' (list) of argument

Upvotes: 2

Views: 1682

Answers (1)

dcarlson
dcarlson

Reputation: 11056

Looks like you want to plot a regression plane. The scatter3d function in package car will do that. You need to install car and rgl. First let's make your data more accessible:

dput(example)
structure(list(y = c(10L, 11L, 11L, 13L, 10L, 11L, 10L, 11L, 
4L, 2L, 7L), x1 = c(2113L, 2003L, 2957L, 2285L, 2971L, 2309L, 
2528L, 2147L, 1689L, 2566L, 2363L), x2 = c(1985L, 2855L, 1737L, 
2905L, 1666L, 2927L, 2341L, 2737L, 1414L, 1838L, 1480L), x3 = c(38.9, 
38.8, 40.1, 41.6, 39.2, 39.7, 38.1, 37, 42.1, 42.3, 37.3), x4 = c(64.7, 
61.3, 60, 45.3, 53.8, 74.1, 65.4, 78.3, 47.6, 54.2, 48), x5 = c(4L, 
3L, 14L, -4L, 15L, 8L, 12L, -1L, -3L, -1L, 19L), x6 = c(868L, 
615L, 914L, 957L, 836L, 786L, 754L, 761L, 714L, 797L, 984L), 
    x7 = c(59.7, 55, 65.6, 61.4, 66.1, 61, 66.1, 58, 57, 58.9, 
    67.5), x8 = c(2205L, 2096L, 1847L, 1903L, 1457L, 1848L, 1564L, 
    1821L, 2577L, 2476L, 1984L), x9 = c(1917L, 1575L, 2175L, 
    2476L, 1866L, 2339L, 2092L, 1909L, 2001L, 2254L, 2217L)),
    class = "data.frame", row.names = c(NA, -11L))

install.packages("car")
install.packages("rgl")
library(car)
library(rgl)
scatter3d(y~x1+x2, example)

The plot window will be small. Use the mouse to drag the lower right corner to make it bigger. You can drag within the plot to rotate it.

3d plot

Upvotes: 2

Related Questions