You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于baltimore住房数据用glmmPQL加面积权重建模报错求解

glmmPQL权重参数报错解决方法

核心原因

MASS::glmmPQL继承nlme包的模型参数规则,weights参数不支持直接传入数值向量,必须传入nlme定义的方差函数对象,用于指定观测方差的加权规则,这是触发报错的根本原因。

解决方案

  • 调整权重传入格式:如果需要按房屋面积SQFT设置观测权重(即权重与SQFT成正比),使用varFixed()函数封装方差与权重的对应关系即可,varFixed(~I(1/w))等价于设置观测权重为w。
  • 避免样本量不匹配:不要预先计算单独的权重向量,所有变量统一存入建模数据框中,自动适配建模时的样本删失规则,避免因缺失值剔除导致的长度不匹配问题。
  • 优化后可运行代码如下:
library(spData)
library(nlme)
library(MASS)

baltimore <- spData::baltimore
# 提前剔除相关字段的缺失值,避免拟合异常
baltimore <- na.omit(baltimore[, c("PATIO", "PRICE", "CITCOU", "X", "Y", "SQFT")])
# 自定义权重存入数据框
baltimore$w <- baltimore$SQFT / 100

model1 <- glmmPQL(
  PATIO ~ PRICE,
  random = ~ 1 | CITCOU,
  data = baltimore,
  family = binomial,
  correlation = corExp(form = ~ X + Y, nugget = TRUE),
  weights = varFixed(~ I(1/w))
)
  • 如果你不需要调整权重的缩放系数,也可以省略自定义w的步骤,直接写weights = varFixed(~ I(1/SQFT))即可,拟合的系数结果不会变化,仅标准误的缩放系数会受影响。

内容的提问来源于stack exchange,提问作者willbutdontwanna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 18:06:05