楼主: knell
655 8

[其他] 如果 线性混合效应模型 p值大于0.05 是否证明模型错误? [推广有奖]

  • 2关注
  • 0粉丝

博士生

44%

还不是VIP/贵宾

-

威望
0
论坛币
483 个
通用积分
50.7441
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
7171 点
帖子
224
精华
0
在线时间
230 小时
注册时间
2010-2-22
最后登录
2024-12-12

1论坛币
# 没找到合适的数据 自己造的假数据# 加载数据


# 自变量
# X1
X1 = np.random.normal(0, 1, 365)
# X2
X2 = np.random.normal(0, 1, 365)
# X3
X3 = np.random.normal(0, 1, 365)
# 序号
id = np.arange(0,365,1)
print(type(X3))
# 因变量特征y为 连续变量
y = 0.5 * X1 +  0.25 * X2 + 0.75* X3  + np.random.normal(0, 0.5, 365) # (e是从均值为0 标准差为0.5的正态分布中生成的随机噪声)
data = pd.DataFrame(data={'id': id,'x1': X1,'x2':X2,'x3':X3,'y':y})
print(data.head())
"""
      id       x1             x2            x3             y
0   0 -0.667001 -0.489524  3.587378  1.878713
1   1 -0.550990  1.088019  0.620712 -0.602663
2   2  0.606812 -1.330362 -0.354676  0.510342
3   3  0.427700 -1.479058  1.461817  0.934452
4   4  0.526069 -0.593826 -0.471412 -0.096949
"""

# 计算
formula = 'y ~x1 + x2+ x3'
model = sm.MixedLM.from_formula(formula, data, groups=data['id'])
result = model.fit(maxiter=1000,method='lbfgs')  # 例如,尝试使用LBFGS优化算法


# 结果
"""
   Mixed Linear Model Regression Results
=======================================================
Model:            MixedLM Dependent Variable: y        
No. Observations: 365     Method:             REML     
No. Groups:       365     Scale:              0.1269   
Min. group size:  1       Log-Likelihood:     -276.4887
Max. group size:  1       Converged:          Yes      
Mean group size:  1.0                                 
-------------------------------------------------------
              Coef. Std.Err.   z    P>|z| [0.025 0.975]
-------------------------------------------------------
Intercept     0.020    0.026  0.751 0.452 -0.032  0.072
x1            0.508    0.021 23.949 0.000  0.467  0.550
x2            0.237    0.026  9.112 0.000  0.186  0.288
x3            0.757    0.019 39.281 0.000  0.719  0.795
Group Var     0.127                                    
=======================================================
"""



#  &&& 俺是不完美的分隔线 &&&

# 问题

'''
截距  Intercept  P 值 大于0.05
如果是真实数据 模型是否还有解释效力 ? 如何避免 ? 谢谢

'''




最佳答案

Raymond.K 查看完整内容

从你的DGP来看,并不包含截距项“y = 0.5 * X1 + 0.25 * X2 + 0.75* X3 + np.random.normal(0, 0.5, 365)”因此回归结果截距项不显著反而是对的。另外看你使用模型的目的是什么,因果推断的话,一般不太关注截距项,只关注(控制其他条件不变时的)AME
关键词:混合效应模型 P值大 observations observation regression 数据 统计 分析 经济 计量经济
沙发
Raymond.K 学生认证  发表于 2024-4-22 13:31:31 |只看作者 |坛友微信交流群
从你的DGP来看,并不包含截距项“y = 0.5 * X1 +  0.25 * X2 + 0.75* X3  + np.random.normal(0, 0.5, 365)”因此回归结果截距项不显著反而是对的。另外看你使用模型的目的是什么,因果推断的话,一般不太关注截距项,只关注(控制其他条件不变时的)AME
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
knell + 1 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 1  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

藤椅
gg20192019 在职认证  发表于 2024-4-23 20:15:27 来自手机 |只看作者 |坛友微信交流群
knell 发表于 2024-4-22 13:31
# 没找到合适的数据 自己造的假数据# 加载数据
谢谢分享     

使用道具

