Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何使用lm()检索三维拟合方程?_R_Lm_Polynomials - Fatal编程技术网

R 如何使用lm()检索三维拟合方程?

R 如何使用lm()检索三维拟合方程?,r,lm,polynomials,R,Lm,Polynomials,假设我有以下代码来拟合双曲抛物线: # attach(mtcars) hp_fit <- lm(mpg ~ poly(wt, disp, degree = 2), data = mtcars) 我不明白如何解释(Intercept)列下poly()右侧的变化数字。这些数字的意义是什么?我将如何从总结中构建双曲抛物面拟合方程?当您进行比较时 with(mtcars, poly(wt, disp, degree=2)) with(mtcars, poly(wt, degree=2))

假设我有以下代码来拟合双曲抛物线:

# attach(mtcars)    
hp_fit <- lm(mpg ~ poly(wt, disp, degree = 2), data = mtcars)
我不明白如何解释
(Intercept)
列下
poly()
右侧的变化数字。这些数字的意义是什么?我将如何从总结中构建双曲抛物面拟合方程?

当您进行比较时

with(mtcars, poly(wt, disp, degree=2))
with(mtcars, poly(wt, degree=2))
with(mtcars, poly(disp, degree=2))
1.0
2.0
指的是
wt
的第一级和第二级,
0.1
0.2
指的是
disp
的第一级和第二级。
1.1
是一个交互术语。您可以通过比较来检查:

summary(lm(mpg ~ poly(wt, disp, degree=2, raw=T), data=mtcars))$coe
#                                         Estimate  Std. Error    t value     Pr(>|t|)
# (Intercept)                         4.692786e+01 7.008139762  6.6961935 4.188891e-07
# poly(wt, disp, degree=2, raw=T)1.0 -1.062827e+01 8.311169003 -1.2787937 2.122666e-01
# poly(wt, disp, degree=2, raw=T)2.0  2.079131e+00 2.333864211  0.8908534 3.811778e-01
# poly(wt, disp, degree=2, raw=T)0.1 -3.172401e-02 0.060528241 -0.5241191 6.046355e-01
# poly(wt, disp, degree=2, raw=T)1.1 -2.660633e-02 0.032228884 -0.8255431 4.165742e-01
# poly(wt, disp, degree=2, raw=T)0.2  2.019044e-04 0.000135449  1.4906301 1.480918e-01

summary(lm(mpg ~ wt*disp + I(wt^2) + I(disp^2) , data=mtcars))$coe[c(1:2, 4:3, 6:5), ]
#                  Estimate  Std. Error    t value     Pr(>|t|)
# (Intercept)  4.692786e+01 7.008139762  6.6961935 4.188891e-07
# wt          -1.062827e+01 8.311169003 -1.2787937 2.122666e-01
# I(wt^2)      2.079131e+00 2.333864211  0.8908534 3.811778e-01
# disp        -3.172401e-02 0.060528241 -0.5241191 6.046355e-01
# wt:disp     -2.660633e-02 0.032228884 -0.8255431 4.165742e-01
# I(disp^2)    2.019044e-04 0.000135449  1.4906301 1.480918e-01

这会产生相同的值。请注意,我使用了
raw=TRUE
进行比较。

如果您通过在
poly()内部设置
raw=TRUE
来使用原始多项式,这不会太难。使用正交多项式更有利于回归的稳定性,但方程的提取要困难得多。相关阅读是和。
summary(lm(mpg ~ poly(wt, disp, degree=2, raw=T), data=mtcars))$coe
#                                         Estimate  Std. Error    t value     Pr(>|t|)
# (Intercept)                         4.692786e+01 7.008139762  6.6961935 4.188891e-07
# poly(wt, disp, degree=2, raw=T)1.0 -1.062827e+01 8.311169003 -1.2787937 2.122666e-01
# poly(wt, disp, degree=2, raw=T)2.0  2.079131e+00 2.333864211  0.8908534 3.811778e-01
# poly(wt, disp, degree=2, raw=T)0.1 -3.172401e-02 0.060528241 -0.5241191 6.046355e-01
# poly(wt, disp, degree=2, raw=T)1.1 -2.660633e-02 0.032228884 -0.8255431 4.165742e-01
# poly(wt, disp, degree=2, raw=T)0.2  2.019044e-04 0.000135449  1.4906301 1.480918e-01

summary(lm(mpg ~ wt*disp + I(wt^2) + I(disp^2) , data=mtcars))$coe[c(1:2, 4:3, 6:5), ]
#                  Estimate  Std. Error    t value     Pr(>|t|)
# (Intercept)  4.692786e+01 7.008139762  6.6961935 4.188891e-07
# wt          -1.062827e+01 8.311169003 -1.2787937 2.122666e-01
# I(wt^2)      2.079131e+00 2.333864211  0.8908534 3.811778e-01
# disp        -3.172401e-02 0.060528241 -0.5241191 6.046355e-01
# wt:disp     -2.660633e-02 0.032228884 -0.8255431 4.165742e-01
# I(disp^2)    2.019044e-04 0.000135449  1.4906301 1.480918e-01