R不能通过产生误差来拟合二次方程:下标越界

时间:2018-03-24 16:19:27

标签: r polynomials

我有一个简单的数据集:

x <- c(1.053848,1.054189,1.054529)
y <- c(0.0137554979,0.0006841939,0.0007282808)

让抛物线符合y

ypoly <- lm(y ~ x + I(x^2))

我想在公式中得到常量 a

y = ax^2 + bx + c

所以我输入summary(ypoly)$coefficients[3, 1]并收到此错误:

Error in summary(ypoly)$coefficients[3, 1] : subscript out of bounds

因为

Coefficients:
(Intercept)           x         I(x^2)  
      25.17       -19.13           NA 

Check this fitting output on Wolfram Alpha

问题出在哪里?

1 个答案:

答案 0 :(得分:0)

如果你看一下这个线性回归的设计矩阵,R会告诉你它是计算奇异的,这意味着它没有逆。 OLS的封闭表单表达式是 enter image description here,但您无法计算此数据的倒数。你可以看到这个,

x <- c(1.053848,1.054189,1.054529)
y <- c(0.0137554979,0.0006841939,0.0007282808)
x2 <- x^2
design <- matrix(c(rep(1, 3), x, x2), ncol = 3)
solve(t(design)%*%design)

我假设您的问题是x值和x ^ 2值的接近程度。要解决此问题,您可以改为运行它。

ypoly <- lm(y ~ poly(x, 2))

我希望这有帮助!

相关问题