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

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

ただいまの
回答率

90.83%

  • Python

    5919questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • for

    189questions

    for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

  • Anaconda

    31questions

pythonのループ(logistic回帰)

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 83

ok020316

score 1

 前提・実現したいこと

500人に対して50項目のアンケートを行ったファイルにおいて各検査結果を目的変数としたlogistic回帰を実行したい。(python)

ここに質問の内容を詳しく書いてください。
500人に対して50項目のアンケートを行ったファイルがあります。男性の場合1、女性の場合0として目的変数yは性別
説明変数をアンケート結果として表記しました。アンケート結果ははいを1、いいえを0としています。男女別の傾向をみるためにlogistic回帰を行おうと考えました。
ファイルの形式はcsvで500行(各人のID)、50列(各アンケート結果)
アンケートをx_1~x_50とし、y~x_1,x_2,・・・x_50と、1つ1つの検査結果を説明変数としてdf=1のlogistic解析を
50個まとめてpythonで施行したいと考えています。

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

for文でエラーが表示される
エラーメッセージ
NameError                                 Traceback (most recent call last)
<ipython-input-79-d0bb2b48b9f5> in <module>()
10 test_result = pd.read_csv("sample.csv")
11 test_result
---> 12 for i in [x_1,x_2,x_3,x_4,x_5,x_6,x_7,x_8,x_9,x_10,x_11,x_12,x_13,x_14,x_15,x_16,x_17,x_18,x_19,x_20,x_21,x_22,x_23,x_24,x_25,x_26,x_27,x_28,x_29,x_30,x_31,x_32,x_33,x_34,x_35,x_36,x_37,x_38,x_39,x_40,x_41,x_42,x_43,x_44,x_45,x_46,x_47,x_48,x_49,x_50]:
13        mod_glm = smf.glm(formula = "y ~ i",
14        data = test_result,
x_1 is not defined

 該当のソースコード

import numpy as np
import pandas as pd
import scipy as sp
from matplotlib import pyplot as plt
import seaborn as sns
import statsmodels.formula.api as smf
import statsmodels.api as sm
%matplotlib inline
test_result = pd.read_csv("sample.csv")
test_result
for i in[x_1,x_2,x_3,x_4,x_5,x_6,x_7,x_8,x_9,x_10,x_11,x_12,x_13,x_14,x_15,x_16,x_17,x_18,x_19,x_20,x_21,x_22,x_23,x_24,x_25,x_26,x_27,x_28,x_29,x_30,x_31,x_32,x_33,x_34,x_35,x_36,x_37,x_38,x_39,x_40,x_41,x_42,x_43,x_44,x_45,x_46,x_47,x_48,x_49,x_50]:
mod_glm = smf.glm(formula = "y ~ i",
data = test_result,
family=sm.families.Binomial()).fit()

python

 試したこと

mod_glm = smf.glm(formula = "y ~ x_1",
data = test_result,
family=sm.families.Binomial()).fit()
とそれぞれ入力すると問題なく施行できる。

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

ここにより詳細な情報を記載してください。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

未定義の変数は使えません。というか、質問者様はまず文字列リテラルと変数の区別がついていないと思います。これがわからないとちょっと今後しんどいと思うので(統計分析に使おうなんて無謀極まりないレベル)、pythonプログラミングの入門書をやってくださいな。

文字列のリストにしたいなら、

["x_1","x_2","x_3",...]


ですが、df.columnsとかにうまいこと同じようなものが格納されていると思うので、スライスなどで切り出して使うのもあり(というかそうしないとしんどい)。

そのライブラリ自体はよくわからないのですが、軽く調べた感じだと重回帰にするなら"y ~ x_1+x_2+..."というフォーマットで、単回帰を50回やるっていうのならとりあえず文字列結合でフォーマットを作ってください。こんな感じだと思います。

for x_name in["x_1","x_2",...]:
    mod_glm = smf.glm(formula = "y ~ "+x_name,
                      data = test_result,
                      family=sm.families.Binomial()).fit()

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/06 11:37

    hayataka2049様 有難うございました。

    キャンセル

+1

logictic回帰を使って何らかの結果を得ることが目的なのであれば、以下を使ったほうがシンプルと思います。
sklearn.linear_model.LogisticRegression

コードイメージは以下です。

from sklearn.linear_model import LogisticRegression
log_model = LogisticRegression() # LogisticRegressionの定義
result = log_model.fit(X,Y) # 説明変数のarrayであるXと目的変数のarrayであるYを使った学習

つまらないことですが、男女別の傾向を知るためにlogistic回帰を使うのであれば説明変数は性別を使うべきかと思います。(質問の記載:目的変数yは性別、説明変数をアンケート結果と…)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/06 11:38

    R.Shigemori様
    有難うございます。そちらでもいけました。

    キャンセル

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

  • ただいまの回答率 90.83%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    matplotlibで横軸のラベルを縦書きにしたい

    pythonのmatplotライブラリの質問です. あるグラフを作成する際に,横軸のラベルを日本語の文字列にしています. デフォルトだと,文字列は横書きで表示されるのですが

  • 解決済

    pythonでcsvファイルのデータを使った折れ線グラフの描画方法

    csvファイル内のデータをmatplotibおよびnumpyを使用して描画する方法はどのようにすればいいのでしょうか? 下記コード以外に必要なものの概要を教えて下さい。 ちなみ

  • 解決済

    三次元グラフ同時に表示できるようにしたい

    前提・実現したいこと 同時に2枚(またはそれ以上)表示されるようにしたい 発生している問題・エラーメッセージ 2枚表示はされるが完全に重なった位置に表示されてしまうため、

  • 解決済

    matplotlib.pyplot.scatter で軸の値を変更

    前提・実現したいこと 現在、pythonでmatplotlib.pyplot.scatterを用いて散布図を書こうとしています。 そのときに、軸の値を変更する方法を知りたいです。

  • 解決済

    ImportErrorが解消できない件

    以下に記すエラーの解消方法が分からないのでアドバイスを頂きたいです。 pythonのバージョンに合ったnumpyをインストールしていない時に出るエラーだと思います。 pipでmat

  • 解決済

    pythonで画像を出力したい

    前提・実現したいこと 完全にプログラミング初心者です。 下記の本のサンプルコードをなぞりながら、実行しているときにエラーが発生し、行き詰りました。 (本のコードを真似しているだけで

  • 解決済

    クラスタ毎の色変更ができません

    前提・実現したいこと クラスタリングの勉強をしています. scikit-learnでクラスタリングしようと思っています. 下記の2つの記事を参考にさせていただいています. こちらの

  • 解決済

    matplotlib contourマップの値の制限とanimation

    import numpy as np import matplotlib.pyplot as plt E=np.zeros((10,10)) for i in range(1,1

同じタグがついた質問を見る

  • Python

    5919questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • for

    189questions

    for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

  • Anaconda

    31questions