[解決済み] model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) におけるエラー:要因Xが新しいレベルを持っています。
質問
ロジスティック回帰を行いました。
EW <- glm(everwrk~age_p + r_maritl, data = NH11, family = "binomial")
さらに
everwrk
の各レベルに対して
r_maritl
.
r_maritl
には以下のレベルがあります。
levels(NH11$r_maritl)
"0 Under 14 years"
"1 Married - spouse in household"
"2 Married - spouse not in household"
"3 Married - spouse in household unknown"
"4 Widowed"
"5 Divorced"
"6 Separated"
"7 Never married"
"8 Living with partner"
"9 Unknown marital status"
だから、そうしたんだ。
predEW <- with(NH11,
expand.grid(r_maritl = c( "0 Under 14 years", "1 Married -
spouse in household", "2 Married - spouse not in household", "3 Married -
spouse in household unknown", "4 Widowed", "5 Divorced", "6 Separated", "7
Never married", "8 Living with partner", "9 Unknown marital status"),
age_p = mean(age_p,na.rm = TRUE)))
cbind(predEW, predict(EW, type = "response",
se.fit = TRUE, interval = "confidence",
newdata = predEW))
問題は、次のようなレスポンスが返ってくることです。
Model.frame.default(Terms, newdata, na.action = na.action, xlev =) Error in model.frame.default(Terms, newdata, na.action = na.action, xlev =) object$xlevels) : 因子 r_maritl は新しいレベル 0 14歳未満, 既婚者 - 世帯の配偶者不明
サンプルデータです。
str(NH11$age_p)
num [1:33014] 47 18 79 51 43 41 21 20 33 56 ...
str(NH11$everwrk)
Factor w/ 2 levels "2 No","1 Yes": NA NA 2 NA NA NA NA NA 2 2 ...
str(NH11$r_maritl)
Factor w/ 10 levels "0 Under 14 years",..: 6 8 5 7 2 2 8 8 8 2 ...
解決方法は?
tl;dr
データで表現されていないいくつかのレベルが要因にあり、それがモデルで使用される要因から削除されているように見えます。 これらのレベルに対する反応を予測することができないので、後から考えると、これはそれほど驚くことではありません。 とはいえ、これは
温和に
を生成するような素晴らしいことをRがやってくれないのは驚きです。
NA
の値を自動的に取得します。 この問題を解決するには
levels(droplevels(NH11$r_maritl))
は、予測フレームを構築する際に、あるいは同等に
EW$xlevels$r_maritl
.
再現性のある例です。
maritl_levels <- c( "0 Under 14 years", "1 Married - spouse in household",
"2 Married - spouse not in household", "3 Married - spouse in household unknown",
"4 Widowed", "5 Divorced", "6 Separated", "7 Never married", "8 Living with partner",
"9 Unknown marital status")
set.seed(101)
NH11 <- data.frame(everwrk=rbinom(1000,size=1,prob=0.5),
age_p=runif(1000,20,50),
r_maritl = sample(maritl_levels,size=1000,replace=TRUE))
ミッシングレベルを作ろう
NH11 <- subset(NH11,as.numeric(NH11$r_maritl) != 3)
モデルをフィットさせる。
EW <- glm(everwrk~r_maritl+age_p,data=NH11,family=binomial)
predEW <- with(NH11,
expand.grid(r_maritl=levels(r_maritl),age_p=mean(age_p,na.rm=TRUE)))
predict(EW,newdata=predEW)
成功!
<ブロッククオートmodel.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) でエラーが発生しました。 factor r_maritl has new levels 2 Married - spouse not in household.
predEW <- with(NH11,
expand.grid(r_maritl=EW$xlevels$r_maritl,age_p=mean(age_p,na.rm=TRUE)))
predict(EW,newdata=predEW)
関連
-
[解決済み】エラー:ベクターメモリの枯渇(制限に達したか) R 3.5.0 macOS
-
[解決済み】Rで「パッケージ'FILE_PATH'のインストールで終了ステータスが0でなかった」。
-
[解決済み】LMEモデルのレベル0、ブロック1でのバックソルブにおける特異性
-
[解決済み】データのマージ - fix.by(by.x, x)のエラー)
-
[解決済み】match.fun(FUN)でのエラーについて)
-
[解決済み】ロジスティック回帰 - eval(family$initialize) : y 値は 0 <= y <= 1 である必要があります。
-
[解決済み】Rで文字ベクトルから引用符を削除する
-
[解決済み] ヒートマップ作成時のエラー - 外部関数呼び出しでNA/NaN/Inf (arg 11)
-
[解決済み] na.fail.defaultのエラー:オブジェクトの値が見つからない - しかし、値が見つからないことはありません。
-
[解決済み】"object not interpretable as a factor "というエラーの意味は?[クローズド]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】プロット時に 'x' と 'y' の長さが異なる ERROR が発生する。
-
[解決済み】Rでの関数の最適化(L-BFGS-Bでは'fn'に有限の値が必要)。
-
[解決済み】x[[i]]でのエラー:レベル2で再帰的インデックス作成に失敗した
-
[解決済み】R Markdown - html出力でフォントサイズとフォントタイプを変更する
-
[解決済み】 boxplotに色を追加する - "離散的なスケールに連続的な値が供給される "エラー
-
[解決済み】「Error in stripchart.default(x1, ...) : invalid plotting method」エラーを回避する方法は?
-
[解決済み】エラー - replacement has [x] rows, data has [y].
-
[解決済み】Rでのデータ操作。'X'はアトミックでなければならない
-
[解決済み】Rで、Error: ggplot2 doesn't know how to handle of data of class numericに対処する。
-
[解決済み】dplyr: "Error in n(): 関数は直接呼ばれるべきではありません"