統計ソフトRの重回帰分析でエラーが発生する理由と対処法

このQ&Aのポイント
  • 統計ソフトRを使用して重回帰分析を行っている際に、エラーが発生しました。エラーメッセージは「因子保管モードを変更するのは不正です」と表示されています。このエラーの原因として、データの型が適切でない可能性が考えられます。重回帰分析の説明変数には、数値型のデータを使用する必要があります。しかし、説明変数が実際には因子型のデータである場合、このエラーが発生します。
  • このエラーに対処する方法としては、説明変数のデータ型を数値型に変換する必要があります。lm()関数で重回帰分析を行う際には、データフレームの中の数値型の列を指定する必要があります。説明変数のデータ型が因子型である場合は、as.numeric()関数などを使用して数値型に変換してください。
  • Rで壁にあたった場合、以下の方法で対処できるかもしれません。まずはエラーメッセージを確認し、エラーが発生した原因を特定します。次に、問題を解決するための解決策や関連する情報を探すために、Rの公式ドキュメントやオンラインコミュニティなどを活用してください。また、検索エンジンを使用して具体的なエラーメッセージを検索し、他のユーザーが同じエラーに遭遇した際の対処法を参考にすることも有効です。さらに、Rの入門書やチュートリアルなどの情報も参考にしながら、自分で問題を解決できる能力を身につけることが大切です。
回答を見る
  • ベストアンサー

統計ソフトRの重回帰分析について。

自身の前後で地価の説明変数の影響がどう変化したかなという興味の元統計を勉強し始めました、最近。それでRにてlm()で重回帰分析してsummary()をしようとしています。 その途中でけっつまづいたので助けてください! aが被説明変数でb1,b2が説明変数として > a <- c(148, 160, 159, 153, 151, 140, 158, 137, 149, 160) > b1 <- c(41, 49, 45, 43, 42, 29, 49, 31, 47, 47) > b2 <- c(41, 159, 153, 151, 140, 31, 47, 47, 47, 47) > y<-data.frame(a,b1,b2) >y.lm<-lm(a~.,data=y) と打つと 以下にエラー lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 因子保管モードを変更するのは不正です 追加情報: 警告メッセージ: In model.response(mf, "numeric") : 因子応答を持つ type="numeric" の使用は無視されるでしょう とかえされるんですがなにがいけないんですかね ? 助けてください! それ以外にもRで壁にあたった時自分で対処できるようになれそうなサイトorぐぐり方も指南していただけると今後が幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
noname#192382
noname#192382
回答No.1

エクセルを持っていられませんか。 エクセルですとえらーにはならず、次のような結果になりました。 概要 回帰統計 重相関 R 0.922189168 重決定 R2 0.850432862 補正 R2 0.807699394 標準誤差 3.599850577 観測数 10 分散分析表 自由度 変動 分散 観測された分散比 有意 F 回帰 2 515.7875308 257.8937654 19.90086228 0.001293977 残差 7 90.71246924 12.95892418 合計 9 606.5 係数 標準誤差 t P-値 下限 95% 上限 95% 下限 95.0% 上限 95.0% 切片 108.0325518 7.331876516 14.73463875 1.58675E-06 90.69543123 125.3696725 90.69543123 125.3696725 X 値 1 0.969570219 0.182814521 5.303573351 0.00111902 0.53728288 1.401857559 0.53728288 1.401857559 X 値 2 0.028442965 0.02308905 1.231881151 0.257765718 -0.026153923 0.083039853 -0.026153923 0.083039853

tubotomo62
質問者

お礼

もう回答されないとほっといていました。 回答ありがとうございます。 ベストアンサーにさせて頂きます。

