如何用Python进行二维回归分析?

2023-12-07

首先,我对Python不熟悉,对Python代码的机制还勉强了解。但我需要通过Python做一些统计分析。

我尝试了很多很多方法来弄清楚但我失败了。

  • 基本上,我有 3 个数据数组(假设这些数组是X, Y, Z).
  • 我做了一些分析(X, Y) and (Z, Y)通过绘制散点图并与数据进行最佳拟合来查看相关性。
  • 1 号和 2 号非常简单。
  • 现在我需要从图表中查看视图中的边缘,该边缘是组合的边缘X and Z。所以,我做了方程(见下文)。

import pylab as pl
import numpy as np
from pylab import *
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt


s = np.loadtxt('New_list3.txt')
s = s.T

x = s[1]
y = s[2]
z = s[4]

upper_error = s[5]
lower_error = s[6]
asymmetric_error = [lower_error, upper_error]

def func(X, a1, a2, a3):
    x1, y1 = X

    return a1 * x1 + a2 * y1 + a3

popt, pcov = curve_fit(func,(x,y),z)
new_x=func((x,y),popt[0],popt[1],0)
new_y=z
new_z = np.polyfit(new_x,new_y,1)

p = np.poly1d(new_z)

plt.plot(func((x, y), popt[0], popt[1], 0), z, '.k')
pl.plot(new_x, p(new_x), "r-")
plt.errorbar(new_x, z ,yerr=asymmetric_error, ecolor='b', capsize=3, marker ='o', fmt='none')

print popt    
plt.show()

现在我无法找出该方程中的错误y = a1 * x + a2 * z + a3。我发现了最好的价值a1, a2, a3。但是,不是错误。

我怎样才能找到“错误”a1, a2, a3?


下面是使用 scipy.optimize.curve_fit 拟合曲面的示例 Python 代码,它绘制了原始数据的 3D 散点图、误差的 3D 散点图、曲面图和等高线图。将其更改为使用您自己的数据和函数,您应该完成。

import numpy, scipy
import scipy.optimize
import matplotlib
from mpl_toolkits.mplot3d import  Axes3D
from matplotlib import cm # to colormap 3D surfaces from blue to red
import matplotlib.pyplot as plt

graphWidth = 800 # units are pixels
graphHeight = 600 # units are pixels

# 3D contour plot lines
numberOfContourLines = 16


def SurfacePlot(equationFunc, data, params):
    f = plt.figure(figsize=(graphWidth/100.0, graphHeight/100.0), dpi=100)

    matplotlib.pyplot.grid(True)
    axes = Axes3D(f)

    x_data = data[0]
    y_data = data[1]
    z_data = data[2]

    xModel = numpy.linspace(min(x_data), max(x_data), 20)
    yModel = numpy.linspace(min(y_data), max(y_data), 20)
    X, Y = numpy.meshgrid(xModel, yModel)

    Z = equationFunc(numpy.array([X, Y]), *params)

    axes.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm, linewidth=1, antialiased=True)

    axes.scatter(x_data, y_data, z_data) # show data along with plotted surface

    axes.set_title('Surface Plot (click-drag with mouse)') # add a title for surface plot
    axes.set_xlabel('X Data') # X axis data label
    axes.set_ylabel('Y Data') # Y axis data label
    axes.set_zlabel('Z Data') # Z axis data label

    plt.show()
    plt.close('all') # clean up after using pyplot or else thaere can be memory and process problems


def ContourPlot(equationFunc, data, params):
    f = plt.figure(figsize=(graphWidth/100.0, graphHeight/100.0), dpi=100)
    axes = f.add_subplot(111)

    x_data = data[0]
    y_data = data[1]
    z_data = data[2]

    xModel = numpy.linspace(min(x_data), max(x_data), 20)
    yModel = numpy.linspace(min(y_data), max(y_data), 20)
    X, Y = numpy.meshgrid(xModel, yModel)

    Z = equationFunc(numpy.array([X, Y]), *params)

    axes.plot(x_data, y_data, 'o')

    axes.set_title('Contour Plot') # add a title for contour plot
    axes.set_xlabel('X Data') # X axis data label
    axes.set_ylabel('Y Data') # Y axis data label

    CS = matplotlib.pyplot.contour(X, Y, Z, numberOfContourLines, colors='k')
    matplotlib.pyplot.clabel(CS, inline=1, fontsize=10) # labels for contours

    plt.show()
    plt.close('all') # clean up after using pyplot or else thaere can be memory and process problems


