我试图分析一个实验的重复性。我用0.1替换了0值,并用对数轴绘制了两个实验的数据。到目前为止,还不错。在
接下来,我得到了两列中的值都大于0的行,并对这些值的log10进行了线性回归计算。我得到了线性拟合的斜率和截距,然后我试着画出来。在
import pandas as pd
import numpy as np
table = pd.read_csv("data.csv")
data = table.replace(0, 0.1)
plt.plot(data["run1"], data["run2"], color="#03012d", marker=".", ls="None", markersize=3, label="")
plt.xscale('log')
plt.yscale('log')
plt.axis('square')
plt.xlabel("1st experiment")
plt.ylabel("2nd experiment")
from scipy.stats import linregress
df = table.loc[(table['run1'] >0) & (table['run2'] >0)]
stats = linregress(np.log10(df["run1"]),np.log10(df["run2"]))
m = stats.slope
b = stats.intercept
r = stats.rvalue
x = np.logspace(-1, 5, base=10)
y = (m*x+b)
plt.plot(x, y, c='orange', label="fit")
plt.legend()
我不知道我做错了什么。。在
编辑:
链接到首字母dataset
当我目测数据的散点图时,我看不到记录日志的用处。通过原始数据的一条直线看起来可能是您在这里能做的最好的,请看所附的图片。
你把事情搞糊涂了。问题是
np.logspace(-1, 5, base=10)
只返回对数间隔的值,但您仍然需要取x值的底数10对数,因为图中的x轴是对数(np.log10(x) )并执行以下操作这将给你你所期望的,一个直线线性回归预测。在
相关问题 更多 >
编程相关推荐