我有一个Dataframe和一个activity.Dataframe的输入文本文件是通过pandas生成的。我想用下面的公式找出每个术语的回归系数 Y = C1aX1a + C1bX1b + ... + C2aX2a + C2bX2b + .... C0,
其中Y是活动Cna,残差选择a在位置n的回归系数,X,虚拟变量编码(xna = 1或0)对应于位置n处残差选择a的存在与否,以及C0活动的平均值。 我的数据框看起来像
2u 2s 4r 4n 4m 7h 7v
0 1 1 0 0 0 1
0 1 0 1 0 0 1
1 0 0 1 0 1 0
1 0 0 0 1 1 0
1 0 1 0 0 1 0
此处1和0分别表示残基的存在和不存在。 使用MLR(多元线性回归)我如何找出每个残差的回归系数,即2u,2s,4r,4n,4m,7h,7v。 C1a表示第1位置的残留物a的回归系数(这里1a为2u,1b为2s,2a为4r ......)X1a表示虚拟值,即0或1对应于1a。 活动文件包含以下数据
6.5
5.9
5.7
6.4
5.2
所以第一个等式看起来像
6.5 =庆大霉素C1a * 0 + C1B * 1 + C2A * 1 + C2b中* 0 + C2C * 0 +的C3a * 0 +的C3b * 1 + C0 ...
我可以使用numpy获得回归系数吗?。请帮助我,所有建议将不胜感激。
答案 0 :(得分:0)
让A
成为您的数据框(您可以将其作为一个纯粹而简单的numpy数组。如果它是CSV,请使用np.loadtxt
读取它),并且y是您的活动文件(同样,numpy数组),并使用np.linalg.lstsq
DF = """0 1 1 0 0 0 1
0 1 0 1 0 0 1
1 0 0 1 0 1 0
1 0 0 0 1 1 0
1 0 1 0 0 1 0"""
res = """6.5, 5.9, 5.7, 6.4, 5.2"""
A = np.fromstring ( DF, sep=" " ).reshape((5,7))
y = np.fromstring(res, sep=" ")
(x, res, rango, svals ) = np.linalg.lstsq(A, y )
print x
# 2.115625, 2.490625, 1.24375 , 1.19375 , 2.16875 , 2.115625, 2.490625
print np.sum(A.dot(x)**2) # Sum of squared residuals:
# 177.24750000000003
print A.dot(x) # Print predicition
# 6.225, 6.175, 5.425, 6.4 , 5.475