関連するQ&A

  • 統計ソフトRの重回帰分析で困ってます。

    自身の前後で地価の説明変数の影響がどう変化したかなという興味の元統計を勉強し始めました、最近。それでRにてlm()で重回帰分析してsummary()をしようとしています。 その途中でけっつまづいたので助けてください! aが被説明変数でb1,b2が説明変数として yy<-read.csv("tes.csv") a<-yy[,1] b1<-yy[,2] b2<-yy[,3] b3<-yy[,4] y<-data.frame(a,b1,b2,b3) y.lm<-lm(a~.,data=y) 『summary(y.lm)最終的にはこれをやりたいのだがlm()のとこで』 以下にエラー lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) : 因子保管モードを変更するのは不正です 追加情報: 警告メッセージ: In model.response(mf, "numeric") : 因子応答を持つ type="numeric" の使用は無視されるでしょう とかえされるんですがなにがいけないんですかね ? a <- c(148, 160, 159, 153, 151, 140, 158, 137, 149, 160) b1 <- c(41, 49, 45, 43, 42, 29, 49, 31, 47, 47) b2 <- c(41, 159, 153, 151, 140, 31, 47, 47, 47, 47) b3 <- c(41, 159, 153, 151, 140, 31, 47, 47, 47, 47) y.lm<-lm(a~.,data=y) summary(y.lm) これはいけるんですがね。ちなみにcsvのなかは後者のような文字列があるのですが... 助けてください! それ以外にもRで壁にあたった時自分で対処できるようになれそうなサイトorぐぐり方も指南していただけると今後が幸いです。

  • 重回帰分析と分散分析の結果が違う

    次のようなRのコードを書きました。 x1~x7は因子で、1がなし2がありだと思ってください。 最後のxがデータです。これが大きい程よいと言う意味だと思ってください。 data <- data.frame( x1 = c("1","1","1","1","2","2","2","2"), x2 = c("1","1","2","2","1","1","2","2"), x3 = c("1","1","2","2","2","2","1","1"), x4 = c("1","2","1","2","1","2","1","2"), x5 = c("1","2","1","2","2","1","2","1"), x6 = c("1","2","2","1","1","2","2","1"), x7 = c("1","2","2","1","2","1","1","2"), x = c(35,48,21,38,50,43,31,22) ) data colnames(data) <-c("B","C","B:C","D","B:D","A","7","x") data summary(aov(x ~ A+B+C+D+B:C+B:D,data=data)) summary(lm(x ~ A+B+C+D+B:C+B:D,data=data)) 結果としましては、 分散分析では因子C以外は有意差がないという結論を出しており、 重回帰分析では因子Bと因子B:D以外は有意差がないという結論を出しています。 重回帰分析と分散分析は基本的に数学的にやっていることは同じと言われたのですが、結果が異なり戸惑っています。 なぜこのようなことになったのか心当たりがある方ご教授ください。 よろしくお願いします。

  • 統計ソフトRの回帰分析について

    フリー統計ソフトRの回帰分析に関する質問です。 統計の研究でRというソフトを最近使い始めたのですが、なかなかうまくいきません。 特に、説明変数に期間を考慮した回帰分析のやり方です。 具体的には 二つの変数XとYがあって t期におけるYの値を過去6期間(k=1,2,3,...,6)のXの値で回帰させたいのですが (式)      6 Yt=A+ΣBkXt-k     k=1 どのような式をlm()に入れれば分析できるでしょうか? 

  • 統計学 重回帰分析についての問題

    問題 目的関数をy、説明変数を他の二つとして重回帰分析を行え。 この問題をRで実行し、※は自分がつけた補足です。 以下は間違ったことを言っていないか見てほしいです。 よろしくお願いします。 > condo<- read.table("clipboard",header=TRUE) ※Excel上で範囲指定したデータを読み込む > condo x1 x2 y 1 12 4 22 2 12 3 24 3 11 3 21 4 7 1 19 5 8 3 19 6 9 2 22 7 14 5 24 8 11 4 23 > attach(condo) > lm1<- lm(y~.,data =condo)  ※yを目的変数、他のすべての変数を説明変数として線形重回帰分析を実行 > summary(lm1) ※実行結果の要約 Call: lm(formula = y ~ ., data = condo) Residuals: ※残差の8数要約 1 2 3 4 5 6 7 8 -0.7477 0.6682 -1.3259 -0.4708 -0.3084 1.1016 -0.1752 1.2582 Coefficients: ※係数の最小二乗推定値と対応t値など Estimate Std. Error t value Pr(>|t|) (Intercept) 13.0140 2.1917 5.938 0.00193 ** ※β_0 x1 1.0058 0.3465 2.903 0.03369 * ※β_1 x2 -0.5841 0.6478 -0.902 0.40854 ※β_2 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 1.087 on 5 degrees of freedom Multiple R-squared: 0.7852, Adjusted R-squared: 0.6992 ※寄与率、自由度調整済み寄与率 F-statistic: 9.137 on 2 and 5 DF, p-value: 0.02139 最後の行は、母集団において、得られた回帰式 y= β_0+ β_1 x_1+ β_2 x_2+ ε_i が全くあてにならないという仮説(H0: β_1= β_2= 0 )を分散分析で検証している。検定統計量 F=S_R・(n-p-1)/ S_e・p ( n:標本数、p:説明変数の数、S_R:回帰による平方和、S_e:残差平方和 ) が自由度(p,n-p-1)のF分布に従うことを用いている。上記では、p値が0.02139と極めて小さいので、有意水準0.05で仮説H0は棄却され、母集団においてもこの式はあてになるという結論に至る。 ・・回答よろしくお願いします。

  • 統計学 線形重回帰分析についての問題

    問題 高校生22名の物理の学力yと、物理の興味x_1、数学の学力x_2、知能偏差値x_3との関係を調べたデータ(100点満点で点数化)(22record.xls)に関して、yのx_1,x_2,x_3に対する線形重回帰分析を行え。 以下は、この問題について、R上で実行した結果と、※は自分が補足した部分です。これについて、間違ったことを言っていないか見てほしいです。 よろしくお願いします。 > record<- read.table("clipboard",header=TRUE) ※Excel上で範囲指定したデータを読み込む > record y x_1 x_2 x_3 1 43 35 50 55 2 62 44 50 70 3 15 20 10 32 4 23 32 15 45 5 84 70 88 80 6 90 76 90 92 7 67 58 82 54 8 45 37 52 45 9 75 85 92 60 10 13 10 15 25 11 56 52 58 73 12 86 62 83 89 13 24 30 24 60 14 18 22 20 32 15 52 60 46 42 16 80 50 72 86 17 70 92 63 76 18 32 38 25 17 19 37 45 30 25 20 50 46 55 73 21 60 63 59 73 22 72 43 70 72 > lm1<- lm(y~.,data=record)  ※yを目的関数、他のすべての変数を説明変数として線形重回帰分析を実行 > summary(lm1) ※実行結果の要約 Call: lm(formula = y ~ ., data = record) Residuals: ※残差の5数要約 Min 1Q Median 3Q Max -8.871 -4.041 -0.737 5.087 8.921 Coefficients: ※係数の最小二乗推定値と対応t値など Estimate Std. Error t value Pr(>|t|)   (Intercept) -1.95005 3.95936 -0.493 0.6283  ※β_0 x_1 0.17629 0.10686 1.650 0.1163  ※β_1 x_2 0.61691 0.10483 5.885 1.43e-05 *** ※β_2 x_3 0.23466 0.09315 2.519 0.0214 *  ※β_3 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 5.976 on 18 degrees of freedom Multiple R-squared: 0.9485, Adjusted R-squared: 0.94 ※寄与率、自由度調整済み寄与率 F-statistic: 110.6 on 3 and 18 DF, p-value: 8.711e-12 ※回帰式に関する分散分析 > slm<- step(lm1) ※変数選択実行 Start: AIC=82.25 ※AIC(Akaike's Information Criterion);赤池情報量規準 y ~ x_1 + x_2 + x_3 Df Sum of Sq RSS AIC <none> 642.83 82.25 - x_1 1 97.21 740.04 83.34 ※AIC最小 - x_3 1 226.66 869.49 86.89 - x_2 1 1236.70 1879.53 103.85 上記では、AIC法による変数選択を行っている。この方法では、AICの値が小さいほど良いモデルとされる。 独立正規誤差を仮定する場合: AIC=2p+n/2+n/2log(2πσ^2) (p:説明変数の数、n:標本数、σ:誤差分散の不偏推定量) ・・回答よろしくお願いします。

  • 重回帰分析?

    二つの変数があり、各々従属変数に対して単回帰分析を行うと決定係数が0.5と0.4ぐらいの感じになります。この二つの変数をくっつけてもう少し精度を上げたいのですが、一方は線形なんですが、もう片方が非線形(指数関数)なのです。 たしか、重回帰分析は線形どうしでしかくっつけることができなかったような気がするのですが、どのようにしたらできるでしょうか? 混合モデルとかを使ったらよいのでしょうか??? 理論的に考えると Y=aX1 + bexp(cX2) かY=aX1 + bX1exp(cX2)と思うのです Yが従属変数X1,X2が変数、a,b,cがそれぞれ係数です。 使用できるソフトはSPSS,SAS,mintab,S-plus,R,excelです。Rでのが使い慣れているのでRでできるとよいのですが、できるならどのソフトでもかまいません。

  • おしえて!重回帰分析の独立変数(説明変数)

    重回帰分析の目的変数が、(A+B+C+D)というものとします。 A~Dは、数量データです。 説明変数にAやBなどが入っていたら、それはダメですか? 説明変数X(Aとか)が目的変数Y(A+B+C+D)の一部の構成要素だったら、Xを使って重回帰分析はやったらダメなのですか?

  • 統計解析ソフトRで単回帰分析(繰り返しあり)とその95%信頼限界を求めたい

    統計初心者です。 統計解析ソフトRで単回帰分析をしようと思っています。単回帰分析は繰り返しがある場合です。さらに回帰式の95%信頼限界を求めたいと考えています。昨日、書店を回って成書を見たのですが、上記の説明がされているものを見つけることができませんでした。 テキストファイルからデータの読み込みはできましたし、散布図を作成することもできました。 しかし、n=3のデータをそのままlm(従属変数~独立変数)として計算させると、Coefficientsの値(切片、傾き)が全く異なる値となります。 そこで 1.繰り返しがある場合、普通にlmだけでは解析できないのでしょうか。 また、95%信頼限界については、どのように取り組めばいいのか、検討がつきません。 ご教示の程、よろしくお願いします。 2.さらに、95%信頼限界の求め方を教えていただけないでしょうか。 よろしくお願いします。

  • 統計学 重回帰分析についての問題

    米国における大気汚染に関するデータについて,以下の問いに答えよ.但し, 表中の7 つの変数の意味は以下のとおり. SO2 大気中の二酸化硫黄の含有量[マイクログラム/立方メートル] Temp 年間平均気温(華氏) [度] Manuf 20 人以上を雇用する製造業者の数 Pop 住民数(1970 年の国勢調査に基づく) [千人単位] Wind 年間平均風速[マイル/時間] Precip 年間平均降水量[インチ] Days 降水のあった日数の年間平均[日] (1) R 上でSO2 を目的変数,残りの6 つを説明変数とする重回帰分析を実行せよ. (2) (1) で求められる重回帰式を記せ. (3) (1) における自由度調整済み寄与率を求めよ.また,この値から,(1) で求めら れた回帰式の性能について何が言えるか. この問題について、とりあえずRで実行したのですが… NAって何かよくわからないのですが、数値が出ていないので間違っていると思うのですが… どうすればいいですか?? > usair<-read.table("clipboard",header=TRUE) ♯Excel上で範囲指定したデータを読み込む > usair City SO2 Temp Manuf Pop Wind Precip Days 1 Phoenix 10 70.3 213 582 6.0 7.05 36 2 LittleRock 13 61.0 91 132 8.2 48.52 100 3 SanFrancisco 12 56.7 453 716 8.7 20.66 67 4 Denver 17 51.9 454 515 9.0 12.95 86 5 Hartford 56 49.1 412 158 9.0 43.37 127 6 Wilmington 36 54.0 80 80 9.0 40.25 114 7 Washington 29 57.3 434 757 9.3 38.89 111 8 Jacksonville 14 68.4 136 529 8.8 54.47 116 9 Miami 10 75.5 207 335 9.0 59.80 128 10 Atlanta 24 61.5 368 497 9.1 48.34 115 11 Chicago 110 50.6 3344 3369 10.4 34.44 122 12 Indianapolis 28 52.3 361 746 9.7 38.74 121 13 DesMoines 17 49.0 104 201 11.2 30.85 103 > attach(usair) > lm1<-lm(SO2~.,data=usair)  > summary(lm1) Call: lm(formula = SO2 ~ ., data = usair) Residuals: ALL 13 residuals are 0: no residual degrees of freedom! Coefficients: (6 not defined because of singularities) Estimate Std. Error t value Pr(>|t|) (Intercept) 24 NA NA NA CityChicago 86 NA NA NA CityDenver -7 NA NA NA CityDesMoines -7 NA NA NA CityHartford 32 NA NA NA CityIndianapolis 4 NA NA NA CityJacksonville -10 NA NA NA CityLittleRock -11 NA NA NA CityMiami -14 NA NA NA CityPhoenix -14 NA NA NA CitySanFrancisco -12 NA NA NA CityWashington 5 NA NA NA CityWilmington 12 NA NA NA Temp NA NA NA NA Manuf NA NA NA NA Pop NA NA NA NA Wind NA NA NA NA Precip NA NA NA NA Days NA NA NA NA Residual standard error: NaN on 0 degrees of freedom Multiple R-squared: 1, Adjusted R-squared: NaN F-statistic: NaN on 12 and 0 DF, p-value: NA 回答よろしくお願いします。

  • 統計ソフトR lm関数とpredict関数について

    お世話になります。 統計ソフトRのド素人です。 回帰を行い、更に予想値の出力を試みているのですが、 なかなか出来ずに困っています。 アドバイスをお願いします。 データフレーム1と2があります。 データフレーム1には変数X、Aが、 データフレーム2には変数X、Bが存在します。 また、データフレーム外に変数aが存在するとします。 回帰によるオブジェクトをkaikiで表わすとします。 kaiki<-lm(X~...) 回帰をもとに計算される予測値をYosouで表わすとします。 Yosou<-predict(kaiki) 質問です。 1)データフレーム1のAとデータフレーム2のBとaを説明変数として、 目的変数Xの予想をするには、どのようにすればよいのでしょうか? 2)kaikiがうまく行っていることは、どうやって確かめればいいのでしょうか? 3)Yosouをデータフレーム1に出力したい場合は、どのようにコードすればよいのでしょうか? ---------------------------------- frame1 (変数X,Aを持つ) frame2 (変数X,Bを持つ) a kaiki<-lm(framea$X~frameA$A+frameB$B+a)??? Yosou<-predict(kaiki) Yosouをframe1に出力できる?? ------------------------------------ 言葉足らず、または理解不足の点があり、 質問が分かりずらい時は、ご指摘いただけるとありがたいです。 よろしくお願いします。

専門家に質問してみよう