python - 将 ANOVA p 值函数从 R 迁移到 Python
问题描述
再会!
有没有一种有效的方法可以在 Python 中找到 4-Way ANVOA 模型的 p 值。
像这样的东西可以在 R 中的 for 循环中进行一系列模拟
pValues[k] <- anova(lm(Yield ~ Water + Row + Column, data=y))$"Pr(>F)"[1]
我已经尝试过researchpy
并且已经开始了,statsmodels
但我不知道如何从这里开始......
pValues[k] = statsmodels.stats.anova_lm(data=y)."Pr(>F)"[1]
解决方案
在 R 中:
set.seed(111)
y = data.frame(matrix(rnorm(400),100,4))
colnames(y) = c("Yield","Water","Row","Column")
anova(lm(Yield ~ Water + Row + Column, data=y))
Analysis of Variance Table
Response: Yield
Df Sum Sq Mean Sq F value Pr(>F)
Water 1 0.364 0.36410 0.3122 0.5776
Row 1 0.518 0.51768 0.4440 0.5068
Column 1 0.703 0.70256 0.6025 0.4395
Residuals 96 111.942 1.16606
write.csv(y,"y_data.csv",quote=FALSE,row.names=FALSE)
在python中,您可以使用anova_lm
statsmodels中的stats函数来获取表:
import statsmodels.api as sm
from statsmodels.formula.api import ols
import pandas as pd
y = pd.read_csv("y_data.csv")
mod = ols('Yield ~ Water + Row + Column',data=y).fit()
tab = sm.stats.anova_lm(mod)
df sum_sq mean_sq F PR(>F)
Water 1.0 0.364100 0.364100 0.312247 0.577606
Row 1.0 0.517678 0.517678 0.443954 0.506818
Column 1.0 0.702561 0.702561 0.602508 0.439531
Residual 96.0 111.941964 1.166062 NaN NaN
并像这样提取 p 值:
tab["PR(>F)"][0]
Out[8]: 0.5776056586929655
推荐阅读
- sql - SQL:在组中添加多个唯一值
- html - 为什么背景图像会偏移?
- reactjs - 执行 UI 块时引发 React Native 异常:*** -[__NSArray0 objectAtIndex:]
- javascript - 如何修改 Array.map 的最后一次迭代?
- python - 树莓派:ModuleNotFoundError:没有名为“google_auth_oauthlib”的模块
- pandas - 在多索引熊猫数据框中过滤
- python - 模型相关列表中的 Django admin 用户字段值
- android - 将 android studio 升级到 4.2.0 后的 xml 问题
- python - 创建新字段后,无法使用 RunPython 在迁移中获取模型记录
- r - 如何在 R 中获得混淆矩阵?