- R 菜鸟教程
- R - 教程
- R - 概述
- R - 环境设置
- R - 基本语法
- R - 数据类型
- R - 变量
- R - 运算符
- R - 判断语句
- R - Loop (循环)
- R - 函数
- R - 字符串
- R - 矢量
- R - 列表
- R - 矩阵
- R - 数组
- R - 因子
- R - 数据帧
- R - 包(Packages)
- R - 数据重塑
- R 数据接口
- R - CSV 文件
- R - Excel 文件
- R - 二进制文件
- R - XML 文件
- R - JSON 文件
- R - Web 数据
- R - 数据库
- R 图表和图形
- R - 饼图
- R - 条形图
- R - 箱线图
- R - 直方图
- R - 折线图
- R - 散点图
- R 统计示例
- R - 平均值、中位数和众数
- R - 线性回归
- R - 多元回归
- R - Logistic 回归
- R - 正态分布
- R - 二项分布
- R - 泊松回归
- R - 协方差分析
- R - 时间序列分析
- R - 非线性最小二乘法
- R - 决策树
- R - 随机森林
- R - 生存分析
- R - 卡方检验
R - 非线性最小二乘法
在为真实世界数据建模以进行回归分析时,我们观察到模型的方程很少是给出线性图的线性方程。大多数时候,真实世界数据模型的方程涉及更高阶的数学函数,如 3 的指数或 sin 函数。在这种情况下,模型的绘图给出了一条曲线而不是一条线。线性回归和非线性回归的目标都是调整模型参数的值,以找到最接近数据的直线或曲线。找到这些值后,我们将能够很好地估计响应变量。
在最小二乘回归中,我们建立了一个回归模型,其中不同点与回归曲线的垂直距离的平方和最小。我们通常从一个定义的模型开始,并假设系数的一些值。然后,我们应用 R 的 nls() 函数来获得更准确的值以及置信区间。
语法
在 R 中创建非线性最小二乘检验的基本语法是 −
nls(formula, data, start)
以下是所用参数的描述 -
- formula 是包含变量和参数的非线性模型公式。
- data 是用于计算公式中变量的数据框。
- start 是起始估计值的命名列表或命名数值向量。
例子
我们将考虑一个假设其系数初始值的非线性模型。接下来,我们将看到这些假设值的置信区间是多少,以便我们可以判断这些值对模型的匹配程度。
因此,为此,让我们考虑以下方程式 -
a = b1*x^2+b2
让我们假设初始系数为 1 和 3,并将这些值拟合到 nls() 函数中。
xvalues <- c(1.6,2.1,2,2.23,3.71,3.25,3.4,3.86,1.19,2.21)
yvalues <- c(5.19,7.43,6.94,8.11,18.75,14.88,16.06,19.12,3.21,7.58)
# 为图表文件命名。
png(file = "nls.png")
# 绘制这些值。
plot(xvalues,yvalues)
# 取假设值并拟合到模型中。
model <- nls(yvalues ~ b1*xvalues^2+b2,start = list(b1 = 1,b2 = 3))
# 通过将图表拟合到100个数据点的预测,用新数据绘制图表。
new.data <- data.frame(xvalues = seq(min(xvalues),max(xvalues),len = 100))
lines(new.data$xvalues,predict(model,newdata = new.data))
# 保存文件。
dev.off()
# 求残差平方和。
print(sum(resid(model)^2))
# 获取系数选定值的置信区间。
print(confint(model))
当我们执行上述代码时,它会产生以下结果——
[1] 1.081935
Waiting for profiling to be done...
2.5% 97.5%
b1 1.137708 1.253135
b2 1.497364 2.496484
Waiting for profiling to be done...
2.5% 97.5%
b1 1.137708 1.253135
b2 1.497364 2.496484
我们可以得出结论,b1 的值更接近 1,而 b2 的值更接近 2 而不是 3。