ols残差_python数据关系型图表散点图系列残差分析图
參差分析圖(線性回歸、二次回歸)
殘差分析(residual analysis)回歸方程擬合的數值和實際數值的差值就是殘差;殘差分析是通過殘差所提供的信息,分析出數據的可靠性、周期性或其他干擾;用于分析模型的假定正確與否的方法;殘差:指觀測值與預測值(擬合值)之間的差,即實際觀測值與回歸估算值的差;
繪制殘差圖
通常使用顏色漸變及氣泡面積大小,通過視覺暗示對應殘差的絕對值大小,用于實際數據點的表示;
擬合數據點則用小空心圓圈表示,并放置在灰色的擬合曲線上;
用直線連接實際數據點和擬合數據點;
殘差的絕對值越大,顏色越紅、氣泡也越大,連接直線越長,可以很清晰地觀察數據的擬合效果;
殘差分析圖繪制方法
先根據擬合曲線計算預測值和殘差;
再使用實際值與預測值繪制散點圖;
最后使用殘差作為實際值的誤差線長度,添加誤差線;
實現實際值與預測值的連接;
將實際值的氣泡面積大小與顏色映射到對應點的殘差數值;
Statsmodels包的sm.OLS()函數可以實現線性或多項式回歸擬合方程的求解,依據方程,可以求取預測值;
繪制線性回歸
import pandas as pd
import numpy as np
from plotnine import *
import statsmodels.api as sm
df=pd.read_csv('d:\python\out\ResidualAnalysisD.csv')
#線性回歸
results = sm.OLS(df.y2, df.x).fit()
df['predicted']=results.predict() # 保存預測值
df['residuals']=df.predicted-df.y2 #保存殘差(有正有負)
df['Abs_Residuals']=np.abs(df.residuals) #保存殘差的絕對值
#mydata包含x、y2、predicted、residuals、Abs_Residuals 共5列數值
base_Residuals=(ggplot(df, aes(x = 'x', y = 'y2')) +
geom_point(aes(fill ='Abs_Residuals', size = 'Abs_Residuals'),shape='o',colour="black") +
# 使用實際值繪制氣泡圖,并將氣泡的顏色和面積映射到殘差的絕對值Abs_Residuals
geom_line(aes(y = 'predicted'), color = "lightgrey") + #添加空心圓圈的預測值
geom_point(aes(y = 'predicted'), shape = 'o') + #添加空心圓圈的預測值
geom_segment(aes(xend = 'x', yend = 'predicted'), alpha = .2) +#添加實際值和預測值的連接線...
scale_fill_gradientn(colors = ["black", "red"]) + #填充顏色映射到red單色漸變系
guides(fill = guide_legend(title="Rresidual"),
size = guide_legend(title="Rresidual"))+
theme(
axis_title=element_text(size=18,face="plain",color="black"),
axis_text = element_text(size=16,face="plain",color="black"),
aspect_ratio =1.1,
figure_size = (5, 5),
dpi = 100)
)
print(base_Residuals)
繪制二次回歸
import pandas as pd
import numpy as np
from plotnine import *
import statsmodels.api as sm
df=pd.read_csv('d:\python\out\ResidualAnalysisD.csv')
#二次回歸
X = np.column_stack((df.x, df.x**2))
#使用 sm.add_constant() 在 array 上加入一列常項 1。
X = sm.add_constant(X)
results = sm.OLS(df.y5, X).fit()
df['predicted']=results.predict() # 保存預測值
df['residuals']=df.predicted-df.y5 #保存殘差(有正有負)
df['Abs_Residuals']=np.abs(df.residuals) #保存殘差的絕對值
#mydata包含x、y2、predicted、residuals、Abs_Residuals 共5列數值
base_Residuals1=(ggplot(df, aes(x = 'x', y = 'y5')) +
geom_point(aes(fill ='Abs_Residuals', size = 'Abs_Residuals'),shape='o',colour="black") +
# 使用實際值繪制氣泡圖,并將氣泡的顏色和面積映射到殘差的絕對值Abs_Residuals
geom_line(aes(y = 'predicted'), color = "lightgrey") + #添加空心圓圈的預測值
geom_point(aes(y = 'predicted'), shape = 'o') + #添加空心圓圈的預測值
geom_segment(aes(xend = 'x', yend = 'predicted'), alpha = .2) +#添加實際值和預測值的連接線...
scale_fill_gradientn(colors = ["black", "red"]) + #填充顏色映射到red單色漸變系
guides(fill = guide_legend(title="Rresidual"),
size = guide_legend(title="Rresidual"))+
theme(
axis_title=element_text(size=18,face="plain",color="black"),
axis_text = element_text(size=16,face="plain",color="black"),
aspect_ratio =1.1,
figure_size = (5, 5),
dpi = 100)
)
print(base_Residuals1)
總結
以上是生活随笔為你收集整理的ols残差_python数据关系型图表散点图系列残差分析图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hpm128无法共享打印_打印机共享后不
- 下一篇: cad lisp 画四边形_多年经验总结