功能分析,拟合

时间:2016-10-20 08:38:47

标签: r function symbolic-math data-fitting model-fitting

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

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)

enter image description here

我想谈谈y1和y2的趋势,比如y1似乎遵循线性趋势,y2看起来呈指数级。 首先,我尝试使用符号回归,特别是使用'rgp'包,但是文档非常差,并且它也有一些问题(不能在归档模式下工作,还有其他问题)。 不幸的是,没有任何其他符号回归包。

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

1 个答案:

答案 0 :(得分: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%的A-R-squered和小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
相关问题