【问题标题】:Constraints on the parameters of a fitted model in spatstat对 spatstat 中拟合模型参数的约束
【发布时间】:2021-11-01 15:04:32
【问题描述】:

Rspatstat 中,我想对适合我的数据的模型的参数施加一些限制。

我的数据是一个多类型 ppp 对象,这些类型称为 BRPGluR。如下图所示,点(大致)组织成同心圆。 BRP 对象位于半径为 128.4 的环上,而 GluR 则位于半径为 261.8 的外环上。

使用ppm 函数,我想拟合一个模型,其中BRP 类型的强度函数与~abs(sqrt(x^2+y^2)-128.4) 缩放,GluR 类型的强度函数与~abs(sqrt(x^2+y^2)-261.8) 缩放。但是,当使用以下趋势公式时:

fit_NMJ <- ppm(NMJ,~marks*(abs(sqrt(x^2+y^2)-128.4)+abs(sqrt(x^2+y^2)-261.8)))

我获得了GluR~abs(sqrt(x^2+y^2)-radius_BRP ) 之间以及BRP~abs(sqrt(x^2+y^2)-radius_GluR) 之间的交叉交互(我想避免):

> radius_GluR <- 261.8
> radius_BRP <- 128.4
> fit_NMJ <- ppm(NMJ,~marks*(abs(sqrt(x^2+y^2)-radius_BRP )+abs(sqrt(x^2+y^2)-radius_GluR )))
> fit_NMJ
Nonstationary multitype Poisson process

Possible marks: ‘BRP’ and ‘GluR’

Log intensity:  ~marks * (abs(sqrt(x^2 + y^2) - radius_BRP) + abs(sqrt(x^2 + y^2) - radius_GluR))

Fitted trend coefficients:
                                 (Intercept)                                    marksGluR 
                                -9.850558359                                  0.231315028 
           abs(sqrt(x^2 + y^2) - radius_BRP)           abs(sqrt(x^2 + y^2) - radius_GluR) 
                                -0.044039428                                  0.009055454 
 marksGluR:abs(sqrt(x^2 + y^2) - radius_BRP) marksGluR:abs(sqrt(x^2 + y^2) - radius_GluR) 
                                 0.039652754                                 -0.018198305 

                                                 Estimate       S.E.       CI95.lo      CI95.hi Ztest       Zval
(Intercept)                                  -9.850558359 1.92806275 -13.629491901 -6.071624817   *** -5.1090445
marksGluR                                     0.231315028 2.00684749  -3.702033781  4.164663836        0.1152629
abs(sqrt(x^2 + y^2) - radius_BRP)            -0.044039428 0.01749010  -0.078319402 -0.009759454     * -2.5179626
abs(sqrt(x^2 + y^2) - radius_GluR)            0.009055454 0.01392686  -0.018240694  0.036351602        0.6502150
marksGluR:abs(sqrt(x^2 + y^2) - radius_BRP)   0.039652754 0.01784817   0.004670991  0.074634517     *  2.2216710
marksGluR:abs(sqrt(x^2 + y^2) - radius_GluR) -0.018198305 0.01478904  -0.047184295  0.010787685       -1.2305263

即我想将参数 marksGluR:abs(sqrt(x^2 + y^2) - radius_BRP)marksBRP:abs(sqrt(x^2 + y^2) - radius_GluR) 限制为零。是否可以在趋势公式中指定这一点?它是否也适用于多个独立数据集(使用mppm 函数时)?

我也可以选择分别拟合这两种类型,但是当使用点交互拟合不同的非泊松模型时,我可能会错过一些类型间的交互(例如,在拟合 MultiStrauss 模型时)。

【问题讨论】:

    标签: r spatstat model-fitting


    【解决方案1】:

    您只需要直接构造规范协变量。

    首先让我们缩写

    g <- function(x, y, marks, R, type) {
           I(marks == type) * abs(sqrt(x^2+y^2) - R)
         }
    gGluR <- function(x, y, marks) {
        g(x, y, marks, radius_GluR, "GluR")
    }
    gBRP <- function(x, y, marks) {
        g(x, y, marks, radius_BRP, "BRP")
    }
    

    然后

    ppm(NMJ ~ marks + gGluR + gBRP)
    

    【讨论】:

    • 感谢您的回答。确切的公式不应该是ppm(NMJ ~ gGluR(x, y, marks) + gBRP(x, y, marks))(因为对marks的依赖已经出现在自定义函数中)?
    • 不,这会有所不同。模型公式的解释在 spatstat 书的第 9.3 节中进行了解释。
    • 实际上这在公开版本中尚不支持。相反,您必须使用ppm(NMJ ~ marks + gGluR(x,y,marks) + gBRP(x,y,marks))
    猜你喜欢
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    相关资源
    最近更新 更多