发布于 2016-01-02 09:42:26 | 477 次阅读 | 评论: 0 | 来源: 网络整理
模拟回归分析现实世界的数据我们这是很少观察到,该模型的方程是线性方程给出的线性曲线图的情况。大多数时候真实世界数据模型的方程涉及更高程度就像3的指数或一个正弦函数数学函数。 在这样的情况下,该模型的曲线图给出了一个曲线而不是一条线。线性和非线性回归的目的是为了调整模型的参数的值,以发现最接近的数据的直线或曲线。在寻找这些值,我们将能够以良好的精度来估计响应变量。
在最小二乘回归我们建立在从回归曲线的不同点的垂直距离的平方及被最小化的回归模型。我们通常开始与定义的模型和假设为系数的一些值。然后,我们应用R的nls() 函数,以获得更准确的值随着可信区间。
创建一个非线性最小二乘测试,在R语言中的基本语法是:
nls(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)
# Give the chart file a name.
png(file = "nls.png")
# Plot these values.
plot(xvalues,yvalues)
# Take the assumed values and fit into the model.
model <- nls(yvalues ~ b1*xvalues^2+b2,start = list(b1=1,b2=3))
# Plot the chart with new data by fitting it to a prediction from 100 data points.
new.data <- data.frame(xvalues = seq(min(xvalues),max(xvalues),len=100))
lines(new.data$xvalues,predict(model,newdata=new.data))
# Save the file.
dev.off()
# Get the sum of the squared residuals.
print(sum(resid(model)^2))
# Get the confidence intervals on the chosen values of the coefficients.
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
我们可以得出结论,当 b2 的值更接近 2 而不是 3 时,b1 的值更接近 1。