-2

我有两个数据集,我想找到最合适的函数类型:

x <- c(10, 40, 70, 100, 130, 160, 190, 220)
y1 <- c(41.8, 45.2, 50.8, 62.5, 73.2, 86.9, 95.4, 107.9)
y2 <- c(1.9, 34.3, 269.2, 1119.4, 2627.1, 5801.2, 11794.8, 24139.9)

par(mfrow = c(1,2))
plot(x, y1); plot(x, y2)

在此处输入图像描述

我想说一下 y1 和 y2 的趋势,比如 y1 似乎遵循线性趋势,而 y2 看起来是指数型的。首先我尝试了符号回归,尤其是'rgp'包,但是文档很差,而且它也有一些问题(不要在存档模式下工作,等等)。不幸的是,没有任何其他符号回归包。

你有什么建议,我该怎么办?我如何说出/证明这样的结论:“y1 遵循 x 函数的线性趋势”?

4

1 回答 1

1

使用线性模型:

summary.lm(lm(y1~x))
...
     Multiple R-squared:  0.9802,   Adjusted R-squared:  0.9768  F-statistic:
     296.4 on 1 and 6 DF,  p-value: 2.46e-06

y1_r = 0.33044 * x + 32.46230

所以 97% 的 AR 平方和小的 p 值很遗憾你有线性趋势。对于 y2,您可以以相同的方式使用非线性回归。

r <-  lm(y1 ~ x)
nr <- nls(y1 ~ exp(a + b * x), start = list(a = 0, b = 0))
plot( x,y1)
lines(x,predict(nr))
lines(x, predict(r), col = 'red')

您可以通过比较残差的简单 SD 来决定哪个模型更好

Residual standard error: 3.732 
Residual standard error: 2.515
于 2016-10-20T09:34:40.197 回答