R 术语错误。公式(公式,数据=数据):公式中的幂无效

R 术语错误。公式(公式,数据=数据):公式中的幂无效,r,R,我正在尝试对剂量预测进行转换,以下是我的代码: mod = glm(colonies ~ (as.numeric(as.factor(dose)))^(m), data = salmonella, family = "poisson") 其中“m”是我使用的电源。然而,我犯了一个错误 > mod = glm(colonies ~ (as.numeric(as.factor(dose)))^(m), data = salmonella, family = "poisson") Error

我正在尝试对剂量预测进行转换,以下是我的代码:

mod = glm(colonies ~ (as.numeric(as.factor(dose)))^(m), data = salmonella, family = "poisson")
其中“m”是我使用的电源。然而,我犯了一个错误

> mod = glm(colonies ~ (as.numeric(as.factor(dose)))^(m), data = salmonella, family = "poisson")
Error in terms.formula(formula, data = data) : invalid power in formula
有人知道为什么吗

抱歉说不清楚。这里我的m是早期计算得出的-0.18182。我现在明白了我不应该使用as.numeric(as.factor)。但是如果代码是

mod = glm(colonies ~ (as.factor(dose))^(m), data = salmonella, family = "poisson")

错误仍然存在。这很奇怪,因为当我把m改为2时,它就起作用了

tl;dr我的最佳猜测是,您应该使用
I(…^m)
来保护
^
/让R将其视为数值求幂运算符

我在
遥远的
包裹中发现了
沙门氏菌
,可以确认您的错误。事实上,它通过各种简化得以持续

m <- 1  ## same results with m <- 2L, etc.
mod = glm(colonies ~ (as.numeric(as.factor(dose)))^(m), data = salmonella, family = "poisson")
mod = glm(colonies ~ dose^(m), data = salmonella, family = "poisson")
mod = glm(colonies ~ dose^m, data = salmonella, family = "poisson")
mod = lm(colonies ~ dose^m, data = salmonella)
图中显示,这并不是完全疯狂(尽管也不必要):

库(ggplot2);theme_set(theme_bw())

m如果这是包装“faraway”中的沙门氏菌数据集,那么在剂量值上不能使用as.factor或as.numeric,因为它已经是数字了

转换为因子将严重扭曲“剂量”的含义 此外,在R中建立多项式模型的正确方法是使用
poly
函数,而不是形成二次项。如果您坚持使用“原始”二次项,那么使用poly会更容易,但正如Ben所建议的,应该使用I函数

library(faraday)
m=2
mod = glm(colonies ~ I(dose^m), data = salmonella, family = "poisson")
不过,更好的办法是:

 m=2; mod = glm(colonies ~ poly(dose, m), data = salmonella, family = "poisson")

这将给出线性项和二次项,但二次项将作为正交多项式进行,然后让您进行适当的推断。

沙门氏菌是否在CRAN的图书馆中?这是将因子转换为数字的错误方法。
m
来自哪里?它是在数据内部还是外部。你真的在做一个数学运算吗?因为公式中的
^
通常用于迭代,而不是数学。你确定你真的想用你的剂量做
as.numeric(as.factor())
?这似乎很奇怪。
library(faraday)
m=2
mod = glm(colonies ~ I(dose^m), data = salmonella, family = "poisson")
 m=2; mod = glm(colonies ~ poly(dose, m), data = salmonella, family = "poisson")