當(dāng)對真實世界數(shù)據(jù)建模進(jìn)行回歸分析時,我們觀察到模型的方程很少是給出線性圖的線性方程。 大多數(shù)情況下,現(xiàn)實世界數(shù)據(jù)模型的方程式涉及更高程度的數(shù)學(xué)函數(shù),如3
或sin
函數(shù)的指數(shù)。 在這種情況下,模型的曲線給出了曲線而不是線性。線性和非線性回歸的目標(biāo)是調(diào)整模型參數(shù)的值以找到最接近您的數(shù)據(jù)的線或曲線。當(dāng)找到這些值時,我們才能夠準(zhǔn)確估計響應(yīng)變量。
在最小二乘回歸中,我們建立了一個回歸模型,不同點與回歸曲線的垂直距離的平方和之和最小化。 我們通常從定義的模型開始,并假設(shè)系數(shù)的一些值。 然后應(yīng)用R中的nls()
函數(shù)來獲得更準(zhǔn)確的值以及置信區(qū)間。
在R中創(chuàng)建非線性最小二乘檢驗的基本語法是 -
nls(formula, data, start)
以下是使用的參數(shù)的描述 -
我們將考慮一個假設(shè)其系數(shù)的初始值的非線性模型。 接下來,我們將看到這些假設(shè)值的置信區(qū)間是多少,以便可以判斷這些值是如何進(jìn)入模型的。
所以考慮下面這個方程式 -
a = b1*x^2+b2
我們假設(shè)初始系數(shù)為1
和3
,并將這些值擬合成nls()
函數(shù)。
setwd("F:/worksp/R")
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))
當(dāng)我們執(zhí)行上述代碼時,會產(chǎn)生以下結(jié)果 -
[1] 1.081935
Waiting for profiling to be done...
2.5% 97.5%
b1 1.137708 1.253135
b2 1.497364 2.496484
輸出的圖形如下所示 -
我們可以得出結(jié)論,b1
的值更接近于1
,而b2的值更接近于2
而不是3
。