Я пытаюсь проанализировать воспроизводимость одного эксперимента.Я заменил 0 значений на 0,1 и нанес на график данные обоих экспериментов с логарифмическими осями.Пока все хорошо.
Далее я получил строки, в которых значения в обоих столбцах> 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()
Но это то, что я получаю, и это определенно не линейно:
Я не знаю, что я делаю неправильно ..
РЕДАКТИРОВАТЬ:
Ссылка на исходный набор данных