1

このダミー データセットを使用すると、次のようになります。

dummy.data <- data.frame(vaccinated = factor(rep(c("yes", "no"), each = 64)),
  infected = factor(rep(c("yes", "no"), each = 32)),
  animal = factor(rep(1:16, each = 8)),
  tissue = factor(c("blood", "liver", "kidney", "brain")),
  value = runif(128)
  )

これは機能します:

library("nlme")
nlme.model <- as.formula(value ~ vaccinated * infected * tissue)
nlme.fit <- lme(fixed = nlme.model, random = ~1|animal, data = dummy.data)
library("phia")
int.nlme <- interactionMeans(nlme.fit)
plot(int.nlme)

しかし、これはしません:

library("lme4")  
lmer.model <- as.formula(value ~ vaccinated * infected * tissue + (1 | animal))
lmer.fit <- lmer(formula = lmer.model, data = dummy.data)
library("phia")
int.lmer <- interactionMeans(lmer.fit)
plot(int.lmer)

後者では、私は得るだけです

Error in t.default(M) : argument is not a matrix

plotコマンドから。

とで見るint.nlmeと、見た目は異なりますが、何が問題なのかわかりません。どんな入力でも大歓迎です。int.lmerstr

4

2 に答える 2

4

エラーはから生成されたようで、次のphia:::poolseように再現できます。

> phia:::poolse(int.nlme, "adjusted mean","vaccinated")
vaccinated
        no        yes 
0.04483019 0.04483019 
> phia:::poolse(int.lmer, "adjusted mean","vaccinated")
Error in t.default(M) : argument is not a matrix

まだ掘ってる…

phiaそして、これを無視したパッケージのバグであると結論付けました。

Matrix パッケージを使用する R パッケージを作成する場合、t() だけでなく Matrix::t() を指定する必要があるのはなぜですか?

int.lmer回避策として、さらに素晴らしいものにするために、 fromクラスの "covmat" 属性Matrixを標準の Rmatrixクラスに変更します。

> int.lmer <- interactionMeans(lmer.fit)
> plot(int.lmer)
Error in t.default(M) : argument is not a matrix
> attr(int.lmer, "covmat") = lapply(attr(int.lmer,"covmat"),as.matrix)
> plot(int.lmer)

その後、プロットが機能します。

于 2015-07-27T15:43:57.930 に答える
1

これが実質的にバグの原因であることを確認しました。プロットを機能させるには、lmer の共分散行列を「通常の」行列に変換する必要があります。それを修正することが私のToDoリストの優先事項であり、それを含む一連の修正をこの夏中に実行したいと考えています。しかし、誰かが更新を加速するために貢献したい場合は、Github のリポジトリにプル リクエストを提案できます。

https://github.com/heliosdrm/phia

于 2015-08-01T20:20:33.153 に答える