非線性回歸一般可以分為一元非線性回歸和多元非線性回歸。
一元非線性回歸是指兩個變數-----乙個自變數,乙個因變數之間呈現非線性關係,如雙曲線、二次曲線、三(多)次曲線、冪曲線、指數曲線、對數曲線等。在解決這些問題時通常建立的是非線性回歸方程或者方程組。
多元非線性回歸分析是指兩個或兩個以上自變數和因變數之間呈現的非線性關係建立非線性回歸模型。對多元非線性回歸模型求解的傳統做法,仍然是想辦法把它轉化成標準的線性形式的多元回歸模型來處理。有些非線性回歸模型,經過適當的數學變換,便能得到它的線性化的表達形式,但對另外一些非線性回歸模型,僅僅做變數變換根本無濟於事。屬於前一種情況的非線性回歸模型一般稱為內蘊的線性回歸,而後者則稱之為內蘊的非線性回歸。
線性擬合裡最簡單的就是上述y=ax+b這種形式。除此之外,可以將等式兩邊轉化為幾個一次式加和的情況,不論是一元的還是多 元的,都仍然是線性回歸研究的範疇。再如:
20世紀60年代的世界人口狀況如表所示。年份
世界人口(億)
年份世界人口(億)
1960
29.72
1965
32.85
1961
30.61
1966
33.56
1962
31.51
1967
34.20
1963
32.13
1968
34.83
1964
32.34
根據馬爾薩斯人口模型:
公式1其中s是人口,t是年份,e是自然常數(約取2.71828),試著推導一下到2023年時世界人口的數量。這個問題是-乙個 比較典型的多元線性回歸的問題模型。求解如下。
對等式兩邊同時取in (以e為底的log),得到:
in s=βt+ina
在這裡實際上用的還是線性回歸模型,相當於
y=ax+b
且 ins=y
β=ain a=b
這種使用方式在python中同樣可以套用線性回歸的方法,**如下:
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
#原始資料t=
[1960
,1961
,1962
,1963
,1964
,1965
,1966
,1967
,1968]s
=[29.72
,30.61
,31.51
,32.13
,32.34
,32.85
,33.56
,34.20
,34.83
]xdata = np.
array(t
)ydata = np.
log(np.
array(s
))def func
(x,a,b)
:return a + b*x
#使用非線性最小二乘法擬合函式
popt,pcov =
curve_fit
(func,xdata,ydata)
#畫圖plt.
plot
(xdata,ydata,
'ko'
,label=
'original noised data'
)plt.
plot
(xdata,
func
(xdata,
*popt)
,'r'
,label=
'fitted curve'
)plt.
legend()
plt.
show
()
如圖所示,橫軸寫著+1.96e3,這是用科學記數法來表示的,意思為1.96x103,也就是1 960,橫軸上的點就是1 960~ 1 968。縱軸是ins的值,斜率是β的值,截距是ln a的值,計算完成後通過代換可以計算出β和a的值。
在這個例子中,最後可以得到β=0.01859, a=4.484 013958 667 16 x 10-15
代人公式1,求得s的值,單位是億。
在**人口數量時,直接把年份代人即可,如2023年時,代人公式得到s約為62.9億。
xianglin
2023年12月27日於長沙
python 線性擬合
1 線性擬合 使用math import math deflinefit x,y n float len x sx,sy,sxx,syy,sxy 0,0,0,0,0for i in range 0 int n sx x i sy y i sxx x i x i syy y i y i sxy x i...
線性擬合函式
線性擬合函式 regress 呼叫格式 b regress y,x b,bint,r,rint,stats regress y,x b,bint,r,rint,stats regress y,x,alpha 該函式求解線性模型 y x 是p 1的引數向量 是服從標準正態分佈的隨機干擾的n 1的向量 ...
polyfit線性擬合函式
polyfit函式是matlab中用於進行曲線擬合的乙個函式。其數學基礎是最小二乘法曲線擬合原理。曲線擬合 已知離散點上的資料集,即已知在點集上的函式值,構造乙個解析函式 其圖形為一曲線 使在原離散點上盡可能接近給定的值。呼叫方法 polyfit x,y,n 用多項式求過已知點的表示式,其中x為源資...