独立変数(RHS変数)が1つの値を取る係数または文字の場合、そのタイプのエラーが発生します。
例:R
内の虹彩データ今
(model1 <- lm(Sepal.Length ~ Sepal.Width + Species, data=iris))
# Call:
# lm(formula = Sepal.Length ~ Sepal.Width + Species, data = iris)
# Coefficients:
# (Intercept) Sepal.Width Speciesversicolor Speciesvirginica
# 2.2514 0.8036 1.4587 1.9468
、あなたのデータは一種のみで構成されている場合:
(model1 <- lm(Sepal.Length ~ Sepal.Width + Species,
data=iris[iris$Species == "setosa", ]))
# Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
# contrasts can be applied only to factors with 2 or more levels
変数が数値(Sepal.Width
)が、単一の値のみと言うを取っている場合3の場合、モデルは実行されますが、次のようにその変数の係数としてNA
が得られます。
解決策:従属変数には1つの値のみで十分なバリエーションがありません。だから、その変数が数値か文字か要素変数かどうかに関わらず、その変数を削除する必要があります。
コメントは次のようにコメントで更新されます:エラーはファクタ/キャラクタでのみ発生することがわかっているので、これらのファクタ変数のレベルの長さが1(DROP) 1(NODROP)。そして、あなたが見つけ、今だけ
m <- iris[, l]
因子変数のデータフレームを取得することができます
(l <- sapply(iris, function(x) is.factor(x)))
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# FALSE FALSE FALSE FALSE TRUE
次のコードを使用して、変数が要因であるかどうか、確認するには
要因変数のレベル数(その変数を削除する必要がある場合)
ifelse(n <- sapply(m, function(x) length(levels(x))) == 1, "DROP", "NODROP")
注:fアクター変数は1つだけです、それは変数です、あなたは落とす必要があります。
ありがとうございました。私はこれをRで修正することができますか、それとも元のデータを編集する必要があるのでしょうか。また、データを見てみると、すべての変数が複数の値をとっていますか?彼らが参照している特定の変数を見る方法はありますか? – REnthusiast
更新されたソリューションを参照し、因子変数にのみ焦点を当てます。 – Metrics
また、変数に "エキゾチックな"文字が含まれている場合、同じエラーが表示されます。私はバグだと思います。私の変数CustomerTypeは、 "ö"を含む1つの値を持っています。変更したときにエラーが消えた – ErrantBard