2016-08-02 8 views
1

私はRを使ってデータに一般線形モデル(GLM)をフィットさせようとしています。私はY連続変数と2つのカテゴリファクタAとBを持っています。各ファクタは、存在または不在のため0または1としてコード化されています。glm()関数の使い方は?

データを見ても、AとBの間の明確な相互作用が見られたとしても、GLMはp-値>>> 0.05を示しています。私は何か間違っているのですか?

まず、Y依存変数と2つの要因AとBからなるGLMのデータを含むデータフレームを作成します。これらは2つのレベル係数(0と1)です。組み合わせごとに3つの複製があります。

A<-c(0,0,0,1,1,1,0,0,0,1,1,1) 
B<-c(0,0,0,0,0,0,1,1,1,1,1,1) 
Y<-c(0.90,0.87,0.93,0.85,0.98,0.96,0.56,0.58,0.59,0.02,0.03,0.04) 
my_data<-data.frame(A,B,Y) 

のは、それがどのようなものか見てみましょう:私たちは、Yの値が大幅に減少すると、単にデータを見て、因子Aと係数Bとの間に明確な相互作用があり、見ることができるように

my_data 
## A B Y 
## 1 0 0 0.90 
## 2 0 0 0.87 
## 3 0 0 0.93 
## 4 1 0 0.85 
## 5 1 0 0.98 
## 6 1 0 0.96 
## 7 0 1 0.56 
## 8 0 1 0.58 
## 9 0 1 0.59 
## 10 1 1 0.02 
## 11 1 1 0.03 
## 12 1 1 0.04 

AとBが存在するとき(すなわちA = 1とB = 1のとき)。しかし、>>> p値として、IはAとBの間に有意な相互作用を得るないGLM関数を使用して0.05

attach(my_data) 
## The following objects are masked _by_ .GlobalEnv: 
## 
##  A, B, Y 


my_glm<-glm(Y~A+B+A*B,data=my_data,family=binomial) 
## Warning: non-integer #successes in a binomial glm! 
summary(my_glm) 
## 
## Call: 
## glm(formula = Y ~ A + B + A * B, family = binomial, data = my_data) 
## 
## Deviance Residuals: 
##  Min   1Q  Median   3Q  Max 
## -0.275191 -0.040838 0.003374 0.068165 0.229196 
## 
## Coefficients: 
##    Estimate Std. Error z value Pr(>|z|) 
## (Intercept) 2.1972  1.9245 1.142 0.254 
## A    0.3895  2.9705 0.131 0.896 
## B   -1.8881  2.2515 -0.839 0.402 
## A:B   -4.1747  4.6523 -0.897 0.370 
## 
## (Dispersion parameter for binomial family taken to be 1) 
## 
##  Null deviance: 7.86365 on 11 degrees of freedom 
## Residual deviance: 0.17364 on 8 degrees of freedom 
## AIC: 12.553 
## 
## Number of Fisher Scoring iterations: 6 
+3

ここには「添付」は不要で、良い考えではありません。 –

+0

Konradありがとう、添付しないでスクリプトを実行しましたが、私は同じ結果を得ました(それはAとBの間の相互作用ではありません)なぜ私はこれを得ると思いますか?この相互作用は、SPSSやMinitabのような他の統計ソフトウェアではっきりしています。 –

+0

私は正直なところ、あなたの「家族」はデータを適切にモデル化していないと思います。これを省略すると、重要な相関が得られます。 –

答えて

0

家族=二項は、それ自体でロジット(ロジスティック)回帰は、バイナリ結果を生成暗示します。あなたは連続予測変数のセットからバイナリ結果 を予測しているときQuick-R

ロジスティック回帰

ロジスティック回帰から

に便利です。判別式関数分析よりも多くの場合、 が好まれます。その理由は、限定的な仮定が少ないからです。

+2

