R GLSETIMATE(对象,控制=控制)中出错:计算;gls";fit是单数,排名19

R GLSETIMATE(对象,控制=控制)中出错:计算;gls";fit是单数,排名19,r,R,第一次在论坛上提问,这次我在其他答案中找不到答案 我刚刚开始学习使用R,所以我忍不住认为这有一个我没有看到的简单解决方案 我在分析不同昆虫种类(SP)和温度(T)之间的关系,解释变量 以及得到的成人股骨的面积(femor.area)响应变量 这是我的线性模型: ModeloP <- lm(Femur.area ~ T * SP, data=Datos) 我得到以下错误 glsEstimate(对象,控件=控件)中出错: 计算的“gls”拟合为单数,秩19 线性模型勉强通过了夏皮罗正态性检

第一次在论坛上提问,这次我在其他答案中找不到答案

我刚刚开始学习使用R,所以我忍不住认为这有一个我没有看到的简单解决方案

我在分析不同昆虫种类(
SP
)和温度(
T
)之间的关系,解释变量 以及得到的成人股骨的面积(
femor.area
)响应变量

这是我的线性模型:

ModeloP <- lm(Femur.area ~ T * SP, data=Datos)
我得到以下错误

glsEstimate(对象,控件=控件)中出错: 计算的“gls”拟合为单数,秩19

线性模型勉强通过了夏皮罗正态性检验,这是问题所在吗

Shapiro-Wilk normality test
data:  re
W = 0.98269, p-value = 0.05936
奇怪的是,我使用另一个解释变量运行了这个模型,并且没有错误,我在论坛上看到的所有内容都与一段时间内的多次抽样有关,而这不是我的情况。 因为唯一的区别是我上传的响应变量和表的外观图像,以防有帮助


您的
SP:T
交互中缺少一些单元格
lm()
可以容忍这些(如果您查看
coef(lm(股骨面积~SP*T,data=Datos))
您将看到缺少交互的一些
NA
值)<代码>gls()没有。处理这个问题的一种方法是创建一个交互变量,去掉缺失的水平,然后(有效地)以单向而不是双向方差分析的方式拟合模型。(我调用数据
dd
,而不是
datos


dd3您的
SP:T
交互中缺少一些单元格
lm()
可以容忍这些(如果您查看
coef(lm(股骨面积~SP*T,data=Datos))
您将看到缺少交互的一些
NA
值)<代码>gls()
没有。处理这个问题的一种方法是创建一个交互变量,去掉缺失的水平,然后(有效地)以单向而不是双向方差分析的方式拟合模型。(我调用数据
dd
,而不是
datos


dd3您的数据集有多大?你能把它寄到什么地方吗?你能给我们看一下
summary(Datos)
?大约164行,这里是到我的数据集@BenBolker>summary(Datos)的链接T SP N股骨面积长度:152长度:152分钟:384分钟:21408类别:角色类别:角色第一区:1442第一区:30939模式:角色模式:角色中位数:2168中位数:47727平均数:2111平均数:44967第三区:2863第三区:58184最大:3288最大:76906您的数据集有多大?你能把它寄到什么地方吗?你能给我们看一下
summary(Datos)
?大约164行,这里是到我的数据集@BenBolker>summary(Datos)的链接T SP N股骨面积长度:152长度:152分钟:384分钟:21408类别:角色类别:角色第一区:1442第一区:30939模式:角色模式:角色中位数:2168中位数:47727平均数:2111平均数:44967第三区:2863第三区:58184最大值:3288最大值:76906我用我的代码
Datos运行,这很好。
NA
值不在您的数据集中,它们在
lm()
的输出中(表示无法估计的物种/温度组合,因为它们缺少数据或与其他组合混淆)。由于您的代码行,我可以重新检查,并且在导入/导出或生成新数据时,一些SP变量出现时带有capslock中没有的字母。从数据帧中修复了该问题,现在似乎正在工作!谢谢!你的代码在我的代码
Datos中找到了这一点,没关系。
NA
值不在您的数据集中,它们在
lm()
的输出中(表示无法估计的物种/温度组合,因为它们缺少数据或与其他组合混淆)。由于您的代码行,我可以重新检查,并且在导入/导出或生成新数据时,一些SP变量出现时带有capslock中没有的字母。从数据帧中修复了该问题,现在似乎正在工作!谢谢!你的代码指出了这个差异
Shapiro-Wilk normality test
data:  re
W = 0.98269, p-value = 0.05936
dd3 <- transform(na.omit(dd), SPT=droplevels(interaction(SP,T)))
library(nlme)
gls(Femur.area~SPT,weights=varPower(form=~fitted(.)),data=dd3)