2

我有一个数据框和一个活动的输入文本文件。数据框是通过熊猫生成的。我想使用以下公式找出每个术语的回归系数 Y=C1aX1a+C1bX1b+...+C2aX2a+C2bX2b+....C0 ,

其中 Y 是活动 Cna 是位置 n 处残差选择 a 的回归系数,X 是对应于位置 n 处残差选择 a 存在或不存在的虚拟变量编码(xna=1 或 0),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 表示残差a 在第1 位置的回归系数(这里1a 是2u,1b 是2s,2a 是4r...) X1a 表示虚拟值,即1a 对应的0 或1。活动文件包含以下数据

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 …</p>

我可以使用 numpy 获得回归系数吗?请帮助我,所有建议将不胜感激。

4

1 回答 1

0

A成为你的数据框(你可以将它作为一个纯粹而简单的 numpy 数组。np.loadtxt如果它是 CSV,则使用它来读取它),并且 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
于 2013-02-27T17:45:49.547 回答