首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在R中是否有一个有3个以上参数预测因子的黄土的实现,或者具有类似效果的诡计?

在R中是否有一个有3个以上参数预测因子的黄土的实现,或者具有类似效果的诡计?
EN

Stack Overflow用户
提问于 2011-06-16 02:24:23
回答 1查看 2.9K关注 0票数 3

打电话给当地回归和/或R的所有专家!

我在R中遇到了标准黄土函数的局限性,希望你能给我一些建议。当前的实现只支持1-4个预测器。让我列出我们的应用场景,以说明为什么只要我们想要使用全局匹配的参数协变量,这就很容易成为一个问题。

本质上,我们有一个空间畸变s(x,y)覆盖在一些测量z上。

代码语言:javascript
运行
AI代码解释
复制
z_i = s(x_i,y_i) + v_{g_i}

这些测量值z可以按每个组g的相同的不失真测量值v进行分组。对于每个度量,组成员数g_i是已知的,但是组的基本不失真测量值v_g是未知的,应该通过(全局而不是局部)回归来确定。

我们需要估计二维空间趋势s(x,y),然后我们要删除它。在我们的应用程序中,假设在最简单的场景中,每组至少有35次度量。测量是随机放置的。因此,以第一组为参考,有19个未知的偏移量。

下面的玩具数据代码(具有一维x中的空间趋势)适用于两个或三个偏移组。

不幸的是,对于包含错误消息的四个或多个偏移组,黄土调用失败。

