1. ホーム
  2. スクリプト・コラム
  3. その他

[解決済み】lm.fit(x,y,offset = offset, singular.ok,...) boxcox式で0非NAケースでエラーになる。

2022-01-10 22:06:17

質問事項

最近、ボックスコックス変換のプログラムを書いているのですが、コードは以下の通りです。

urban1 <- subset(ski,urban <= 4,na.rm=TRUE)
ski$gender <- as.numeric((as.character(ski$gender)),na.rm=TRUE)
urban1 <- as.numeric((as.character(urban1)))
x <- (ski$gender*urban1)
y <- ski$EPSI.
bc <- boxcox(y ~ x) 
(trans <- bc$x[which.max(bc$y)]) 
model3 <- lm(y ~ x) 
model3new <- lm(y^trans ~ x)
ski$EPSI. <- ski$EPSI. + 1

でも、エラーが出るんです。

Error in lm.fit(x,y,offset = offset, singular.ok = singular.ok, ...) : 0 (non-NA) cases Calls: ... eval -> eval -> boxcar -> boxcar.formula -> lm -> lm.fit Execution halted

解決方法は?

エラーメッセージ

<ブロッククオート

lm.fit(x,y,offset = offset, singular.ok = singular.ok, ...) : 0件 (非NA)

が生成されます。 lm(y ~ x) コマンドを使用する場合、変数 x または y (またはその両方)はNAのみです。
以下はその例である。

n <- 10
x <- rnorm(n,1)
y <- rep(NA,n)
lm(y ~ x)

Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 
  0 (non-NA) cases

あなたのコードで、私はテストすることをお勧めします(ちょうどあなたの lm コマンドを使用して、変数の1つにすべてのNAが使用されているかどうかを確認します。

all(is.na(x))
all(is.na(y))
all(is.na(y^trans))

私の例では

all(is.na(y))
[1] TRUE