#python #scipy #scipy.stats
#python #scipy #scipy.stats
Вопрос:
Я пытаюсь подогнать строку к моим экспериментальным данным. Когда я запускаю код, который я обычно использую, я получаю сообщение об ошибке
Трассировка (последний последний вызов): Файл «/home/h/oscillator1.py «, строка 21, в наклоне, перехват, r_value = scipy.stats.linregress(data) Ошибка значения: слишком много значений для распаковки (ожидается 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()
Благодарен за любую помощь.
Ответ №1:
Пожалуйста, смотрите страницу документации. Функция scipy.stats.linregress
возвращает 5 значений:
- наклон
- перехват
- rvalue
- pvalue
- stderr
Вам нужно будет изменить вызов scipy.stats.linregress
следующим образом:
slope, intercept, r_value, p_value, stderr = scipy.stats.linregress(data)