def ScatterPlot(data, title):
    f = plt.figure(figsize=(graphWidth/100.0, graphHeight/100.0), dpi=100)

    matplotlib.pyplot.grid(True)
    axes = Axes3D(f)
    x_data = data[0]
    y_data = data[1]
    z_data = data[2]

    axes.scatter(x_data, y_data, z_data, depthshade=False, color='k')

    axes.set_title(title)
    axes.set_xlabel('X Data')
    axes.set_ylabel('Y Data')
    axes.set_zlabel('Z Data')

    plt.show()
    plt.close('all') # clean up after using pyplot or else thaere can be memory and process problems


def EquationFunc(data, *params):
    p0 = params[0]
    p1 = params[1]
    return p0 + numpy.sqrt(data[0]) + numpy.cos(data[1] / p1)


if __name__ == "__main__":

    # raw data
    xData = numpy.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0])
    yData = numpy.array([11.0, 12.1, 13.0, 14.1, 15.0, 16.1, 17.0, 18.1, 90.0])
    zData = numpy.array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.0, 9.9])

    pInitial = (1.0, 1.0)
    popt, pcov = scipy.optimize.curve_fit(EquationFunc,(xData,yData),zData, p0=pInitial)

    dataForPlotting = [xData, yData, zData]

    ScatterPlot([xData, yData, zData], 'Data Scatter Plot (click-drag with mouse)')
    SurfacePlot(EquationFunc, [xData, yData, zData], popt)
    ContourPlot(EquationFunc, [xData, yData, zData], popt)

    absError = zData - EquationFunc((xData,yData), *popt)
    ScatterPlot([xData, yData, absError], 'Error Scatter Plot (click-drag with mouse)')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用Python进行二维回归分析? 的相关文章

  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • 在 python 程序中合并第三方库的最佳实践是什么?

    下午好 我正在为我的工作编写一个中小型Python程序 该任务需要我使用 Excel 库xlwt and xlrd 以及一个用于查询 Oracle 数据库的库 称为CX Oracle 我正在通过版本控制系统 即CVS 开发该项目 我想知道围
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • 使用 on_bad_lines 将 pandas.read_csv 中的无效行写入文件

    我有一个 CSV 文件 我正在使用 Python 来解析该文件 我发现文件中的某些行具有不同的列数 001 Snow Jon 19801201 002 Crom Jake 19920103 003 Wise Frank 19880303 l
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • 测试 python Counter 是否包含在另一个 Counter 中

    如何测试是否是pythonCounter https docs python org 2 library collections html collections Counter is 包含在另一个中使用以下定义 柜台a包含在计数器中b当且
  • SPSS 中的标准化残差与 R rstandard(lm()) 不匹配

    在寻找 R 相关解决方案时 我发现 R 和 SPSS 版本 24 在计算简单线性模型中的标准化残差方面存在一些不一致 看来SPSS所谓的标准化残差匹配 R学生化残差 我完全不认为某处存在软件错误 但显然这两个程序之间存在差异 看看这个例子
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • 使用 Python 绘制 2D 核密度估计

    I would like to plot a 2D kernel density estimation I find the seaborn package very useful here However after searching
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • 线性判别分析图

    如何将样本 ID 行号 作为标签添加到此 LDA 图中的每个点 library MASS ldaobject lt lda Species data iris plot ldaobject panel function x y points
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class

