2017-02-09 81 views
0

我正在運行car版本2.1.4,並嘗試使用Anova函數來獲取基於Wald的p值,以使用邏輯迴歸和成功/失敗設置進行功效分析。如果我運行以下簡單階乘因子,該函數通過由於0殘餘自由度而產生的誤差,但顯然樣本量非常大。我在做什麼或想到這個錯誤?R中的Car ANOVA函數問題?

glm()調用有關的問題,因爲同樣說零殘差df

X <- matrix(c(100,66566,73,66593,1201,398799,165,66501), 
      nrow = 4,ncol = 2,byrow = TRUE) 
x_df <- data.frame(premium = c(300,300,500,500), 
        restrict = c(500,2500,500,2500)) 
x_df$int <- x_df$premium * x_df$restrict 
mod <- glm(X~premium+restrict+int, 
      data=x_df,family=binomial) 
summary(mod) 
car::Anova(mod,type="III","Wald") 

ADD#1:

看來,成功/失敗語法不能正常工作。當我手動展開數據至〜60萬行配合是相同的,但res.df是正確的:

X<-matrix(c(100,66566,73,66593,1201,398799,165,66501),nrow = 4,ncol = 2,byrow = TRUE) 
x_df<-data.frame(premium=c(300,300,500,500),restrict=c(500,2500,500,2500)) 
x_df$int<-x_df$premium*x_df$restrict 
mod<-glm(X~premium+restrict+premium*restrict, data=x_df,family=binomial) 
summary(mod) 
Anova(mod,type = "III",test.statistic = "Wald") 

    y=c(rep(1,100),rep(0,66566),rep(1,73),rep(0,66593),rep(1,1201),rep(0,398799),rep(1,165),rep(0,66501)) 
    premium<-c(rep(300,66666*2),rep(500,1201+398799+165+66501)) 
    restrict<-c(rep(500,66666),rep(2500,66666),rep(500,1201+398799),rep(2500,165+66501)) 
    x<-data.frame(y=y,premium=premium,restrict=restrict)   
    mod2<-glm(y~premium+restrict+premium*restrict,data=x,family=binomial) 
    summary(mod2) 

    Anova(mod2,type = "III",test.statistic = "Wald") 
+0

嘗試在公式本身中添加交互項,而不是在之後添加產品? – C8H10N4O2

+0

這實際上是一個統計問題,而不是一個編程問題。投票結束/遷移到CrossValidated。 –

+0

知道我認爲這會有所幫助,不是成功/失敗語法旨在產生與擴展到等效數量記錄完全相同的結果嗎? –

回答

0

殘餘自由度是(觀測值數目) - (的參數數)。你有四個觀測值和四個參數。我不確定還有什麼要說的...

+0

但樣本量很大。有超過4個自由度的方式,對。 –

+0

我加了一個補充。從成功/失敗語法擴展時它工作正常。 –