これは実際には全く良い答えではありません。 GLMモデルで相互作用が重要でない理由は、自由度(サンプルサイズが小さい)が非常に少なく、これらの少数のデータ行に及ぼすわずかな変化が主効果によって制御されているためです。インタラクション効果を拾うには、10倍もの行が必要です。これはPower Analysisで見ることができます。さらに、統計的、計量的および他の定量的研究ジャーナルでは、カテゴリ独立変数を有するロジットモデルを有することが極めて一般的である。 –

-1

データは相互作用を示します。別のモデルに合うようにしてください。ロジスティックは適切ではありません。

with(my_data, interaction.plot(A, B, Y, fixed = TRUE, col = 2:3, type = "l")) 

enter image description here 分散分析は、すべての要因との相互作用のための明確な重要性を示しています。

fit <- aov(Y~(A*B),data=my_data) 
summary(fit) 
      Df Sum Sq Mean Sq F value Pr(>F)  
A   1 0.2002 0.2002 130.6 3.11e-06 *** 
B   1 1.1224 1.1224 732.0 3.75e-09 *** 
A:B   1 0.2494 0.2494 162.7 1.35e-06 *** 
Residuals 8 0..0015      
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
+0

'Y'は本当に連続しているのですか、0と1で囲まれた割合ですか?後者の場合、ANOVAはこのケースには適用されません。 – majom

+0

元の情報は「Y連続変数」です。 – Robert

+0

私は知っていますが、そのデータはそうではないと言います。私はOPがGLMを最初に使用するというアイデアをなぜ生み出すのか不思議に思っていました。 – majom

1

あなたはYが連続している状態が、データがYではなく分数であることを示しています。したがって、最初にGLMを適用しようとした理由が考えられます。

モデル分数(すなわち、0と1で囲まれた連続値)は、特定の前提条件が満たされている場合、ロジスティック回帰で行うことができます。詳細については、クロスバリデーションされた投稿をご覧ください。https://stats.stackexchange.com/questions/26762/how-to-do-logistic-regression-in-r-when-outcome-is-fractionalしかし、データ記述から、これらの前提条件が満たされているかどうかは不明です。

モデル分数の代わりに、ベータ回帰または分数repsonseモデルがあります。

これらのメソッドをデータに適用するには、以下を参照してください。両方の方法の結果は、徴候および有意性に関して一貫している。

# Beta regression 
install.packages("betareg") 
library("betareg") 
result.betareg <-betareg(Y~A+B+A*B,data=my_data) 
summary(result.betareg) 

# Call: 
# betareg(formula = Y ~ A + B + A * B, data = my_data) 
# 
# Standardized weighted residuals 2: 
# Min  1Q Median  3Q  Max 
# -2.7073 -0.4227 0.0682 0.5574 2.1586 
# 
# Coefficients (mean model with logit link): 
# Estimate Std. Error z value Pr(>|z|)  
# (Intercept) 2.1666  0.2192 9.885 < 2e-16 *** 
# A    0.6471  0.3541 1.828 0.0676 . 
# B   -1.8617  0.2583 -7.206 5.76e-13 *** 
# A:B   -4.2632  0.5156 -8.268 < 2e-16 *** 
# 
# Phi coefficients (precision model with identity link): 
# Estimate Std. Error z value Pr(>|z|) 
# (phi) 71.57  29.50 2.426 0.0153 * 
# --- 
# Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
# 
# Type of estimator: ML (maximum likelihood) 
# Log-likelihood: 24.56 on 5 Df 
# Pseudo R-squared: 0.9626 
# Number of iterations: 62 (BFGS) + 2 (Fisher scoring) 


# ---------------------------------------------------------- 


# Fractional response model 
install.packages("frm") 
library("frm") 
frm(Y,cbind(A, B, AB=A*B),linkfrac="logit") 


*** Fractional logit regression model *** 

# Estimate Std. Error t value Pr(>|t|)  
# INTERCEPT 2.197225 0.157135 13.983 0.000 *** 
# A   0.389465 0.530684 0.734 0.463  
# B   -1.888120 0.159879 -11.810 0.000 *** 
# AB  -4.174668 0.555642 -7.513 0.000 *** 
# 
# Note: robust standard errors 
# 
# Number of observations: 12 
# R-squared: 0.992 
関連する問題