2012-01-05 3 views
0

В R можно сравнить две подходящие модели: fit1 и fit2, используя команду anova (fit1, fit2).Как сравнить модели с использованием anova в rpy2?

Однако, если мы попытаемся сделать это аналогично с помощью интерфейса Rpy2, он всегда дает ошибку. Анова для одной модели, скажем, anova (fit1), может быть вычислена через Rpy2.

Ошибка, которая возникает при использовании двух есть:

нет способа принуждать этот класс S4 в вектор.

Итак, я хотел знать, как эта проблема может быть исправлена ​​и как я могу сравнить две модели, установленные в rpy2?

ответ

1

Вы должны эти заголовки

import rpy2.robjects as robjects 
from rpy2.robjects import DataFrame, Formula 

тогда, Это работает для меня:

formula = Formula('responsev ~ predictorv') 
formula2 = Formula('responsev ~ predictorv2') 
dataf = DataFrame({'responsev': robjects.IntVector(Y), \ 
       'predictorv': robjects.IntVector(X),\ 
           'predictorv2': robjects.IntVector(X2)}) 

fit=robjects.r.lm(formula=formula, data=dataf) 
fit2=robjects.r.lm(formula=formula2, data=dataf) 

a=robjects.r.anova(fit,fit2) 

Вы все еще должны выяснить, как обращаться с a, но это должно быть незначительным.

Надеюсь, это поможет!

+0

fmla = Formula ('Protein ~ Time + Group + Age + Gender + (1 | PatientID)'); fmla2 = Formula ('Protein ~ Group + Age + Gender + (1 | PatientID)'); fit1 = robjects.r.lmer (formula = fmla, data = dataf, REML = 'FALSE'); fit2 = r.lmer (formula = fmla2, data = dataf, REML = 'FALSE'); a = robjects.r.anova (fit1, fit2); Но это все равно дает ту же ошибку: никакой метод для принудительного применения этого класса S4 к вектору – user1132391

+0

Он работает, если вы используете lm. Но ошибка указана при использовании lmer. Мне нужно использовать lmer, поскольку я пытаюсь создать модель смешанного эффекта. Итак, есть ли какая-то другая команда, которая должна быть предоставлена ​​для нее. – user1132391

+0

вам, вероятно, нужно импортировать свою библиотеку или что-то в этом роде. Вы попробовали это? – Horacio