質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

0回答

925閲覧

Rで、Lassoを一般化線形回帰と比較したい

luckdoll

総合スコア0

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2021/02/06 14:02

前提・実現したいこと

R初心者です。一般化線形回帰に対して、Lassoで作成したモデルを比較しようとしています。
glmを用いた線形回帰の方は、モデルの要約(summary)により基本的な情報を出力することができました。
一方で、Lassoの方は係数の方はcoefficientsで出力することができましたが、モデルの要約(summary)を出しても比較するような情報が出てきませんでした。どのようにしたらモデルの情報が出てくるでしょうか(質問1)。
また、教科書的な本には、モデルの比較にはAICが一つの指標となるとあったので算出しようとしましたが、うまくいきませんでした。なぜ出力できないのでしょうか(質問2)。
常識的なことかもしれませんが、どうぞよろしくお願いいたします。

発生している問題・エラーメッセージ

#質問1 > summary(result_glm) Call: glm(formula = 顧客数 ~ 立地満足度 + 設備満足度 + 店舗面積満足度 + トレーナー満足度 + トレーナー数, family = gaussian(link = "identity"), data = csdat[, -1]) Deviance Residuals: Min 1Q Median 3Q Max -62.126 -37.775 -0.757 18.837 101.168 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -1.781 152.525 -0.012 0.99078 立地満足度 29.029 5.804 5.001 4.14e-05 *** 設備満足度 22.135 7.482 2.959 0.00685 ** 店舗面積満足度 23.390 7.324 3.193 0.00390 ** トレーナー満足度 40.200 33.885 1.186 0.24709 トレーナー数 -7.245 31.109 -0.233 0.81782 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for gaussian family taken to be 2115.22) Null deviance: 290427 on 29 degrees of freedom Residual deviance: 50765 on 24 degrees of freedom AIC: 322.15 Number of Fisher Scoring iterations: 2 > summary(result_lasso) Length Class Mode lambda 100 -none- numeric cvm 100 -none- numeric cvsd 100 -none- numeric cvup 100 -none- numeric cvlo 100 -none- numeric nzero 100 -none- numeric call 5 -none- call name 1 -none- character glmnet.fit 12 elnet list lambda.min 1 -none- numeric lambda.1se 1 -none- numeric index 2 -none- numeric 質問2 extractAIC(result_lasso) #AICの算出 モデル中の母数の個数、AIC(小さい方がモデル良好) UseMethod("extractAIC") でエラー: 'extractAIC' をクラス "cv.glmnet" のオブジェクトに適用できるようなメソッドがありません

該当のソースコード

R

1csdat <- read.csv("顧客満足度データ.csv") 2head(csdat, 10) #データ10行表示 3##glm(普通の線形回帰) 4result_glm <- glm(formula=顧客数~立地満足度+設備満足度+店舗面積満足度+トレーナー満足度+トレーナー数, data=csdat[,-1], family=gaussian(link="identity")) 5##推定された回帰係数 6as.matrix(result_glm$coefficients) #$coefficientsは係数を表示 7summary(result_glm) 8extractAIC(result_glm) #AICの算出 モデル中の母数の個数、AIC(小さい方がモデル良好) 9##推定された回帰係数 10#glmnet(lasso) 11result_lasso <- cv.glmnet(x=as.matrix(csdat[,c("立地満足度","設備満足度","店舗面積満足度","トレーナー満足度","トレーナー数")]), y=csdat$顧客数, family="gaussian",alpha=1) 12plot(result_lasso) 13##推定された回帰係数 14coefficients(result_lasso,s="lambda.min") 15names(result_lasso) 16result_lasso$lambda.min 17summary(result_lasso) 18extractAIC(result_lasso) #AICの算出 モデル中の母数の個数、AIC(小さい方がモデル良好) 19

試したこと

ネットで種々検索しましたが、明確な情報が得られていません。初心者なので、スキル・知識が不足しているだけかもしれません。

補足情報(FW/ツールのバージョンなど)

data 顧客満足度データ
店舗番号 顧客数 立地満足度 設備満足度 店舗面積満足度 トレーナー満足度 トレーナー数 接客研修 入会特典
1 1 595 4.2 5.4 5.9 6.8 12 0 1
2 2 483 4.7 4.1 3.6 6.1 11 0 0
3 3 601 7.5 6.3 5.5 5.6 11 1 0
4 4 439 5.2 6.3 4.5 4.1 9 1 0
5 5 617 5.3 6.2 4.3 7.4 12 1 1
6 6 592 7.7 5.9 6.1 4.2 9 1 1
7 7 709 5.8 5.7 6.2 8.8 14 1 1
8 8 462 3.1 4.6 4.7 7.7 13 0 0
9 9 494 4.0 4.1 5.6 4.8 10 1 0
10 10 471 4.4 4.0 7.1 3.5 8 1 1
11 11 519 6.9 3.4 3.0 4.0 9 0 1
12 12 410 5.6 4.3 1.1 5.6 11 1 0
13 13 382 5.7 2.4 4.3 4.7 10 1 0
14 14 687 5.2 8.6 6.8 4.6 10 0 0
15 15 453 4.2 6.8 5.5 3.6 9 1 0
16 16 515 7.8 2.7 4.6 5.1 10 1 0
17 17 440 5.8 4.0 3.7 3.9 9 0 0
18 18 248 2.1 3.8 2.3 2.4 7 0 0
19 19 527 6.1 6.1 6.1 4.5 9 0 0
20 20 541 4.3 4.5 4.4 6.7 12 0 1
21 21 425 3.4 5.1 5.1 4.2 9 1 0
22 22 483 4.7 4.6 5.2 6.2 11 0 0
23 23 366 3.5 4.6 4.1 2.5 7 1 0
24 24 683 4.0 7.1 7.6 5.1 10 1 1
25 25 460 4.1 4.3 4.1 6.0 11 0 1
26 26 495 2.5 7.4 7.4 5.7 11 0 1
27 27 509 6.4 1.9 4.1 5.3 10 1 1
28 28 482 5.3 5.7 6.2 4.1 9 0 0
29 29 399 3.3 4.9 4.4 3.7 9 0 0
30 30 512 7.0 5.1 6.7 3.5 8 0 1
ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aokikenichi

2021/03/07 07:29

ご質問の意図がよくわからず >glmを用いた線形回帰の方は、モデルの要約(summary)により基本的な情報を出力することができました。 >一方で、Lassoの方は係数の方はcoefficientsで出力することができましたが、モデルの要約 >(summary)を出しても比較するような情報が出てきませんでした。どのようにしたらモデルの情報が >出てくるでしょうか(質問1)。 coeffientsでの出力は出来たのですよね?「モデルの情報」は出ているのではないですか?glmのsummaryと同じものを出したいということでしょうか? ライブラリは別の人が作っていれば結果は別物です。summaryで出される出力も別です。同じ意味を示すものでもライブラリにより出力する関数は別のことが多いです。help等でそのライブラリのマニュアルを見るか、ググって解説記事を書かれているものを読むのがよいと思います。また、それらライブラリ間の違いを統一するライブラリもあり、例えば https://topepo.github.io/caret/ などがあります。 質問2 これも上記と同様ですがAICの出力方法もライブラリにより異なります。caretを用いるか、そのライブラリごとのAICの出力方法を試すしかありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問