Scipy.Odr 多变量回归

2024-01-18

我想执行多维 ODRscipy.odr。我读了 API 文档,它说多维是可能的,但我无法让它工作。我在互联网上找不到工作示例,而且 API 非常粗糙,没有给出如何继续的提示。

这是我的 MWE:

import numpy as np
import scipy.odr

def linfit(beta, x):
    return beta[0]*x[:,0] + beta[1]*x[:,1] + beta[2]

n = 1000
t = np.linspace(0, 1, n)
x = np.full((n, 2), float('nan'))
x[:,0] = 2.5*np.sin(2*np.pi*6*t)+4
x[:,1] = 0.5*np.sin(2*np.pi*7*t + np.pi/3)+2
e = 0.25*np.random.randn(n)
y = 3*x[:,0] + 4*x[:,1] + 5 + e

print(x.shape)
print(y.shape)

linmod = scipy.odr.Model(linfit)
data = scipy.odr.Data(x, y)
odrfit = scipy.odr.ODR(data, linmod, beta0=[1., 1., 1.])
odrres = odrfit.run()
odrres.pprint()

它引发以下异常:

scipy.odr.odrpack.odr_error: number of observations do not match

这似乎与我的矩阵形状有关,但我不知道如何正确塑造它。有人知道吗?


首先,根据我的经验,scipy.odr 主要使用数组,而不是矩阵。该库似乎一路上进行了大量的大小检查,并且让它与多个变量一起工作似乎相当麻烦。

这是我通常让它工作的工作流程(至少在 python 2.7 上工作):

import numpy as np
import scipy.odr

n = 1000
t = np.linspace(0, 1, n)

def linfit(beta, x):
    return beta[0]*x[0] + beta[1]*x[1] + beta[2] #notice changed indices for x

x1 = 2.5*np.sin(2*np.pi*6*t)+4
x2 = 0.5*np.sin(2*np.pi*7*t + np.pi/3)+2

x = np.row_stack( (x1, x2) ) #odr doesn't seem to work with column_stack

e = 0.25*np.random.randn(n)
y = 3*x[0] + 4*x[1] + 5 + e #indices changed

linmod = scipy.odr.Model(linfit)
data = scipy.odr.Data(x, y)
odrfit = scipy.odr.ODR(data, linmod, beta0=[1., 1., 1.])
odrres = odrfit.run()
odrres.pprint()

因此,使用相同的(一维?)数组,使用 row_stack 并按单个索引号寻址似乎可行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scipy.Odr 多变量回归 的相关文章

