#以下を実行したときに表示されるフォルダ名にデータ(v08c4tv.csv)を置いてください.

getwd()

 

#データの読み込み

c4tv <-  read.csv("v08c4tv.csv")

 

#1

#購入意向は01という値を持つ変数.

#jitter()でこの変数に小さな乱数の値を足している.それにより散布図で重なっている部分をばらけさせる.

#0.1の部分を大きくするとより広い範囲に,小さくすると狭い範囲にばらけさせることができる.

c4purchase<-jitter(c4tv$購入意向,0.1)

#散布図の描画.

plot(c4tv$高級志向度, c4purchase, xlab="高級志向度", ylab="購入か否か")

 

#単回帰分析lm(基準変数~予測変数)で分析できる.

c4lm <- lm(購入意向~ 高級志向度, data = c4tv)

summary(c4lm)

#abline(回帰分析の結果)で回帰直線を描画できる.散布図に上書き.

abline(c4lm, col = "blue")

 

#2

#subset()で高級志向度が456のいずれかに該当する行のみを取り出すなどをおこなっている.

#%in% c(4,5,6)で,高級志向度が456なら条件に合うと判定.

c4tv04_06 <- subset(c4tv, 高級志向度 %in% c(4,5,6))

c4tv07_09 <- subset(c4tv, 高級志向度 %in% c(7,8,9))

c4tv10_12 <- subset(c4tv, 高級志向度 %in% c(10,11,12))

c4tv13_15 <- subset(c4tv, 高級志向度 %in% c(13,14,15))

c4tv16_18 <- subset(c4tv, 高級志向度 %in% c(16,17,18))

c4tv19_20 <- subset(c4tv, 高級志向度 %in% c(19,20))

 

#たとえば高級志向が456の人の中で,購入すると答えた人の割合を算出.

#購入しない=0,購入する=1なので,sum()部分で合計することで購入する人数を算出.

#nrow()部分は,データの行数=高級志向度456の人数を算出している.

c4ratio <- c(sum(c4tv04_06$購入意向)/nrow(c4tv04_06),

    sum(c4tv07_09$購入意向)/nrow(c4tv07_09),

    sum(c4tv10_12$購入意向)/nrow(c4tv10_12),

    sum(c4tv13_15$購入意向)/nrow(c4tv13_15),

    sum(c4tv16_18$購入意向)/nrow(c4tv16_18),

    sum(c4tv19_20$購入意向)/nrow(c4tv19_20))

#横軸の値の設定.高級志向度456の場合,横軸の値を5としている.

c4value <- c(5,8,11,14,17,19.5)

#折れ線グラフの描画,散布図に上書き.

lines(c4value, c4ratio)

 

#3

#ロジスティック回帰分析

c4logireg1<-glm(購入意向 ~ 高級志向度, data = c4tv, family = binomial)

summary(c4logireg1)

 

#予測変数に4から20までの値を与える.予測変数はデータフレーム化しておく必要がある.

c4newdata1 = data.frame("高級志向度" = c(4:20))

#4から20までの値について確率を計算.predict(回帰分析の結果, 予測変数の値, type)typeresponseにしておかないと確率を予測できない.

c4predict1 <- predict(c4logireg1, c4newdata1, type = "response")

 

#折れ線グラフの描画,散布図に上書き.

lines(c4newdata1$"高級志向度", c4predict1, col = "red")

 

#4

#911の確率

predict(c4logireg1, data.frame("高級志向度" = c(9:11)), type = "response")

#911のオッズ.predict()typeを設定しない(もしくはlinkと設定)とオッズの対数,つまりロジット(5章参照)が求まる.

#オッズの対数なので,指数変換すればオッズが求められる.

(c4odds <- exp(predict(c4logireg1, data.frame("高級志向度" = c(9:11)))))

#参考:上記計算でオッズを求められていることの確認.

0.3885635/(1-0.3885635)

#オッズ比,2つのオッズの割り算.c4odds[1]が高級志向度92なら103なら11

c4odds[2]/c4odds[1]

c4odds[3]/c4odds[2]

#オッズ比はexp(傾き)になる.

exp(c4logireg1$coefficient[2])

 

#5

#ロジスティック回帰分析

c4logireg2<-glm(購入意向 ~ 高級志向度 + 基本性能重視度, data = c4tv, family = binomial)

summary(c4logireg2)

#高級志向度,基本性能重視度ともに10のデータフレームを作成して予測.

predict(c4logireg2, data.frame("高級志向度" = 10, "基本性能重視度" = 10), type = "response")

 

#====================================================

#2022.09.09 齋藤朗宏・荘島宏二郎