1. ホーム
  2. r

[解決済み] スプレッドシートデータを用いたRでの線形モデルの実行

2022-02-02 21:29:05

質問

年齢や性別など様々な変数を持つa型とb型の106人の個人からなるデータセットがあります。共変量に基づいて、各個人がタイプaかタイプbかを予測する線形モデルを実行したいのです。

各個人の年齢、性別、タイプラベルの値を読み込んでいます。

`data = read.xlsx("spreadsheet.xlsx",2, as.is = TRUE)`
age = data$age
gender = data$gender
type = data$type

ここで、それぞれは以下のような形式です。

age = [28, 30, 19, 23 etc]
gender = [male, male, female, male etc]
type = [a b b b]

そして、それを使ってモデルをセットアップしてみる。

model1 = lm(type ~ age + gender)

が、このようなエラーメッセージが表示されます。

Warning messages:
1: In model.response(mf, "numeric") :
using type="numeric" with a factor response will be ignored
2: In Ops.factor(y, z$residuals) : - not meaningful for factors

を使って、タイプ、年齢、性別の書式を変えてみました。

age = as.numeric(as.character(age))
gender = as.character(gender)
type = as.character(type)

しかし、これではうまくいきません

どうすればいいですか?

あなたがここで行おうとしているような、因子を応答変数とする線形回帰モデルは使用できません(typeが応答変数です)。回帰モデルには、数値の応答変数が必要です。代わりに、分類モデルを検討する必要があります。

ローランドが指摘するように、quot;type"変数を論理的な二項変数として再定義することから始めるとよいでしょう。2つのレベルquot;a"とquot;b"を持つ"type"という因子ではなく、新しい変数、TRUEまたはFALSEを含む"is.type.a"を作成するとよいかもしれません。

そして、二項分布に基づくロジスティック回帰を試すことができます。

model <- glm(is.type.a ~ age + gender,data=data,family="binomial")