ฉันแน่ใจว่านี้ง่าย แต่เป็นมือใหม่ที่สมบูรณ์เพื่อหลามฉันมีปัญหาในการหาวิธีการวนซ้ำตัวแปรในpandas
dataframe และเรียกใช้การถดถอยกับแต่ละ
นี่คือสิ่งที่ฉันทำ:
all_data = {}
for ticker in ['FIUIX', 'FSAIX', 'FSAVX', 'FSTMX']:
all_data[ticker] = web.get_data_yahoo(ticker, '1/1/2010', '1/1/2015')
prices = DataFrame({tic: data['Adj Close'] for tic, data in all_data.iteritems()})
returns = prices.pct_change()
ฉันรู้ว่าฉันสามารถใช้การถดถอยแบบนี้:
regs = sm.OLS(returns.FIUIX,returns.FSTMX).fit()
แต่สมมติว่าฉันต้องการทำเช่นนี้สำหรับแต่ละคอลัมน์ใน dataframe โดยเฉพาะอย่างยิ่งฉันต้องการถอยหลัง FIUIX บน FSTMX แล้วตามด้วย FSAIX บน FSTMX แล้วตามด้วย FSAVX บน FSTMX หลังจากการถดถอยแต่ละครั้งฉันต้องการจัดเก็บสิ่งตกค้าง
ฉันลองรุ่นต่อไปนี้หลายรุ่น แต่ฉันต้องทำให้ไวยากรณ์ผิด:
resids = {}
for k in returns.keys():
reg = sm.OLS(returns[k],returns.FSTMX).fit()
resids[k] = reg.resid
ฉันคิดว่าปัญหาคือฉันไม่รู้วิธีอ้างถึงคอลัมน์ส่งคืนทีละคีย์ดังนั้นreturns[k]
อาจผิด
คำแนะนำเกี่ยวกับวิธีที่ดีที่สุดในการทำเช่นนี้จะได้รับการชื่นชมมาก อาจจะมีวิธีการแพนด้าทั่วไปที่ฉันหายไป
for i in len(df): if i + 1 != len(df): # sm.OLS(returns[returns.coloumns[i]], returns[returns.columns[ i+1]]), fit()
os คล้ายกัน