R中匹配对的比例赔率序数逻辑回归(polr)

Proportional Odds Ordinal Logistic Regression (polr) for matched pairs in R

T_Data 包含 6 个级别的结果。 'Assign' 取值“1”或“0”。 T_Data 包含 221 个 'Assign' 值为“1”的受试者和 307 个 'Assign' 值为“0”的受试者。我使用下面的代码

使用 'polr' 进行了比例赔率逻辑回归
### Ordinal Logistic Regression
schtyp.f <- factor(T_Data$outcome, labels = c("M0", "M1", "M2", "M3", "M4", "M5"))
m <- polr(schtyp.f ~ Assign, data = T_Data, Hess=TRUE)
summary(m)
## store table
(ctable <- coef(summary(m)))
## calculate and store p values
p <- pnorm(abs(ctable[, "t value"]), lower.tail = FALSE) * 2
## combined table
print(ctable <- cbind(ctable, "p value" = p))
## End of Ordinal Logistic Regression

我根据其他变量进行了 1:1 匹配,匹配对的编号从 1 到 221 并在列 'Match_ID'.
中 我将如何进行匹配的序数逻辑回归?

我先做了一个数据结构m_polr。列变量为 'Assign'、'Outcome' 和 'Match_pair_id'。 'Assign' 取值 1 或零,'Outcome' 取值 0 到 6,'Matched_pair_id' 取值 1,2,...221。请注意,有 221 个匹配对。

cat("\n")
cat("********* Matched Proportional Ordinal Logistic regression ************\n")
cat("\n")
### Ordinal Logistic Regression
rm(ctable, schtyp.f, m, p)
schtyp.f <- factor(m_polr$Outcome, labels = c("M0", "M1", "M2", "M3", "M4", "M5", "M6"))
m <- polr(schtyp.f ~ Assign + Match_pair_id, data = m_polr, Hess=TRUE)
summary(m)
## store table
(ctable <- coef(summary(m)))
## calculate and store p values
p <- pnorm(abs(ctable[, "t value"]), lower.tail = FALSE) * 2
## combined table
print(ctable <- cbind(ctable, "p value" = p))