代码语言:javascript
运行
AI代码解释
复制
Error in simpleLoess(y, x, w, span, degree, parametric, drop.square,
normalize,  :
  only 1-4 predictors are allowed"

我试图推翻这个限制

代码语言:javascript
运行
AI代码解释
复制
k>d2MAX in ehg136.  Need to recompile with increased dimensions.

这样做有多容易呢?我在任何地方都找不到d2MAX的定义,这似乎是硬编码的--这个错误显然是由loessf.f中的第1359行触发的。

代码语言:javascript
运行
AI代码解释
复制
if(k .gt. 15)   call ehg182(105)

或者,是否有人知道可以在这里应用的具有全局(参数)偏移组的局部回归的实现?

还是有更好的方法来处理这件事?我尝试了相关结构的lme,但这似乎要慢得多。

如有任何意见,将不胜感激!

非常感谢,

大卫

代码语言:javascript
运行
AI代码解释
复制
###
#
# loess with parametric offsets - toy data demo
#

x<-seq(0,9,.1);
x.N<-length(x);

o<-c(0.4,-0.8,1.2#,-0.2  # works for three but not four
     );  # these are the (unknown) offsets
o.N<-length(o);
f<-sapply(seq(o.N),
          function(n){
            ifelse((seq(x.N)<= n   *x.N/(o.N+1) &
                    seq(x.N)> (n-1)*x.N/(o.N+1)),
                    1,0);
          });
f<-f[sample(NROW(f)),];

y<-sin(x)+rnorm(length(x),0,.1)+f%*%o;
s.fs<-sapply(seq(NCOL(f)),function(i){paste('f',i,sep='')});
s<-paste(c('y~x',s.fs),collapse='+');
d<-data.frame(x,y,f)
names(d)<-c('x','y',s.fs);

l<-loess(formula(s),parametric=s.fs,drop.square=s.fs,normalize=F,data=d,
         span=0.4);
yp<-predict(l,newdata=d);
plot(x,y,pch='+',ylim=c(-3,3),col='red');  # input data
points(x,yp,pch='o',col='blue');           # fit of that

d0<-d; d0$f1<-d0$f2<-d0$f3<-0;
yp0<-predict(l,newdata=d0);
points(x,y-f%*%o);     # spatial distortion
lines(x,yp0,pch='+');  # estimate of that

op<-sapply(seq(NCOL(f)),function(i){(yp-yp0)[!!f[,i]][1]});

cat("Demo offsets:",o,"\n");
cat("Estimated offsets:",format(op,digits=1),"\n");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-16 06:08:11

你为什么不用加性模型来做这个呢?Package mgcv将处理这类模型,如果我理解您的问题,很好。我可能错了,但您显示的代码与x~ y有关,但您的问题提到了z~ s(x,y) + g。下面我为gam()显示的是用xy中的空间平滑建模的响应z,并对g进行参数估计,并将g作为数据框架中的一个因素存储:

代码语言:javascript
运行
AI代码解释
复制
require(mgcv)
m <- gam(z ~ s(x,y) + g, data = foo)

还是我误解了你想要的?如果您想发布一个小的数据片段,我可以使用mgcv.给出一个适当的示例。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6370361

复制
相关文章
SharedWorker 演示
---- 作用: 通过SharedWorker可以在同源内的不同窗口之间传递信息 构建worker脚本 let pool = []; onconnect = function (e) { let port = e.ports[0]; pool.push(port); port.onmessage = function (e) { pool.forEach((v) => { v != port &amp;&amp; v.postMessage(e.data);
前端小鑫同学
2022/12/25
8830
SharedWorker 演示
[Java 开发利器Lombok] 常用注解演示
在以往的对象模型编码时,我们需要写一大堆的get/set以及不同的构造函数等。Lombok为我们提供了一个非常好的插件形式。 在大多数的项目中,只需要使用到以下集中Annotation就足够了,如果需要查看更多的选项,请参考:传送门
Isaac Zhang
2019/09/10
7720
[Java 开发利器Lombok] 常用注解演示
ManualResetEvent使用演示
ManualResetEvent 允许线程通过发信号互相通信。通常,此通信涉及一个线程在其他线程进行之前必须完成的任务。 当一个线程开始一个活动(此活动必须完成后,其他线程才能开始)时,它调用 Reset 以将 ManualResetEvent 置于非终止状态。此线程可被视为控制 ManualResetEvent。调用 ManualResetEvent 上的 WaitOne 的线程将阻止,并等待信号。当控制线程完成活动时,它调用 Set 以发出等待线程可以继续进行的信号。并释放所有等待线程。 一旦它被终止,ManualResetEvent 将保持终止状态(即对 WaitOne 的调用的线程将立即返回,并不阻塞),直到它被手动重置。 可以通过将布尔值传递给构造函数来控制 ManualResetEvent 的初始状态,如果初始状态处于终止状态,为 true;否则为 false。
全栈程序员站长
2022/09/09
5140
死锁案例演示
两个或两个以上进程在执行过程中,因为争夺资源而造成一种互相等待的现象,如果没有外力干涉,它们无法再执行下去。
别团等shy哥发育
2023/02/25
4580
死锁案例演示
HTML5
定义:HTML5 定义了 HTML 标准的最新版本,是对 HTML 的第五次重大修改,号称下一代的 HTML
Qwe7
2022/05/21
3.4K0
HTML5
JS 里拖拽三事件, onmousedown onmousemove onmouseup 是实现交互性效果,根据鼠标的移动位置让标签元素联动
jinghong
2020/05/12
4.3K0
HTML5
HTML指的是HTML 4.01, XHTML是HTML的过渡版本,XHTML是XML风格的HTML 4.01。而HTML 5指的是下一代的HTML,也就是HTML 4.01的升级版。
Qwe7
2022/05/18
1.9K0
html5
blockquote : 引用大段的段落解释 q : 引用小段的短语解释 abbr : 缩写或首字母缩略词 address : 引用文档地址信息 cite : 引用著作的标题
用户9603238
2022/03/31
5.5K0
HTML5
1、HTML5是什么? HTML5是超文本标记语言的第五次重大修改,2014年10月29日标准规范制定完成。 HTML5的设计目的是为了在移动设备上支持多媒体。新的语法特征被引进以支持这一点,如video、audio和canvas标记。HTML5还引进了新的功能,可以真正改变用户与文档的交互方式,包括: 1. 新的解析规则增强了灵活性 2. 新属性 3. 淘汰过时的或冗余的属性 4. 一个HTML5文档到另一个文档间的拖放功能 5. 离线编辑 6. 信息传递的增强 7. 详细的解析
小胖
2018/06/27
4.7K0
HTML5
更多属性:width、height(只设置一个会保持原图比例,两个都设置自定义图片比例)
roydonGuo
2022/11/02
3.3K0
HTML5
Html5 学习系列(一)认识HTML5
        在讲什么是Html5之前得先了解两个组织;WHATWG :网页超文本技术工作小组(英语:Web Hypertext Application Technology Working Group,缩写为WHATWG),是一个以推动网络 HTML 5 标准为目的而成立的组织。在2004年,由Opera、Mozilla基金会和苹果这些浏览器厂商和一些相关团体形成的一个松散的、非正式的协作组织,这些团体希望发展一些新的技术,从而开发人员可以在互联网上编写并部署应用。 另外一个就是大家熟悉的W3C :万维网联盟(World Wide Web Consortium,W3C),又称W3C理事会,它主要是为解决web应用中不同平台、技术和开发者带来的不兼容问题,保障Web信息的顺利和完整流通,万维网联盟制定了一系列标准并督促Web应用开发者和内容提供者遵循这些标准。标准的内容包括使用语言的规范,开发中使用的导则和解释引擎的行为等等。W3C也制定了包括XML和CSS等的众多影响深远的标准规范。
老马
2022/05/10
2.5K0
Discuz分页方法演示
if(!defined('IN_DISCUZ') || !defined('IN_DISCUZ')) {     exit('Access Denied'); }     shownav('yuyue', 'menu_yuyue_list');     showformheader('article&operation=trash');     showtableheader('预约列表');     showsubtitle(array('姓名', '电话', '时间','操作'));     //列表开
96php.cn
2018/04/28
1.3K0
信号(三)- 示例演示
Main、Producer 和 Consumer 这三个类中的每一个都有自己的 Run 方法,最好在各自的终端窗口中运行它们。每次运行时,它都会显示它为日志生成的消息。一旦用户通过提供它正在等待的输入来响应 Main 类,Main 的 Run 方法将终止删除信号量。然后,用户可以通过键入命令查看所有进程的合并日志文件的显示
用户7741497
2022/08/03
7190
HTML5 Video Creator:HTML5视频制作软件
HTML5 Video Creator是一款强大的HTML5视频制作软件,使用它可创建在每个平台上的每个浏览器中运行的可部署HTML5视频,使用非常简单,只需拖放、设置、导出即可!
啾咪啾咪
2022/09/16
3.3K0
html5 progress
<section> <h2>进度 Progress</h2> <p>进度: <progress id="p" value="0" max=100><span>0</span>%</progress></p> <script> window.onload=function(){ va
2021/11/08
2.7K0
html5 progress
HTML5拖拽
图片自带拖拽功能 其他元素可设置draggable属性:draggable :true 拖拽元素(被拖拽的元素)事件 :
踏浪
2019/07/31
3.9K0
html5标签
什么是html5? 仅仅是狭义的概念。h5草案前身叫做web application 由WHATWG组织编写,在2007年提交到了w3c,w3c起名叫做HTML5。 广义上:新一代开发web富客户端
河湾欢儿
2018/09/06
3.7K0
Java演示死锁代码
死锁代码 public class DeadLock {     final Object lockA = new Object();     final Object lockB = new Object();     public static void main(String[] args) {         DeadLock demo = new DeadLock();         demo.startLock();     }     public void startLock() {
黑泽君
2018/10/11
6920
Java演示死锁代码
Sass安装演示
安装好 Ruby 后我们打开 cmd 输入 gem install sass 就可以了。
小蓝枣
2020/09/25
6360
Sass安装演示
HASH分区演示案例
在RANGE和LIST分区中,我们必须明确指定一个给定的区间或列值集合,来指定哪些记录进入哪些分区;
用户1503405
2021/10/06
6130

相似问题

HTML5图像演示

10

HTML5历史API演示

25

使用HTML5演示如何编写字符

15

本地存储-带代码的HTML5演示

40

如何在使用HTML5中进行演示?

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档