Python 多维数据的统计回归

Python 多维数据的统计回归,python,math,statistics,regression,Python,Math,Statistics,Regression,我有一组(x,y,z)格式的数据,其中z是涉及x和y的一些公式的输出。我想知道这个公式是什么,我的互联网研究表明,统计回归是实现这一点的方法 然而,我在研究过程中发现的所有示例都只处理二维数据集(x,y),这对我的情况没有用处。上述示例似乎也没有提供一种方法来查看结果公式是什么,它们只是提供了一个函数,用于根据不在训练数据集中的数据预测未来的输出 所需的精度水平是,z的公式需要产生实际值+/-0.5范围内的结果 谁能告诉我怎么做我想做的事?请注意,我并没有要求提供关于软件库使用的具体建议。如果公

我有一组
(x,y,z)
格式的数据,其中
z
是涉及
x
y
的一些公式的输出。我想知道这个公式是什么,我的互联网研究表明,统计回归是实现这一点的方法

然而,我在研究过程中发现的所有示例都只处理二维数据集
(x,y)
,这对我的情况没有用处。上述示例似乎也没有提供一种方法来查看结果公式是什么,它们只是提供了一个函数,用于根据不在训练数据集中的数据预测未来的输出

所需的精度水平是,
z
的公式需要产生实际值+/-0.5范围内的结果


谁能告诉我怎么做我想做的事?请注意,我并没有要求提供关于软件库使用的具体建议。

如果公式是线性函数,请检查此项。它使用普通最小二乘法来拟合您的数据,这非常有效

假设您有数据点(x1,y1,z1),(x2,y2,z2),…,(xn,yn,zn),将它们转换为三个独立的numpy数组X,Y和Z

import numpy as np
X = np.array([x1, x2, ..., xn])
Y = np.array([y1, y2, ..., yn])
Z = np.array([z1, z2, ..., zn])
然后,使用
ols
来适应它们

import pandas
from statsmodels.formula.api import ols

# Your data.
# Z = a*X + b*Y + c
data = pandas.DataFrame({'x': X, 'y': Y, 'z': Z})

# Fit your data with ols model.
model = ols("Z ~ X + Y", data).fit()

# Get your model summary.
print(model.summary())

# Get your model parameters.
print(model._results.params)
# should be approximately array([c, a, b])
如果提供更多变量 在
数据框中添加任意数量的变量

# Your data.
data = pandas.DataFrame({'v1': V1, 'v2': V2, 'v3': V3, 'v4': V4, 'z': Z})
参考文献
您需要使用的最基本工具是多元线性回归。基本方法将z建模为x和y的线性函数,在其上添加高斯噪声e:f(x,y)=a1*x+a2*y+a3,然后将z生成为f(x,y)+e,其中e通常是方差未知的零均值高斯噪声。你需要找到系数a1,a2和偏差a3,它们通常用最大似然估计,然后在高斯假设下归结为普通最小二乘。它有封闭形式的解析解

既然您可以访问Python,请在scikit learn中查看线性回归:

如果您可以重用GitHub上现有的Python 3 tkinter GUI应用程序中的代码,请查看使用我的tkInterFit项目拟合您提到的线性多项式曲面方程-它还将创建拟合曲面和等高线图。GitHub源代码位于,具有BSD许可证。

如果
z
x
y
的线性或仿射函数,则您正在查找。搜索更多信息。如果存在另一种关系,则在确定关系之前,您需要了解该关系是什么。在不了解任何信息(函数的外观)的情况下,您将需要专业工具,例如或自己编写一些内容…当使用Wolfram Alpha在三维图形上绘制时,数据看起来像一个倾斜平面,所以我认为这个函数是线性的。这看起来非常有用,所以我有一个后续问题:我的数据集中有不止一个
(x,y,z)
数据点,我如何将其放入你发布的代码中?我试着看了
pandas.DataFrame
的构造函数的文档,但它超出了我的理解。对不起,我想我没有正确地解释我自己。我有一堆
(x,y,z)
数据点,它们(可能)都由您提到的相同关系
z=a*x+b*y+c
控制。我只是不明白如何将这些数字数据点放入您提供的代码中。啊,对不起,我误解了。将它们组成三个数组X、Y和Z。检查上面编辑的答案。谢谢,“SomeFormula”实际上应该是“Z~X+Y”。现在它起作用了。