scatter3d R脚本的输出 - 如何读取等式

时间:2011-11-08 00:32:46

标签: r plot regression

我正在使用scatter3d在我的R脚本中找到一个拟合。我这样做了,这是输出:

Call:
lm(formula = y ~ (x + z)^2 + I(x^2) + I(z^2))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.78454 -0.02302 -0.00563  0.01398  0.47846 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.051975   0.003945 -13.173  < 2e-16 ***
x            0.224564   0.023059   9.739  < 2e-16 ***
z            0.356314   0.021782  16.358  < 2e-16 ***
I(x^2)      -0.340781   0.044835  -7.601 3.46e-14 ***
I(z^2)       0.610344   0.028421  21.475  < 2e-16 ***
x:z         -0.454826   0.065632  -6.930 4.71e-12 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Residual standard error: 0.05468 on 5293 degrees of freedom
Multiple R-squared: 0.6129, Adjusted R-squared: 0.6125 
F-statistic:  1676 on 5 and 5293 DF,  p-value: < 2.2e-16

基于此,最佳拟合线的等式是什么?我真的不确定怎么读这个?谁能解释一下?谢谢!

2 个答案:

答案 0 :(得分:2)

这是一个基本的回归输出表。参数估计(“估计”列)是与模型中不同项对应的最佳拟合线系数。如果您不熟悉这个术语,我建议您阅读一些线性模型和回归教程。网络上有成千上万的人。我还鼓励你玩一些更简单的2D模拟。

例如,让我们制作一些截距为2且斜率为0.5的数据:

# Simulate data
set.seed(12345)
x = seq(0, 10, len=50)
y = 2 + 0.5 * x + rnorm(length(x), 0, 0.1)
data = data.frame(x, y)

现在,当我们查看拟合时,您会看到Estimate列显示这些相同的值:

# Fit model
fit = lm(y ~ x, data=data)
summary(fit)
> summary(fit)

Call:
lm(formula = y ~ x, data = data)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.26017 -0.06434  0.02539  0.06238  0.20008 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 2.011759   0.030856   65.20   <2e-16 ***
x           0.501240   0.005317   94.27   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 0.1107 on 48 degrees of freedom
Multiple R-squared: 0.9946, Adjusted R-squared: 0.9945 
F-statistic:  8886 on 1 and 48 DF,  p-value: < 2.2e-16 

拉出这些,我们可以绘制最合适的线:

# Make plot
dev.new(width=4, height=4)
plot(x, y, ylim=c(0,10))
abline(fit$coef[1], fit$coef[2])

enter image description here

答案 1 :(得分:1)

它不是一个平面,而是一个抛物面(并且使用'y'作为第三个维度,因为你已经使用了'z'):

y =  -0.051975 + x * 0.224564  + z * 0.356314  +
          -x^2 * -0.340781 + z^2 * 0.610344 - x * z * 0.454826