首页 文章

具有离散自变量的非线性回归

提问于
浏览
1

事实证明,我有两个不满足线性假设的变量 . 因变量是连续的,自变量是数字和离散的 . 这里的剩余图和一个框和胡须图:
enter image description here

enter image description here
因此,我不能使用线性回归 . 通过转换数据(通过执行log(y); log(x); sqrt(y);等等),我尝试线性化变量之间的关系是不成功的 . 我没有发现任何令人满意地提高线性度的转换 . 因此,我最终试图将非线性函数拟合到我的数据中(这对我来说是一个完全未知的领域,而且我无法在互联网上找到太多信息) . 因此,我想知道我是否采取了正确的非线性分析步骤:

1)我做的第一件事是选择二次多项式

y = a + (b*x) + c*(x^2)

这是我的第一个疑问(使用什么功能?),因为我知道有无数的不同功能可以描述同一条线 .

2)我做的第二件事是通过使用非线性最小二乘法(R中的函数nls)来估计参数,该方法基本上使用线性函数近似非线性函数并迭代地尝试找到最佳参数值:

m <- nls(y ~ a + (b*x) + c*(x^2), start= list(a = 2, b = 1, c=1))

要为参数选择初始值(start),我尝试选择接近预期最终解决方案的初始值 . 虽然我发现即使我改变初始值,最终结果仍然是相同的 . 以下是非线性最小二乘法后参数的估计值:

非线性回归模型
型号:y~a(b * x)c *(x ^ 2)
数据:parent.frame()
a b c
2.1296 -0.9395 -1.1754
剩余平方和:27615

收敛的迭代次数:1
实现收敛容差:2.58e-08

3)最后,我通过 summary(m) 检查结果:

公式:y~a(b * x)c *(x ^ 2)

参数:
估计标准 . 误差t值Pr(> | t |)
a 2.129555 0.003976 535.56 <2e-16 ***
b -0.939467 0.018500 -50.78 <2e-16 ***
c -1.175413 0.017818 -65.97 <2e-16 ***

Signif . 代码:0''0.001''0.01''0.05' . '0.1''1

剩余标准误差:105597自由度为0.5114

收敛的迭代次数:1
实现收敛容差:2.58e-08

我还运行了一小段代码来获得一些模型评估:

RSS <- sum(residuals(m)^2)
TSS <- sum((y - mean(y))^2)
R.square <- 1 - (RSS/TSS)

结果:

R.square
0.6365729

我不知道我的手术是否正统 . 我想知道我是否采取了正确的步骤 . 我也很欣赏一些线索,以了解解释统计数据和报告这些结果的最佳方法 .

2 回答

  • 1

    线性回归点是用线逼近非线性数据,而不是从线性数据开始 . 看着上方的红点,看起来你需要二次回归 . 你可以编程的方程式可以在math.stackexchange上找到 . Quadratic Regression equations

  • 0

    实际上,使用多项式 is 线性回归的情况,因为线性是指拟合参数的依赖性而不是自变量 . 您必须使用的表格取决于您 . 但是,当x增长时,你的数据似乎是零,所以我不会错,但我记得在线性回归的情况下这应该总是正确的,而在非线性情况下,可能会有很多最小值 . 残差平方和) . 最后,要小心R ^ 2:在线性回归的情况下必须使用 only (这是你的情况),但如果你执行非线性拟合,它就完全没用了,毫无意义 .

相关问题