線性函數擬合(y=a+bx)
R語言運行代碼如下:綠色為要提供的數據,黃色標識信息為需要保存的。
x<-c(0.10,0.11, 0.12, 0.13, 0.14, 0.15,0.16, 0.17, 0.18, 0.20, 0.21, 0.23)
y<-c(42.0,43.5, 45.0, 45.5, 45.0, 47.5,49.0, 53.0, 50.0, 55.0, 55.0, 60.0)
data1=data.frame(x=x,y=y) #數據存入數據框
#擬合線性函數
lm.data1<-lm(y~ x,data=data1)
summary(lm.data1) #輸出擬合后信息
Call:
lm(formula = data1$y ~ data1$x)
Residuals: #殘差分位數(當殘差個數較少時,此處顯示所有殘差值)
Min 1Q Median 3Q Max
-2.0431 -0.7056 0.1694 0.6633 2.2653
Coefficients:
#系數估計值 #系數標准誤差 #t檢驗值 #對應t值概率的2倍
Estimate Std. Error t value Pr(>|t|)
(Intercept) 28.493 1.580 18.04 5.88e-09 ***
data1$x 130.835 9.683 13.51 9.50e-08 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’1
Residual standard error: 1.319 on 10degrees of freedom
#擬合優度判定系數 #修正的擬合優度判定系數
Multiple R-squared: 0.9481, AdjustedR-squared: 0.9429
#F檢驗值 #F檢驗值對應的概率
t檢驗值對應的Pr(>|t|):該數值由於是t檢驗量對應的概率的2倍,所以其數值小於0.1時,就說明對應的自變量對於因變量來說是有顯著性的,當然數值越小,顯著性越高。
F檢驗值對應的p-value:F檢驗值對應的概率。當其數值小於0.05時,說明回歸方程是顯著的。
Adjusted R-squared修正擬合優度:數值越接近1,模型擬合的越好。
/***********************數值輸出********************************/
coefficient<-lm.data1$coefficients #回歸所有系數列舉
coefficient [2] #系數b
tvalue<-summary(lm.data1)$coefficients[1:2,3] #t檢驗值
tvalue[2] #系數b對應的t檢驗值
Pr<-summary(lm.data1)$coefficients[1:2,4] #t檢驗值對應的概率的2倍
Pr[1] #系數a對應t檢驗值對應的概率2倍
Pr[2] #系數b對應t檢驗值對應的概率2倍
ARsquared<-summary(lm.data1)$adj.r.squared #修正的擬合優度判定系數
F_info<-summary(lm.data1)$fstatistic #F檢驗的F值、自由度DF和概率
F_info[1] #F檢驗值
F_info[2] #F檢驗量的自由度
F_info[3] #F檢驗值對應的概率
/****************************************************************/
#殘差正態性檢驗
ks.test(lm.data1$residuals,"pnorm",0)
One-sampleKolmogorov-Smirnov test
data: lm.data1$residuals
#D檢驗值 #對應的概率值
alternative hypothesis: two-sided
D檢驗值對應的概率值p-value:該數值大於0.05,說明殘差服從均值為0的正態分布。
/***********************數值輸出********************************/
ks_test<-ks.test(lm.data1$residuals,"pnorm",0) #獲取正態性檢驗信息
ks_test[1] #KS檢驗值
ks_test[2] #KS檢驗值對應的概率
/****************************************************************/
#殘差獨立性檢驗:DW法檢驗殘差序列的自相關性
dwtest(lm.data1)
Durbin-Watsontest
data: lm.data1
#d.w檢驗值#對應的概率值
alternative hypothesis: trueautocorrelation is greater than 0
DW檢驗值對應的概率值p-value:該數值大於0.05時,說明殘差序列獨立。
/***********************數值輸出********************************/
dw_test<-dwtest(lm.data1) #獲取獨立性檢驗信息
dw_test[1] #DW檢驗值
dw_test[4] #DW檢驗值對應的概率
/****************************************************************/
#殘差同方差檢驗
bptest(lm.data1)
studentizedBreusch-Pagan test
data: lm.data1
#BP檢驗值 #自由度 #對應概率值
BP = 0.9831, df = 1, p-value = 0.3214
BP檢驗值對應的概率值p-value:該數值大於0.05,說明殘差是同方差的。
/***********************數值輸出********************************/
bp_test<- bptest(lm.data1) #獲取獨立性檢驗信息
bp_test[1] #BP檢驗值
bp_test[2] #BP檢驗量的自由度
bp_test[4] #BP檢驗值對應的概率
/****************************************************************/
2. 擬合曲線圖
ab<-round(lm.data1$coefficients[1],3) #回歸方程系數a,保留3位小數
bb<-round(lm.data1$coefficients[2],3) #回歸方程系數b,保留3位小數
plot(data1$x,data1$y,xlab="x",ylab = "y",col="red",pch="*") #訓練數據點
abline(lm.data1,col="blue") #擬合曲線
text(mean(data1$x),max(data1$y),paste("y = ",bb,"x+(",ab,")",sep = ""))#方程式