板凳
knell 发表于 2024-4-25 22:16:50 |只看作者 |坛友微信交流群
Raymond.K 发表于 2024-4-24 20:01
从你的DGP来看,并不包含截距项“y = 0.5 * X1 +  0.25 * X2 + 0.75* X3  + np.random.normal(0, 0.5, 365 ...
添加一个新 数据进行预测
new_athlete = pd.DataFrame({
    'x1': [1.765604],
    'x2': [-0.988498],
    #'x3': [0.092736],
    # 'x3': [0],  
    'id': [id + 1]  # 随便给一个新的AthleteID
})


predicted_performance = result.predict(new_athlete)
print("值:", predicted_performance.values[0])

报错
Error evaluating factor: ValueError: setting an array element with a sequence.
    y ~x1 + x2 + x3 + (1|id)
错在哪里? 没明白什么问题

使用道具

报纸
knell 发表于 2024-4-25 22:18:52 |只看作者 |坛友微信交流群
Raymond.K 发表于 2024-4-24 20:01
从你的DGP来看,并不包含截距项“y = 0.5 * X1 +  0.25 * X2 + 0.75* X3  + np.random.normal(0, 0.5, 365 ...
就是推断  除了推断还能做什么类型的分析? 这个我没想过 ?

使用道具

地板
Raymond.K 学生认证  发表于 2024-4-26 10:32:30 |只看作者 |坛友微信交流群
knell 发表于 2024-4-25 22:18
就是推断  除了推断还能做什么类型的分析? 这个我没想过 ?
还有预测啊,有截距项和无截距项模型预测结果可能相差很大

使用道具

7
knell 发表于 2024-4-27 11:49:14 |只看作者 |坛友微信交流群
Raymond.K 发表于 2024-4-26 10:32
还有预测啊,有截距项和无截距项模型预测结果可能相差很大
就是这个?
添加一个新 数据进行预测
new_athlete = pd.DataFrame({
    'x1': [1.765604],
    'x2': [-0.988498],
    #'x3': [0.092736],
    # 'x3': [0],  
    'id': [id + 1]  # 随便给一个新的AthleteID
})


predicted_performance = result.predict(new_athlete)
print("值:", predicted_performance.values[0])

报错
Error evaluating factor: ValueError: setting an array element with a sequence.
    y ~x1 + x2 + x3 + (1|id)
序列的数组元素??

使用道具

8
赵安豆 发表于 2024-5-2 11:36:07 |只看作者 |坛友微信交流群
在统计学中,线性混合效应模型(LMM)的p值大于0.05并不意味着模型是错误的。p值是用来衡量数据与假设之间的不一致程度的一个指标。具体来说,在这个上下文中,p值是用来测试模型中的固定效应的参数是否显著不为零。如果某个参数的p值大于0.05,这通常被解释为没有足够的证据拒绝这个参数等于零的零假设,即这个参数对模型的解释不显著。

然而,有几个原因说明为什么一个或多个参数的p值大于0.05并不意味着整个模型是错误的:

1. **数据的变异性**:实际数据往往伴随着较高的变异性,这可能导致统计测试的功效不足,尤其是在样本量较小的情况下,从而难以检测到效应的显著性。

2. **模型设置**:模型可能包含多个解释变量,即使其中一些变量的效应不显著(p值>0.05),其他变量的效应可能仍然是显著的。模型的整体解释力可能仍然很高。

3. **效应大小**:p值不提供关于效应大小的信息。即使效应不显著(p值>0.05),这个效应在实际应用中仍可能是重要的。

4. **模型适用性**:一个模型是否“正确”或适合数据不应仅基于p值来判断。模型的适应度、残差分析、预测准确性等其他指标也非常重要。

因此,当线性混合效应模型的p值大于0.05时,这意味着模型中的某些固定效应可能不是统计显著的,但这并不直接证明模型是错误的。应当综合考虑模型的整体拟合度、效应大小、实际意义以及其他统计指标来评估模型的有效性和适用性。在实际应用中,混合效应模型的应用通常是复杂的,需要根据具体情况进行详细的分析和解释。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



使用道具

想问问P>0.05还是否能说明结果有统计学意义呢?beta和95%置信区间显示有统计学意义但是P却是大于0.05的

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加JingGuanBbs
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-12-24 11:42