随机推荐

  • 如何防止 d3.drag().on('end' 触发 .on('click'

    我有一个 svg 元素 我希望能够单独单击和拖动 据我所知在 D3 中 单击会触发 拖动结束 事件 也可能拖启动 在下面的代码中 只需单击圆圈即可为其显示红色轮廓 var svg d3 select body append svg var
  • 如何记录未捕获的崩溃的回溯? [复制]

    这个问题在这里已经有答案了 我运行一个无头且无人值守的服务器 它将所有内容记录到远程服务器 我在那里运行的应用程序也通过SysLogHandler 效果很好 我遇到过程序崩溃的情况 在未由try except 我也想以这种方式记录回溯 这是
  • Janusgraph在.net core 3.0中使用Gremlin查询

    我们目前在 net core 3 0 应用程序中使用 gremlin net 库来连接到 Janusgraph db 我们需要在 janusgraph 中执行以下查询g V 12345 outE myedge has datetime lt
  • 从调用堆栈中获取函数名称

    我正在开发一个调用本机代码的 Android 程序 该本机代码存在段错误 并且由于通过 android NDK 进行调试实际上并不可行 因此我留下了如下所示的调用堆栈 从 ddms 捕获 我的问题是 是否有一些我可以在事后手动运行的东西 将
  • 无法连接到我自己的 MDF 文件。无法打开用户默认数据库。登录失败。用户登录失败...以及其他错误

    SQLSEXPRESS 服务正在运行 我有我前一段时间写的程序并且它有效 它是在 MS Visual Studio 中使用本地 MDF 文件编写的 如何从 Microsoft SQL Server Management Studio 编辑此
  • 为什么 Android 深层链接使我在 Whatsapp 上的链接在 Whatsapp 的应用程序内打开?

    我正在关注本教程 https developer android com training app links deep linking一步步在 Android 上进行深度链接 部分代码如下 基本上它会在我的应用程序的webview中打开u
  • 如何使用 R 中的 lm() 函数从回归中删除不显着的因子水平?

    当我在 R 中执行回归并使用类型因子时 它可以帮助我避免在数据中设置分类变量 但是如何从回归中删除不重要的因素以仅显示重要变量呢 例如 dependent lt c 1 10 independent1 lt as factor c d a
  • 初始化 dict 的首选语法是什么:大括号文字 {} 或 dict() 函数?

    我正在付出一些努力来学习Python 并且我正在密切关注常见的编码标准 这似乎是一个毫无意义的挑剔问题 但我在学习时努力关注最佳实践 这样我以后就不必改掉任何 坏 习惯 我看到两种初始化字典的常用方法 a a value another v
  • 带有水晶报告的 CSS

    我如何将 css 与水晶报表一起使用 没有用于编写 css 的表 我可以在哪里编写 css 用于自定义 CrystalReportViewer 控件的级联样式表 http msdn microsoft com en us library m
  • Bash 变量字符替换最终为空字符串或命令无效

    我正在编写一个 shell 脚本 通过 JQ 从 JSON 文件中检索变量内容 JSON 文件采用字符串格式 无论这是真实字符串还是数字 为了在 bash 脚本中检索变量 我做了类似的事情 my domain cat vagrant dat
  • 在 Clojure 中使用 multimethods 代替 cond 有什么好处?

    为什么 Clojure 中的多方法不应该简单地用 cond 表达式替换 在看了第 1 章中多种方法的简单示例后 我受到启发而提出了这个问题 拉斯 奥尔森 Russ Olsen 的书的 5 篇获取 Clojure 在回答类似问题时 Cloju
  • Javascript/jQuery:如何检测img是否完全下载?

    我需要做的就是将图像定位在其父 div 的中心 首先 我尝试了这个 document ready function image1 css top 50 left 50 margin top image1 height 2 px margin
  • 导航到另一个页面时保持网站网址不变?

    我希望我的网站地址栏在进入子页面时不要更改其地址 它应该显示我的index html 即使我进入 tosub 页面 就像我打开一样www xyz com我导航到它仍应显示的任何页面www xyz com 我听说这可以用 htaccess是否
  • php - 检测字符串中的 HTML 并用代码标签包装

    我在处理文本内容中的 HTML 时遇到了麻烦 我正在考虑一种方法来检测这些标签并将所有连续的标签包装在代码标签内 别包裹我 p Hello p div class text wrap me please div span class tit
  • 指针声明为常量和易失性

    在阅读时 我遇到了这种类型的声明和以下行 const volatile char p const volatile char 0x30 p 的值仅受外部条件的影响 我不明白外部条件是什么 还有这种类型的实际用途是什么宣言 The const
  • 支持泛型的 Java 动态代码生成

    有没有提供Java动态代码生成并且还支持泛型的工具 例如 Javassist 就是我需要的工具 但它不支持泛型 我编写了一个使用 Java 6 编译器 API 的小库 但据我所知它依赖于 JDK 有没有办法指定另一个编译器 或者只随我的应用
  • 软件评估 - 许可证 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 任何人都可以帮助我解决软件许可模块问题吗 我们创建了一个新应用程序 并希望发布我们工具的演示版本 30 天试用版 稍后我们需要完整版本 如
  • UITableViewCell 中的 AVPlayer.play() 会短暂阻塞 UI

    我正在尝试将内嵌视频添加到我的 UITableViewCells 如 Instagram Twitter Vine 等 我正在使用 AVPlayerController 和自定义单元通过本地视频文件测试 UI 请参阅下面的示例代码 我等待
  • 无法连接到atom.io 获取主题和包

    我相信我的工作代理阻止我向 Atom 添加主题和包 从首选项菜单中 我得到 获取特色包和主题失败 隐藏输出 tunneling socket could not be established cause 140499728967552 er
  • Scipy.Odr 多变量回归

    我想执行多维 ODRscipy odr 我读了 API 文档 它说多维是可能的 但我无法让它工作 我在互联网上找不到工作示例 而且 API 非常粗糙 没有给出如何继续的提示 这是我的 MWE import numpy as np impor