【问题标题】:Plotting a multiple linear regression in R using scatter3D() (package plot3D)使用 scatter3D() (package plot3D) 在 R 中绘制多元线性回归
【发布时间】:2020-03-12 16:10:43
【问题描述】:

我在 csv 文件中有以下数据。

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)

如何使用scatter3D(x,y,z) 绘制变量x1x2x3

我试过了:

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

但我得到错误:

min(x,na.rm) 中的错误:参数的“类型”(列表)无效

【问题讨论】:

  • 您尝试过什么,收到了什么错误消息?您是否阅读过函数的手册页或软件包的小插图?
  • 是的,但是获取错误的参数类型无效
  • 您想要从这些 3D 数据中得到回归平面还是曲面?
  • 我可以尝试将所有数据 x1、x2、x3 转换为数组 xx = as.array(cbind(x1,x2,x3))。我想要的图表:plot points,但是 "z" 它需要什么值?
  • 这是 3d 而不是 4d。试试with(example, scatter3D(y, x1, x2))

标签: r linear-regression scatter3d plot3d


【解决方案1】:

看起来你想绘制一个回归平面。包car 中的scatter3d 函数将执行此操作。您需要安装carrgl。首先让我们让您的数据更易于访问:

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)

绘图窗口会很小。使用鼠标拖动右下角使其变大。您可以在绘图内拖动以旋转它。

【讨论】:

  • 为出色的答案和酷炫的 3D 情节而投票。
  • 我可以使用这个库吗? library("plot3D"),或者必须使用这些:library(car) library(rgl)
  • 阅读vignette 获取(不是库)plot3D。它似乎有很多功能,但我没有看到绘制回归平面的示例。除了你想做 3d 绘图之外,你没有告诉我们任何关于你想要做什么的事情。早些时候我建议with(example, scatter3D(y, x1, x2))。那没有用吗?如果不是,为什么?
  • 对不起,我是 library("plot3Drgl")。我的目标是尝试创建一个优雅的图形,但具有 add = TRUE功能>
猜你喜欢
  • 2013-07-11
  • 2016-07-09
  • 2013-07-17
  • 2017-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-20
  • 2020-05-08
相关资源
最近更新 更多