web-dev-qa-db-ja.com

lm.fit(x、y、offset = offset、singular.ok、...)のエラーboxcox式を使用した0の非NAケース

次のコードでboxcox変換を実行しようとしています。

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

しかし、私はこのエラーを取得し続けます:

Lm.fit(x、y、offset = offset、singular.ok = singular.ok、...)のエラー:0(非NA)の場合呼び出し:... eval-> eval-> boxcar-> boxcar。式-> lm-> lm.fit実行が停止しました

前もって感謝します!

6
Vickie Ip

エラーメッセージ

lm.fit(x、y、offset = offset、singular.ok = singular.ok、...):0(非NA)ケース

変数xまたはy(または両方)がNAのみを持つ場合、lm(y ~ x)コマンドによって生成されます。
例を次に示します。

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

あなたのコードでは、変数の1つがすべてを使用してすべてのNAを持っているかどうかをテストすることをお勧めします(lmコマンドの直前):

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

私の例では:

all(is.na(y))
[1] TRUE
9
Marco Sandri

エラーは、データ内のNAまたは不正な変換によってトリガーできます。

#From the mtcars dataset
mpg.reg3 <- lm(mpg ~ cylinders + displacement + horsepower + weight + acceleration + year + Origin, data=Auto, na.action=na.exclude)

na.action=引数に注意してください。これをna.excludeに設定すると、lm関数がデータ内のNAを無視できます。別のオプションはna.omitです。これはわずかに異なる方法で動作します。

もう1つの問題は、データの不適切な変換である可能性があります。相互作用の用語と操作を再確認してください。

2
ToastyDre