我有两个数据集,我想找到最合适的函数类型:
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函数的线性趋势?”
答案 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