【发布时间】:2019-05-16 05:11:44
【问题描述】:
我正在寻找以下问题的解决方案,但它无法按我想要的方式工作。
所以我的目标是计算回归分析并获得多行的斜率、截距、右值、pvalue 和 stderr(这可能高达 10000)。在此示例中,我有一个包含 15 行的文件。这是前两行:
array([
[ 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, 55, 29, 77, 61, 42, 70, 73, 98,
62, 25, 86, 49, 68, 68, 26, 35, 62, 100, 56,
10, 97]]
)
完整的试验数据集:
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 55 29 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 63 45 87
192 371 47 173 202 144 17 147 174 483 170 422 285 13 77 116 500 136 276 392 220 121 441 268
第一行是 x 变量,这是自变量。这必须在迭代每一行时保持固定。
对于下一行,y 变量和因变量,我想计算斜率、截距、右值、pvalue 和 stderr 并将它们放在一个数据框中(如果可能的话,添加到同一个数据框,但这是不必要)。
我尝试了以下代码:
import pandas as pd
import scipy.stats
import numpy as np
df = pd.read_excel("Directory\\file.xlsx")
def regr(row):
r = scipy.stats.linregress(df.iloc[1:, :], row)
return r
full_dataframe = None
for index,row in df.iterrows():
x = regr(index)
if full_dataframe is None:
full_dataframe = x.T
else:
full_dataframe = full_dataframe.append([x.T])
full_dataframe.to_excel('Directory\\file.xlsx')
但这失败并给出以下错误:
ValueError: all the input array dimensions except for the concatenation axis
must match exactly
我真的迷路了。
所以,我想实现每行的斜率、截距、pvalue、rvalue 和 stderr,从第二行开始,因为第一行是 x 变量。
任何人都知道如何做到这一点并告诉我为什么我的不工作以及代码应该是什么样的?
谢谢!!
【问题讨论】:
-
您是否介意添加文本数据而不是图像以实现minimal reproducible example,这样会更容易帮助您。甚至可以更好地提取您的 XLS 的简短 CSV 文件。
-
如何添加 csv 数据提取?如果有帮助,我会用文本中的数字更新文件。
-
可以用excel打开,然后保存成CSV格式。在文本编辑器中打开它并复制粘贴五个第一行。这应该够了吧。也可以使用代码环境格式化数据,方便阅读。
标签: python python-3.x windows math statistics