随机推荐

  • 在 C# 中将日期时间转换为儒略日期(ToOADate 安全吗?)

    我需要从标准转换公历约会到Julian天数 我在 C 中没有看到任何直接执行此操作的文档 但我发现许多帖子 在谷歌搜索时 建议使用ToOADate 有关的文档ToOADate不建议将此作为儒略日期的有效转换方法 任何人都可以澄清此函数是否能
  • HTML Favicon.ico 不会在 Google Chrome 上显示

    我正在制作一个 HTML 页面 我想要的东西之一是标题旁边出现一个图标 我使用的是 Google Chrome 我看到其他网站上的图标可以正常工作 但我网站上的图标不会显示 该网站位于我桌面上名为 site 的文件夹中 The favico
  • 类型“string[]”上不存在属性“includes”

    收到错误 类型 string 上不存在属性 includes 在node modules ng2 breadcrumb app components breadcrumbService ts中 我正在尝试在 angular2 应用程序中实现
  • C++ 计数和映射

    我正在计算每个单词在文本文件中出现的次数 我想避免出现这种情况 因此我会减少我的输入 然后进行计数 我有一个地图数据结构 其中有 string 和 int 来保持计数 现在 当我输出单词及其计数时 我不希望单词为小写 而是希望它保持其原始大
  • R:绘图:重新排列变量的顺序

    我想在 R 中创建一个条形图 但是 我想重新排列 x 轴上的变量 不是按频率 而是按 含义 假设我有以下数据集 df lt data frame read table header TRUE text ID Radio 1 A 2 B 3
  • 为什么 Subversion 不允许提交 .htaccess 文件?

    我无法从 Windows SVN 客户端 TortoiseSVN 提交 htaccess 文件 返回的错误是 无法读取状态行 现有连接被远程主机强制关闭 这基本上是我的虚拟主机在 Apache 中的样子
  • 仅当字符串数组中的元素长度大于零时,如何才能显示此应用程序中的元素?

    我正在使用 Vue 3 TypeScript 和电影数据库 TMDB 开发 SPA 该应用程序显示列表电影卡 In the 电影列表成分 src components MoviesList vue 我有
  • 如何在ASP.NET中制作文件上传接口

    我正在尝试在 ASP NET Webforms 中创建一个文件上传界面 并正在寻找一些有关如何继续的建议 文件上传界面是我正在制作的网站的一部分 用户可以在该网站上发布广告 该界面是 创建新广告 的一部分 允许用户上传最多 6 张图像 我只
  • UIView默认样式有圆角吗?

    我正在使用一个UIPopoverController显示一个UIView 布局有点类似于UISplitViewController所以在 细节视图 上有圆角看起来很奇怪 因为它留下了一个小间隙 我无法找到与其他遇到此问题的人相关的任何内容
  • 删除与模式匹配的第一行

    如何使用 sed 只删除包含特定模式的第一行 例如 我想删除第一行匹配FAA从这个文件 1 foo bar quuz 2 foo FAA bar this should go 3 quuz quuz FAA this should rema
  • 如何在多行“脚本”步骤中中断单个命令

    我们有一个使用Azure Pipeline的项目 依赖azure pipelines yml文件位于存储库的根目录中 当实施一个script步骤 可以在同一步骤中执行连续的命令 只需将它们写在不同的行上 script ls la pwd e
  • 如何让函数返回多个值

    这是我的代码 var Evalcard function number if number 1 this name Ace this value 11 else if number 11 this name Jack this value
  • 如何在WinRT中获取像素的RGB值

    我正在尝试获取 WinRT 应用程序中每个像素的 RGB 值 我可以访问包含以下内容的字节数组PixelData但我不知道如何使用它 那么如何从字节数组中提取 RGB 信息 var bd await Windows Graphics Ima
  • 在JApplet中添加图像

    ImageIcon icon new ImageIcon a gif JLabel jLabel1 new JLabel icon jLabel1 setVisible true card1 add jLabel1 我是 Java 的新手
  • Spring Batch 为特定作业禁用 Spring Boot 自动配置

    我的 Spring Batch 应用程序有多个作业 但只有一个作业使用一些特定的 Spring Boot 自动配置功能 使用 spring data jpa 自动配置的作业 为业务事务配置数据库 不适用于 Spring Batch 管理 根
  • NoMethodError(# 的未定义方法“空?”):

    我使用创建了一个 Rails APIpostgre我的模型 表 名称为数据库咨询活动 NOTE 不使用scaffold并使用rails 5 我的架构 迁移 咨询活动如下 class CreateCounselingEvent lt Acti
  • 如何检查 Android 设备中的 Sim 卡是否可用?

    我需要帮助以编程方式检查设备是否有 SIM 卡 请提供示例代码 使用电话管理器 http developer android com reference android telephony TelephonyManager html 正如法
  • 静态函数与静态成员函数 C++ [重复]

    这个问题在这里已经有答案了 我一直在阅读一些有关静态函数和静态成员函数的内容 根据我的理解 如果function被声明为静态 那么该函数仅对其翻译单元可见 而对其他地方不可见 静态的成员函数相反 它是一个无需实例化其类的任何对象即可调用的函
  • MYSQL安装问题[关闭]

    Closed 这个问题是无关 目前不接受答案 在我的 Mac 上通过终端升级了一些 gems 后 我创建了一个由 mysql 数据库支持的新的 Rails 项目 启动应用程序后 会出现常规的欢迎页面 问题是 我尝试单击标题为 关于您的应用程
  • 如何用Python进行二维回归分析?

    首先 我对Python不熟悉 对Python代码的机制还勉强了解 但我需要通过Python做一些统计分析 我尝试了很多很多方法来弄清楚但我失败了 基本上 我有 3 个数据数组 假设这些数组是X Y Z 我做了一些分析 X Y and Z Y