警告が出る。predict.lm で " 'newdata' は1行でしたが、見つかった変数は32行でした" という警告が表示されました。
2023-08-02 12:14:18
質問
Rでpredictとlm関数を使用していて、同じデータに対してデータフレームとベクトルで異なる結果が出るという不具合がありました。
DataFrameのコードです。
data(mtcars)
fitCar<-lm(mtcars$mpg~mtcars$wt)
predict(fitCar,
data.frame(x=mean(mtcars$wt)),
interval="confidence")
出力します。
fit lwr upr
1 23.282611 21.988668 24.57655
2 21.919770 20.752751 23.08679
3 24.885952 23.383008 26.38890
4 20.102650 19.003004 21.20230
5 18.900144 17.771469 20.02882
6 18.793255 17.659216 19.92729
7 18.205363 17.034274 19.37645
8 20.236262 19.136179 21.33635
9 20.450041 19.347720 21.55236
10 18.900144 17.771469 20.02882
11 18.900144 17.771469 20.02882
12 15.533127 14.064349 17.00190
13 17.350247 16.104455 18.59604
14 17.083024 15.809403 18.35664
15 9.226650 6.658271 11.79503
16 8.296712 5.547468 11.04596
17 8.718926 6.052112 11.38574
18 25.527289 23.927797 27.12678
19 28.653805 26.519252 30.78836
20 27.478021 25.554415 29.40163
21 24.111004 22.715653 25.50635
22 18.472586 17.319886 19.62529
23 18.926866 17.799465 20.05427
24 16.762355 15.452833 18.07188
25 16.735633 15.423002 18.04826
26 26.943574 25.112491 28.77466
27 25.847957 24.198041 27.49787
28 29.198941 26.963760 31.43412
29 20.343151 19.242185 21.44412
30 22.480940 21.268498 23.69338
31 18.205363 17.034274 19.37645
32 22.427495 21.219818 23.63517
警告メッセージです。
newdata'は1行でしたが、見つかった変数は32行ありました。
両方のデータをベクトルに分離したところ、違う答えが返ってきました。
ベクトルのコード
predict(fit,data.frame(x=mean(x)), interval="confidence")
出力します。
fit lwr upr
1 20.09 18.99 21.19
この差の理由は何でしょうか?
どのように解決するのですか?
この問題は、各自の
data
と
newdata
であり、vectorやdataframeを使用しても問題ありません。
でモデルを当てはめると
lm
関数でフィットし、その後
predict
を使って予測する。
predict
で同じ名前を見つけようとします。
newdata
. 最初のケースの名前
x
と矛盾します。
mtcars$wt
と衝突しているため、警告が表示されます。
ここで、私が言っていることの説明図をご覧ください。
これは、あなたがやってもエラーにならなかったものです。
a <- mtcars$mpg
x <- mtcars$wt
#here you use x as a name
fitCar <- lm(a ~ x)
#here you use x again as a name in newdata.
predict(fitCar, data.frame(x = mean(x)), interval = "confidence")
fit lwr upr
1 20.09062 18.99098 21.19027
この場合、xという名前を使ってモデルを適合させ、また、xという名前を使って予測するために
newdata
. この方法では、警告は出ませんし、期待通りです。
モデルを当てはめるときに、名前を他のものに変えるとどうなるか見てみましょう。
a <- mtcars$mpg
#name it b this time
b <- mtcars$wt
fitCar <- lm(a ~ b)
#here I am using name x as previously
predict(fitCar, data.frame(x = mean(x)), interval = "confidence")
fit lwr upr
1 23.282611 21.988668 24.57655
2 21.919770 20.752751 23.08679
3 24.885952 23.383008 26.38890
4 20.102650 19.003004 21.20230
5 18.900144 17.771469 20.02882
Warning message:
'newdata' had 1 row but variables found have 32 rows
今やったことは、名前を変更しただけです。
x
に変更したことだけです。
b
という名前を使って予測し
x
の中にある
newdata
. ご覧の通り、ご質問と同じエラーが発生しました。
これではっきりしたでしょうか?
関連
-
ggplot2 からグリッドと背景色を削除する。
-
R read.table Error:埋め込まれたヌルが含まれているようです。
-
R - ユークリッド距離の計算を簡単にする方法
-
[解決済み] Rの%*%の意味 [重複]について
-
[解決済み] Rで文字列から文字を削除する
-
[解決済み] R および RStudio のコンソールをクリアする関数
-
[解決済み] パッケージ 'xxx' は利用できません (for R version x.y.z) 」という警告にどのように対処したらよいですか?
-
[解決済み] コマンドラインからRスクリプトを実行する
-
[解決済み] なぜ `[`] は `subset` よりも優れているのですか?
-
[解決済み】私のggplot2構文が賢明であるときに、R CMDチェック「no visible binding for global variable」注記を処理するにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
R: エラー: $ 演算子は原子ベクトルに対して無効です。
-
Rによる系統的クラスタリング(階層)分析のグラフ形式の完全版
-
[解決済み] "エラーです。Rでテーマの書式を保存する際に「Don't know how to add RHS to the theme object」(テーマオブジェクトにRHSを追加する方法がわかりません)と表示されます。
-
[解決済み] lm.fit(x,y,offset = offset, singular.ok,...) 0 非NAケースでboxcox式で計算するとエラーになる。
-
[解決済み] Rで文字列から文字を削除する
-
[解決済み] ggplot 2.0.0でのポイントサイズ
-
[解決済み] R:自然対数を使った方程式をnlsで使う
-
[解決済み] 情報を損なわずに因数を整数値に変換するには?
-
[解決済み] データフレームのリストを行単位で1つのデータフレームに結合する
-
[解決済み] data.frameの1つの列の名前を変更する方法は?