0

我正在尝试为我的实验数据拟合一条线。当我运行我通常使用的代码时,我得到了错误

回溯(最后一次调用):文件“/home/h/oscillator1.py”,第 21 行,斜率,截距,r_value = scipy.stats.linregress(data) ValueError: too many values to unpack (expected 3)

这是我的代码:

import matplotlib.pyplot as plt 
import pandas as pd 
import numpy as np 
import scipy.stats


data = pd.read_csv("/home/h/Documents/oscillator1.csv", decimal='.')

plt.plot(
         data['t (s)'], data['x (cm)'],
         marker='+',
         linestyle="None",
         label="Data"
         )

plt.xlabel("t [s]", fontsize=13) 
plt.ylabel("x [cm]", fontsize=13) 
plt.xticks(np.arange(0, 1300, step=150), size = 13) 
plt.yticks(np.arange(-11, 2, step=1), size = 13) 
plt.title("x vs t from torsion balance measurements", fontsize=16)

slope, intercept, r_value = scipy.stats.linregress(data) 
print("slope = {}, intercept = {} and r-value = {}".format(slope, intercept, r_value**2))

plt.plot(data['t (s)'],
         data['t (s)']*slope+intercept,
         label="Linear regression"
         )

plt.legend(fontsize=12) plt.show()

感谢您提供任何帮助。

4

1 回答 1

2

请参阅文档页面。该函数scipy.stats.linregress返回 5 个值:

  1. 截距
  2. 右值
  3. p值
  4. 标准错误

您需要将调用修改scipy.stats.linregress如下:

slope, intercept, r_value, p_value, stderr = scipy.stats.linregress(data) 
于 2020-10-16T12:02:03.600 回答