Python:添加误差线/阴影区域以进行线性拟合吗?

问题描述

我有2列:R_nom =实际值,R_mes =测量值。 我有

  • 计算线性拟合
  • 计算的%错误
  • 计算的标准

我想用以下方法做对数图:

  • 测量值的分散(DONE)
  • 线性拟合(DONE)
  • 拟合线上方和下方的错误线表示我们希望该值位于其中。(要做

到目前为止,这是我的代码

#@title stack example 
from plotly.subplots import make_subplots
import plotly.graph_objects as go
import matplotlib.pyplot as plt


import numpy as np
import pandas as pd

R_Nom=[100,100,500,800,1200,5500,5500]
R_Mes=[102,101,98,97,512,517,492,490,470,820,825,812,790,1250,1240,1230,1212,1175,1153,5600,5574,5440,5390,5612]

df= pd.DataFrame({"R_Nom": R_Nom,"R_Mes": R_Mes})

 
 # finding the mean,max,min,std using groupby 
mean= df.groupby('R_Nom')['R_Mes'].mean()
max_ = df.groupby('R_Nom')['R_Mes'].max()
min_ = df.groupby('R_Nom')['R_Mes'].min()
std = df.groupby('R_Nom')['R_Mes'].std()

 # for error% however i have to include extra steps - can it be written as above? 
df['Error_percentage'] = abs((df["R_Mes"]-df["R_Nom"])/df["R_Nom"])*100
grouped_df = df.groupby("R_Nom")
max_error = grouped_df['Error_percentage'].max()


 #output the data as a dataframe for plotting 
summary = pd.concat({"mean":mean,"min": min_,"max": max_,"std": std,"max_error %": max_error},axis=1)

summary



 #fit the data


x=np.log10(df['R_Nom'])
y= np.log10(df['R_Mes'])


x_fit = np.linspace(min(x),max(x),100)


model = np.polyfit(x,y,1,full=True)
fig = make_subplots(specs=[[{"secondary_y": True}]])


fig.add_trace(
      go.Scatter(x=x_fit,y=x_fit*model[0][0]+model[0][1],name="Fit"),secondary_y=False 
  )
fig.add_trace(
      go.Scatter(x=x,y=y,name="Fit",mode="markers"),secondary_y=False 
  )

fig.add_trace(
      go.Scatter(x=np.log10(summary.index),y=summary['max_error %'],name="Error % "),secondary_y=True 
  )


fig.show()


我手动添加了我指的是包含错误区域的2条线,不是直线,而是根据精确R_Nom值处的%或std值进行更改

Error lines

第二-还有其他方法可以估计我的数据的误差,可能是useulf吗? R_squared等?

最终目标是评估我可以检测到的R_Nom的最小变化是什么

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)