Моя цель - сделать регрессионный анализ для нескольких строк и сохранить результаты в отдельных столбцах, прикрепленных к моему фрейму данных, в который я загружаю.
Итак, я нашел следующий код, который дает мне результаты с однимx и одна переменная y.
import pandas as pd
import numpy as np
import scipy.stats
df = pd.read_excel("Directory\File.xlsx")
x = df.iloc[0,:]
y= df.iloc[1,:]
scipy.stats.linregress(x,y)
Это дает мне следующие результаты:
Исходный кадр данных для этого примера содержит3 строки и 24 столбца.
[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24];
[100 10 61 5529 77 61 42 70 73 98 62 25 86 49 68 68 26 35 62 100 56 10 97];
[57 89 25 89 48 56 67 17 98 10 25 90 17 52 85 56 18 20 74 97 82 8263 45 87]
Нулевой строкой всегда является ось X: независимая переменная.Строки 1 и 2 являются зависимой переменной, таким образом, у-ось.Теперь я хочу выполнить этот регрессионный анализ, и для каждой строки (начиная со строки 1) он должен рассчитать результаты и добавить их в кадр данных.Таким образом, в конце у нас будет 5 дополнительных столбцов с наклоном, перехватом, значением r, значением p и stderr на строку.
Я попытался перебрать каждую строку с этим фрагментом кода (это создает новый фрейм данныхчто тоже нормально):
def linreg(row):
z = scipy.stats.linregress(x,y)
linreg_df = pd.DataFrame(z)
return(linreg_df)
full_dataframe = None
for index,row in df.iterrows():
z = linreg(index)
if full_dataframe is None:
full_dataframe = z.T
else:
full_dataframe = full_dataframe.append([z.T])
full_dataframe.to_excel('Directory\\File.xlsx')
Но это дает мне следующую ошибку:
Есть кто-нибудь, кто мог бы сказатьмне, что я делаю неправильно и что такое правильное решение?
Спасибо,
Стивен