2016-01-19 4 views
2

У меня есть панд dataframe df как:панды - линейная регрессия dataframe столбцов значения

A,B,C 
1,1,1 
0.8,0.6,0.9 
0.7,0.5,0.8 
0.2,0.4,0.1 
0.1,0,0 

где три колонки имеют упорядоченные значения [0,1]. Я пытаюсь построить линейную регрессию над тремя сериями. До сих пор я был в состоянии использовать scipy.stats следующим образом:

from scipy import stats 

xi = np.arange(len(df)) 

slope, intercept, r_value, p_value, std_err = stats.linregress(xi,df['A']) 
line1 = intercept + slope*xi 
slope, intercept, r_value, p_value, std_err = stats.linregress(xi,df['B']) 
line2 = intercept + slope*xi 
slope, intercept, r_value, p_value, std_err = stats.linregress(xi,df['C']) 
line3 = intercept + slope*xi 

plt.plot(line1,'r-') 
plt.plot(line2,'b-') 
plt.plot(line3,'g-') 

plt.plot(xi,df['A'],'ro') 
plt.plot(xi,df['B'],'bo') 
plt.plot(xi,df['C'],'go') 

получен следующий сюжет:

enter image description here

Можно ли получить единую линейную регрессию, которая суммирует три одиночных линейных регрессий в scipy.stats ?

+1

Если вы хотите регрессию, обобщающую три регрессии, почему бы не объединить все данные и сделать линейную регрессию по этим данным? – danielunderwood

ответ

2

Возможно, что-то вроде этого:

x = pd.np.tile(xi, 3) 
y = pd.np.r_[df['A'], df['B'], df['C']] 

slope, intercept, r_value, p_value, std_err = stats.linregress(x, y) 
line4 = intercept + slope * xi 

plt.plot(line4,'k-') 
Смежные вопросы