• 因素分析模型解决方法Finally, all data were cleansed and ready to analyze. Andy started overenthusiastically to visualize the data to get a first impression of the data. He had many dimensions and ...

多因素分析模型解决方法

Finally, all data were cleansed and ready to analyze. Andy started overenthusiastically to visualize the data to get a first impression of the data. He had many dimensions and variables such that he spent several days visually analyzing them and determining the best methods to apply. At the end of that week, the team manager told him that he would need a draft presentation about the outcomes next Tuesday because the team manager had to present it in one week to a steering committee.
最后，所有数据都已清洗并准备分析。 Andy热情洋溢地开始可视化数据以获得对数据的第一印象。 他具有许多维度和变量，因此他花了几天的时间对它们进行可视化分析并确定最佳的应用方法。 在该周结束时，团队经理告诉他，下周二他将需要一份关于结果的演示文稿草稿，因为团队经理必须在一周内将其提交给指导委员会。
Andy told him that he has no results yet. But there was no space for negotiations. On Tuesday, conclusions had to be delivered and integrated into a PowerPoint presentation.
安迪告诉他，他还没有结果。 但是没有谈判的空间。 在星期二，必须提交结论并将其集成到PowerPoint演示文稿中。
Hastily, Andy produced some regression analyses and integrated them into the presentation.
仓促地，安迪进行了一些回归分析并将其整合到演示中。
After the steering committee meeting, the team manager told him that the project would not be carried on.
在指导委员会会议之后，团队经理告诉他该项目将不会继续进行。
Andy was very frustrated. That was his second project, and the second time it ended with the same decision. He has chosen this position because of the potential for doing great data science work on a large amount of data available.
安迪非常沮丧。 那是他的第二个项目，第二次以相同的决定结束。 他之所以选择此职位，是因为他有潜力对大量可用数据进行出色的数据科学工作。

This story is a real case, and it is not an atypical situation in corporations. I assume that some of you have already experienced a similar situation, too.
这个故事是真实的案例，在公司中不是典型情况。 我想你们当中有些人也已经经历过类似的情况。
The reason that this happens is not your skills.
发生这种情况的原因不是您的技能。
When thrown into a data science project in a corporate environment, the situation is different from the previous learning context.
在公司环境中投入数据科学项目时，情况与以前的学习环境不同。
My experience is that most data scientists struggle to manage the project, given the many corporate constraints and expectations.
我的经验是，鉴于许多公司的限制和期望，大多数数据科学家都在努力管理项目。
More than a few data scientists are disappointed and frustrated after the first projects and looking for another position.
在进行第一个项目并寻找另一个职位后，许多数据科学家感到失望和沮丧。
Why?
为什么？
They are trained in handling data, technical methods, and programming. Nobody ever taught them in project, stakeholder, or corporate data management or educated them about corporate business KPIs.
他们接受过处理数据，技术方法和编程方面的培训。 没有人曾在项目，利益相关者或公司数据管理方面教过他们，也没有教过他们有关公司业务KPI的知识。
It is the lack of experience with unspoken corporate practices.
这是缺乏对潜行企业实践的经验。
Unfortunately, there are more potential pitfalls in that area than with all your technical skills.
不幸的是，与您所有的技术技能相比，该领域存在更多的潜在陷阱。
If you know the determining factors, you can plan your data science tasks accordingly, pursue satisfying projects, and steer your work.
如果您知道决定因素，则可以相应地计划数据科学任务，追求令人满意的项目并指导工作。
In the following, I give you the eight most important drivers for the model approach selection in the corporate environment and how to mitigate them.
在下文中，我为您提供了在企业环境中选择模型方法以及如何减轻它们的八个最重要的驱动因素。

1.时间，时间表和截止日期 (1. Time, timelines, and deadlines)
What you need to know
你需要知道的
Corporations have defined project processes. Stage-gate or steering committee meetings are part of that where outcomes must be presented. Presentations have to be submitted a few days in advance and must contain certain expected information. Also, corporates are always under pressure to deliver financial results. That leads to consistently tight deadlines. These processes are part of the corporate culture, unspoken, and supposed that the employee knows them.
公司已经定义了项目流程。 阶段性会议或指导委员会会议是必须提出成果的会议的一部分。 演示文稿必须提前几天提交，并且必须包含某些预期的信息。 而且，企业总是承受着交付财务成果的压力。 这导致持续的时间紧迫。 这些流程是企业文化的一部分，是不言而喻的，并且假定员工知道它们。
如何解决？
问，问，问。 询问里程碑，例如制定项目决策的会议日期。
Set up a time budget. Start at the milestone’s date and calculate backward a project schedule.
设置时间预算。 从里程碑的日期开始，然后向后计算项目进度表。
Include not only your tasks but also the surrounding actions, like coordination meetings, presentations, and deadlines for submitting the presentations. Do not forget that there is a review round for each presentation, and you have to consider adding a few days in advance of submission. Include time margins for unexpected tasks and troubleshooting.
不仅包括您的任务，还包括周围的动作，例如协调会议，演示文稿以及提交演示文稿的截止日期。 别忘了每个演示文稿都有一个审核回合，您必须考虑在提交前几天添加。 包括用于意外任务和故障排除的时间余量。
Only then, choose the approaches for the ability to perform it within the determined schedule. Choose methods that can be run quickly and where you are familiar. After having a few successful results, and hopefully, still time, start experimenting with more complex and new methods.
只有这样，才能在确定的时间表内选择执行该功能的方法。 选择可以在您熟悉的地方快速运行的方法。 在取得了一些成功的结果之后，希望还有时间，可以开始尝试使用更复杂和新的方法。
Example
例
Human Resources (HR) urgently needed the patterns of HR management’s key success factors towards the business departments and people. Setting up the schedule based on the deadline, we decided only to perform simple linear regression without considering any interdependencies of such key success factors, e.g., the level of education and the attended training pieces. We focused on fitting accurately simpler models and having single contribution factors with high reliability identified.
人力资源部(HR)迫切需要人力资源管理模式对业务部门和人员的关键成功因素。 根据截止日期制定时间表，我们决定只进行简单的线性回归，而没有考虑这些关键成功因素之间的相互依赖性，例如教育水平和参加的培训项目。 我们专注于精确拟合更简单的模型，并确定具有高可靠性的单一贡献因子。
2.模型和结果所需的准确性 (2. Accuracy needed of the models and the results)
What you need to know
你需要知道的
The available and ready to use data determine the accuracy of a model. So, the level of detail of a model and the granularity of the data must match. The same is true for the expectations of the granularity of the outcome. The method must match expectations. Any mismatch will give unreliable results.
可用和准备使用的数据确定模型的准确性。 因此，模型的详细程度和数据的粒度必须匹配。 对于结果粒度的期望也是如此。 该方法必须符合期望。 任何不匹配都会导致不可靠的结果。
如何解决？
Select the model according to the granularity of the available data. Do not waste your time to fit a very detailed and accurate model when there is no proper data. Aggregating data and using a less granular model gives more reliable results when not having good quality data.
根据可用数据的粒度选择模型。 如果没有适当的数据，请不要浪费时间来拟合非常详细和准确的模型。 当没有高质量的数据时，聚合数据并使用粒度较小的模型可以提供更可靠的结果。
When the level of accuracy needed for decision making does not match the level that can be achieved by the data, you have to escalate it as early as possible. Do not try to make something up. Only transparent communication helps, prevent surprises, and manages expectations. Otherwise, you will be blamed.
当决策所需的准确度与数据所能达到的准确度不匹配时，您必须尽早升级。 不要试图弥补。 只有透明的沟通才能帮助，防止意外并管理期望。 否则，您将受到责备。
Example
例
When we analyzed the influencing patterns for nursing homes’ profitability, the granular data had been too inhomogeneous, and the results made no economic sense. So, we aggregated the data and applied simpler models. Based on the results, the authority could already make essential decisions and put guidelines in place for future data management and collection.
当我们分析养老院盈利能力的影响模式时，粒度数据太不均匀，结果没有经济意义。 因此，我们汇总了数据并应用了更简单的模型。 根据结果​​，主管部门可能已经做出了重要决定，并为将来的数据管理和收集制定了指导方针。
3.方法的相关性 (3. The relevance of the methods)
What you need to know
你需要知道的
The right problem must be solved with a suitable method. The question to be answered must be clear. It should not permit any ambiguity. Also, the form of the outcomes must be comparable with other internal and external analyses. Both point the direction of the relevant methodology that should be used.
正确的问题必须用适当的方法解决。 必须回答的问题必须清楚。 它不应该有任何歧义。 而且，结果的形式必须与其他内部和外部分析具有可比性。 两者都指出了应使用的相关方法的方向。
如何解决？
Make sure that you understand the question that has to be answered. Please do not assume it! Ask! It does not help when you have a solution with the most accurate method but to the wrong question.
确保您了解必须回答的问题。 请不要假设！ 问！ 如果您有使用最准确方法的解决方案，但是对于错误的问题，则无济于事。
Based on that, you can determine if it falls into the descriptive, predictive, or prescriptive field. If the most influential factors are looked for, choose descriptive methods. When the question is to forecast, choose a predictive approach, and only when optimized decision-making under the various effects is the aim, choose prescriptive models. Do not try to be creative. My experience is that it goes in most cases wrong.
基于此，您可以确定它是否属于描述性，预测性或规范性字段。 如果寻找最有影响力的因素，请选择描述性方法。 当要预测问题时，请选择一种预测方法，只有当在各种影响下优化决策为目标时，才选择规定性模型。 不要尝试发挥创造力。 我的经验是，在大多数情况下，这是错误的。
Example
例
Three years ago, my former team opposed heavily against me and had pushed to implement a new trendy time series method for asset return forecasts. Finally, they just executed it — oh yeah, I was angry, but we could not move back because of the deadline. For three years, they struggled to get adequate results without making a lot of adjustment efforts. Recently, one of my former team members told me that they finally moved back to the old model because the new model had included several features not relevant for the outcome but added to much noise.
三年前，我的前团队强烈反对我，并推动实施一种新的趋势时间序列方法来进行资产收益预测。 最后，他们只是执行了它-哦，是的，我很生气，但是由于截止日期，我们不能退缩。 三年来，他们一直在不进行大量调整的情况下努力获得足够的结果。 最近，我的一位前团队成员告诉我，他们终于回到了旧模型，因为新模型具有与结果无关的几个功能，但增加了很多噪音。
4.数据准确性 (4. Accuracy of data)
What you need to know
你需要知道的
The accuracy of the data restricts the pool of possible methods. Very accurate methods do not bring any value when used with less accurate data. The error term will be high. Again, the accuracy of the data and the accuracy of methods must match. Bad quality affects the results — garbage in, garbage out.
数据的准确性限制了可能方法的集合。 当使用不太准确的数据时，非常准确的方法不会带来任何价值。 错误项将很高。 同样，数据的准确性和方法的准确性必须匹配。 不良的质量会影响结果-垃圾进场，垃圾出场。
如何解决？
Understand the data as well as the requirements of the models. Do not just apply methods for try and error reasons. Do not just replicate methods because it has given excellent results in other, similar cases. You need to tailor them to the requirements of the data accuracy.
了解数据以及模型的要求。 不要仅出于尝试和错误原因而应用方法。 不要仅仅复制方法，因为它在其他类似情况下也能提供出色的结果。 您需要根据数据准确性的要求定制它们。
Example
例
In optimizing the operating room capacities of two hospitals, we had to apply two different approaches. In one hospital, granular data for every time point of action, e.g., beginning of anesthesia, entering the operating room, beginning of the surgery, and so on, were available. The data was of good quality because of real-time electronic recording.
为了优化两家医院的手术室容量，我们不得不采用两种不同的方法。 在一家医院中，可以获得每个动作时间点的详细数据，例如麻醉开始，进入手术室，手术开始等。 由于实时电子记录，因此数据质量很高。
In the other hospital, the data was recorded manually and sometimes with hours of delays, and thus, the data was very imprecise. E.g., the data has shown eight surgeries in six operating rooms in parallel.
在另一家医院中，数据是手动记录的，有时会有数小时的延迟，因此，数据非常不准确。 例如，数据显示在六个手术室中并行进行了八次手术。
In the first case, we could fit the granular time series and agent-based models and consider the data’s seasonality. In contrast, in the second case, we had to rebuild the models and work with regression analysis and smoothing out inconsistencies before using them as an input for a less granular agent-based model.
在第一种情况下，我们可以拟合粒度时间序列和基于代理的模型，并考虑数据的季节性。 相反，在第二种情况下，我们不得不重建模型并进行回归分析并消除不一致性，然后才将它们用作基于粒度较小的基于代理的模型的输入。
5.数据可用性和使数据可立即使用的成本 (5. Data availability and cost to make data ready to use)
What you need to know
你需要知道的
How often I have heard ‘we would have the perfect model when we could have this and this data, but unfortunately, we cannot access them in due time.’ A fact is that today, corporates are only able to use between 12% and about 30% of their data. In the discussions I have, companies state mostly, that they are using around 20% of their data. The cost to access them is, in most cases, too high, and no equivalent business case is available. If no business case covers the cost of making the data available, you will not get the data in due time.
我经常听到“我们拥有完善的模型，而我们可以拥有这些数据，但是不幸的是，我们无法在适当的时候访问它们”。 一个事实是，如今，企业只能使用其12％到30％的数据。 在我进行的讨论中，公司大多声明他们正在使用大约20％的数据。 在大多数情况下，访问它们的成本太高，并且没有等效的业务案例可用。 如果没有任何商业案例可以负担使数据可用的成本，则您将无法在适当的时候获得数据。
如何解决？
Before having all your thoughts around the fancy models, you could apply, clarify, what data is available in due time, and the cost of getting them. Just because ‘the data is available’ in a company, it does not mean that it is available in a reasonable time frame and at a reasonable cost.
在对奇特的模型有所有想法之前，您可以应用，澄清，在适当的时候可用的数据以及获取它们的成本。 仅仅因为“数据可以在公司中使用”，并不意味着可以在合理的时间范围内以合理的成本获得数据。
Prioritize the data based on the other seven drivers given in this article, and make in each case a cost-benefit analysis: what is the additional benefit from the business perspective when having the data compared to what is the cost of getting them. Never ask, ‘can you give me all data?’. It shows that you have no understanding of the corporate’s business processes, and you will be de-prioritized when you need support, e.g., from IT.
根据本文中给出的其他七个驱动因素对数据进行优先级排序，并分别进行成本效益分析：从业务角度来看，获取数据的额外好处是什么？与获取数据的成本相比，这是什么？ 永远不要问，“您能给我所有数据吗？”。 它表明您不了解公司的业务流程，并且在需要支持时(例如，从IT部门获得支持)，您将失去优先权。
Example
例
We had been unexpectedly faced with storage format issues in the pattern recognition work on a global bank’s intra-day liquidity data. The data of one of the required data sets of transactions from the prior year were archived on magnetic tapes. Thus, it would have taken several months until the data had been available due to release cycles and transformation into accessible formats. We had to assess alternative data and adjust the models.
在一家全球银行的日内流动性数据的模式识别工作中，我们曾出乎意料地面临存储格式问题。 上一年所需的交易数据集之一的数据已存储在磁带上。 因此，由于发布周期和转换为可访问的格式，可能要花几个月的时间才能获得数据。 我们必须评估替代数据并调整模型。
6.数据隐私和机密性 (6. Data privacy and confidentiality)
What you need to know
你需要知道的
Customer data are often confidential. Data privacy is regulated by laws, e.g., the GDPR in the EU or the CCPA in the State of California. Financial institutions have their own regulations to protect so-called CID data — client identifying data. Access to such data have only authorized people, and data scientists are rarely amongst them. The data can only be used in anonymized, encrypted, or aggregated forms and after approval from the data owners, security officer, and legal counsel.
客户数据通常是机密的。 数据隐私受法律规范，例如欧盟的GDPR或加利福尼亚州的CCPA。 金融机构有自己的法规来保护所谓的CID数据-客户识别数据。 只有经过授权的人员才能访问此类数据，而数据科学家很少在其中。 数据只能以匿名，加密或聚合的形式使用，并且必须经过数据所有者，安全员和法律顾问的批准。
如何解决？
Before you start with the project, clarify if any personal data that fall under these restrictions are involved in your data science project. If yes, address it as early as possible, on one side with the IT, because they have eventually already encryption tools to deal with that, on the other side with the legal counsel. Only after having all approvals, and appropriate encryption, work with the data. I have seen many projects that could not be performed not because of the data privacy acts but because it was addressed to late and there was not enough time to get the approvals and encrypt the data in due time.
在开始该项目之前，请弄清楚数据科学项目中是否涉及任何受这些限制的个人数据。 如果是，请尽早在IT部门解决此问题，因为他们最终已经拥有加密工具来处理该问题，而在另一方面与法律顾问联系。 仅在获得所有批准和适当的加密之后，才能使用数据。 我已经看到许多无法执行的项目不是因为数据隐私行为，而是因为它已经解决了，而且没有足够的时间来获得批准并在适当的时候对数据进行加密。
Example
例
In a project where credit card transaction data had to be used for third party service analytics, the lawyers needed seven months to clarify and approve the data use. The clarification contained not only the legal aspects but also the way of encryption, the aggregation level that should be used, and technical requirements like access rights and containerization of software.
在一个必须将信用卡交易数据用于第三方服务分析的项目中，律师需要七个月的时间来澄清和批准数据使用。 澄清不仅包含法律方面，还包含加密方式，应使用的聚合级别以及诸如访问权限和软件容器化之类的技术要求。
7.资源，基础架构和工具可用性 (7. Resources, infrastructure, and tools availability)
What you need to know
你需要知道的
Projects in a corporate environment have many different departments involved: IT, the business, an innovation team, or an internal consulting group. All are involved in several projects in parallel, and their time is limited.
公司环境中的项目涉及许多不同部门：IT，业务，创新团队或内部咨询小组。 所有这些都同时参与多个项目，并且时间有限。
You need storage and computational power. Corporate rules about software installation are in place, and corresponding approvals are required. If a tool costs and needs a license, a corporate approval process exists. As a data scientist, you do not only need Python and Jupyter Notebook but most probably other tools like Tableau or Alteryx. Some companies require containers like Docker. And some tools are not permitted per corporate policy.
您需要存储和计算能力。 有关软件安装的公司规则已到位，并且需要相应的批准。 如果工具成本高昂且需要许可证，则存在公司批准流程。 作为数据科学家，您不仅需要Python和Jupyter Notebook，而且还可能需要其他工具，例如Tableau或Alteryx。 一些公司需要像Docker这样的容器。 并且某些公司政策不允许使用某些工具。
如何解决？
Clarify the tools and infrastructure before you start with the actual project. Estimate the storage and computational power needed, and ensure that it will be available. Clarify the corporate’s policy about data science software, and what tools are available. Inform the people from the other departments early about the upcoming support needed to plan some dedicated time. When working in an already existing data science team, you can clarify this first with your line manager. But even in an established data science team, do not assume that everything you will need for a project is in place.
在开始实际项目之前，请先弄清工具和基础结构。 估计所需的存储和计算能力，并确保将可用。 阐明公司有关数据科学软件的政策以及可用的工具。 尽早通知其他部门的人们有关计划一些专用时间所需的即将到来的支持。 在已经存在的数据科学团队中工作时，您可以先与您的直属经理进行澄清。 但是，即使在已建立的数据科学团队中，也不要假设项目所需的一切都已经就绪。
Example
例
While working on a large amount of transactional data in a bank, we needed more computational and storage power. We worked in a private cloud environment, and typically, it takes only a few minutes to a few hours until the capacity is added. However, because we worked with client identifying data, in a so-called red zone environment, a virtual zone with very restrictive security, the infrastructure needs to be ‘red zone’ certified by the security officer. And this has then taken two weeks.
在银行中处理大量交易数据时，我们需要更多的计算和存储能力。 我们在私有云环境中工作，通常只有几分钟到几小时才能添加容量。 但是，由于我们与客户识别数据一起使用，因此在所谓的红色区域环境中，即具有非常严格的安全性的虚拟区域，因此基础架构需要经过安全人员的“红色区域”认证。 然后这花了两个星期。
8.公司的产品和项目管理关键绩效指标 (8. Product and project management KPIs of the company)
What you need to know
你需要知道的
Corporates measure the product and project management with KPIs. There are quantitative measures like a net present value for short-term projects or a break-even point for products. And there are qualitative benefits like a shortened time to market, the learning of a project that can be leveraged to other projects, etc. Decisions and approvals of projects are based on such metrics.
企业使用KPI衡量产品和项目管理。 有一些量化指标，例如短期项目的净现值或产品的收支平衡点。 并且具有质量上的好处，例如缩短上市时间，学习可以被其他项目利用的项目等。项目的决策和批准均基于此类指标。
如何解决？
It does no matter how great the results of your data science work are; it should always be translated into the company’s KPIs. So, clarify with your line manager what are the steering measures of the company. Translate your outcomes into these metrics and communicate what the benefits for the company are. My experience is that the decision-makers stop fewer projects, more are implemented into the company’s processes, and finally, it builds a lot of trust in the data science team’s work.
无论您的数据科学工作成果多么出色，它都没有关系。 应始终将其转换为公司的KPI。 因此，请与您的直线经理一起说明公司的指导措施是什么。 将您的结果转化为这些指标，并传达给公司带来什么好处。 我的经验是，决策者停止了较少的项目，在公司的流程中实施了更多的项目，最后，它对数据科学团队的工作赢得了很大的信任。
Example
例
One department of a life sciences company tried for months to get internal funding for their intended data science projects, even thought, data, and data science are pillars in the company’s strategy. They finally ask me to support them. We found out that the finance department has investment templates for projects, including the company’s metrics. So, we asked them for that template and assembled all the data science blueprints into such temples. After the next presentation round, they got 60% of all their projects approved. The trigger was that the executive committee could now compare it with the company’s KPIs and other projects’ performance.
一家生命科学公司的一个部门几个月来一直在努力为其预期的数据科学项目获得内部资金，甚至思想，数据和数据科学也是公司战略的Struts。 他们终于要我支持他们。 我们发现财务部门具有用于项目的投资模板，包括公司的指标。 因此，我们要求他们提供该模板，并将所有数据科学蓝图组装到这样的模板中。 在下一轮演示之后，他们获得了所有项目的60％的批准。 触发因素是执行委员会现在可以将其与公司的KPI和其他项目的绩效进行比较。

连接点 (Connecting the Dots)
Many data scientists are not aware that working in a corporate environment involves up to 80% of other tasks than setting up models and analyze data. And you are eventually, a bit frustrated when you read all my comments.
许多数据科学家并不了解在企业环境中进行工作除了建立模型和分析数据外还涉及多达80％的其他任务。 当您阅读我的所有评论时，最终您会感到沮丧。
But knowing the above factors and addressing them early enough, and pro-actively puts you back into the driver seat and avoids bad surprises. The goal is to gain as much freedom as possible for our tasks. It increases project success, and you can keep free time for doing experiments with more complex and new approaches.
但是了解上述因素并及早解决它们，并主动将您带回驾驶员座位，并避免出现意外情况。 目标是为我们的任务获得尽可能多的自由。 它可以提高项目的成功率，并且您可以保留空闲时间来使用更复杂和新的方法进行实验。
Data scientists are not trained in managing such factors and often do not expecting them. Managing them properly is more important than all your detailed technical knowledge.
数据科学家没有接受过管理此类因素的培训，并且往往不期望它们。 正确管理它们比您所有详细的技术知识更重要。
All my tips and tricks to address these determining factors are neither rocket science nor a secret. But it is vital to raise your awareness of them. I hopefully can enable you to have more control and more fun with your projects.
我针对这些决定性因素的所有技巧都不是火箭科学也不是秘密。 但是，提高对它们的认识至关重要。 我希望可以使您对项目有更多的控制权和更多的乐趣。

翻译自: https://towardsdatascience.com/8-determining-factors-for-the-selection-of-the-model-approach-7d06d893d0ca

多因素分析模型解决方法

展开全文
• 针对目前风险分析中风险因素难以量化以及风险分析中存在的计算复杂性问题,该文提出一种对风险因素进行进一步量化分析的方法。首先提出“风险泡”概念并用于风险因素分析。文章进一步对“风险泡”构成风险因素的...
• 为解决由于样本的不完备性导致的因素分析法无法识别的问题,分别定义了因素的基础矩阵、相关性分析表、完整度、属性间的相似度等概念,提出了基于因素分析法的推理模型.实例验证结果表明:模型不但可以解决不识别问题,...
• 财政收入影响因素分析及预测模型
财政收入影响因素分析及预测模型
背景
在我国现行的分税制财政管理体制下，地方财政收入不仅是国家财政收入的重要组成部分，还具有其相对独立的构成内容。如何有效地利用地方财政收入，合理地分配来促进地方的发展，提高市民的收入和生活质量是每个地方政府需要考虑的首要问题。因此，对地方财政收入进行预测，不但是必要的，而且是可能的。科学、合理地预测地方财政收入，对于克服年度地方预算收支规模的随意性和盲目性，正确处理地方财政与经济的相互关系具有十分重要的意义。某市作为改革开放的前沿城市，其经济发展在全国经济中的地位举足轻重。目前，该市在财政收入规模、结构等方面与北京、深圳和上海等城市仍有一定差距，存在不断完善的空间。
目标
本案例旨在通过研究，发现影响该市目前以及未来地方财源建设的因素，并对其进行深入分析，提出对该市地方财源优化的具体建议，供政府决策参考，同时为其他经济发展较快的城市提供借鉴。
考虑到数据的可得性，本案例所用的财政收入分为地方一般预算收入和政府性基金收入。
地方一般预算收入包括：1.税收收入，主要包括企业所得税和地方所得税中中央和地方共享的40%，地方享有的25%的增值税、营业税和印花税等；2.非税收入，包括专项收入、行政事业费收入、罚没收入、国有资本经营收入和其他收入等。政府性基金收入是国家通过向社会征收以及出让土地、发行彩票等方式取得的收入，并专项用于支持特定基础设施建设和社会事业发展的收入。由于1994年财政体制重大改革，所以1994年前后不具有可比性，仅对1994年后的进行分析，本案例数据来自《某市统计年鉴》（1995-2014）
挖掘目标
梳理影响地方财政收入的关键特征，分析、识别影响地方财政收入的关键特征的选择模型。结合目标1的因素分析，对某市2015年的财政总收入及各个类别收入进行预测。
分析
在以往的文献中，对影响财政收入的因素的分析大多采用普通最小二乘法来对回归模型的系数进行估计，预测变量的选取采用的则是逐步回归。然而，不论是最小二乘法还是逐步回归，都有其不足之处。它们一般都局限于局部最优解而不是全局最优解。如果预测变量过多，子集选择的计算过程具有不可实行性，且子集选择具有内在的不连续性，从而导致子集选择极度多变。
下面是基于数据挖掘技术的财政收入分析预测模型流程
处理过程
数据获取
已提供。 数据探索
描述分析相关分析 数据预处理
处理好的数据给出了。 数据挖掘建模
某市财政收入预测模型
真实值与预测值对比  增值税预测模型
真实值与预测值对比  营业税预测模型
真实值与预测值对比  企业所得税预测模型
真实值与预测值对比  个人所得税预测模型
真实值与预测值对比  政府性基金收入预测模型
真实值与预测值对比
代码
import pandas as pd
import numpy as np
from GM11 import GM11

'''
:return:
'''
inputfile = 'data/data1.csv'
from sklearn.linear_model import LassoLars
model = LassoLars()
model.fit(data.iloc[:, 0:13], data['y'])
print(model.coef_)

def huise():
'''
地方财政收入灰色预测
:return:
'''
inputfile = 'data/data1.csv'
outputfile = 'data/data1_GM11.xls'
data.index = range(1994, 2014)

data.loc[2014] = None
data.loc[2015] = None
l = ['x1', 'x2', 'x3', 'x4', 'x5', 'x7']
for i in l:
f = GM11(data[i][np.arange(1994, 2014)].values)[0]
# 2014年预测结果
data[i][2014] = f(len(data) - 1)
# 2015年预测结果
data[i][2015] = f(len(data))
data[i] = data[i].round(2)

data[l + ['y']].to_excel(outputfile)
print(data)

def yuce():
'''
地方财政收入神经网络预测模型
:return:
'''
inputfile = 'data/data1_GM11.xls'  # 灰色预测后保存的路径
outputfile = 'data/revenue.xls'  # 神经网络预测后保存的结果
modelfile = 'data/1-net.model'  # 模型保存路径
feature = ['x1', 'x2', 'x3', 'x4', 'x5', 'x7']  # 特征所在列

data_train = data.loc[range(1994, 2014)].copy()  # 取2014年前的数据建模
data_mean = data_train.mean()
data_std = data_train.std()
data_train = (data_train - data_mean) / data_std  # 数据标准化
x_train = data_train[feature].values  # 特征数据
y_train = data_train['y'].values  # 标签数据

from keras.models import Sequential
from keras.layers.core import Dense, Activation

model = Sequential()  # 建立模型
model.fit(x_train, y_train, nb_epoch=10000, batch_size=16)  # 训练模型，学习一万次
model.save_weights(modelfile)  # 保存模型参数

# 预测，并还原结果。
x = ((data[feature] - data_mean[feature]) / data_std[feature]).values
data[u'y_pred'] = model.predict(x) * data_std['y'] + data_mean['y']
data.to_excel(outputfile)

import matplotlib.pyplot as plt  # 画出预测结果图
p = data[['y', 'y_pred']].plot(subplots=True, style=['b-o', 'r-*'])
plt.show()

'''
:return:
'''

inputfile = 'data/data2.csv'  # 输入的数据文件
model.fit(data.iloc[:, 0:6], data['y'])
model.coef_  # 各个特征的系数

def huise2():
'''
增值税灰色预测
:return:
'''
inputfile = 'data/data2.csv'  # 输入的数据文件
outputfile = 'data/data2_GM11.xls'  # 灰色预测后保存的路径
data.index = range(1999, 2014)

data.loc[2014] = None
data.loc[2015] = None
l = ['x1', 'x3', 'x5']
for i in l:
f = GM11(data[i][np.arange(1999, 2014)].values)[0]
data[i][2014] = f(len(data) - 1)  # 2014年预测结果
data[i][2015] = f(len(data))  # 2015年预测结果
data[i] = data[i].round(6)  # 保留六位小数
data[l + ['y']].to_excel(outputfile)  # 结果输出
print(data)

def yuce2():
'''
增值税神经网络预测模型
:return:
'''
inputfile = 'data/data2_GM11.xls'  # 灰色预测后保存的路径
outputfile = 'data/VAT.xls'  # 神经网络预测后保存的结果
modelfile = 'data/2-net.model'  # 模型保存路径
feature = ['x1', 'x3', 'x5']  # 特征所在列

data_train = data.loc[np.arange(1999, 2014)].copy()  # 取2014年前的数据建模
data_mean = data_train.mean()
data_std = data_train.std()
data_train = (data_train - data_mean) / data_std  # 数据标准化
x_train = data_train[feature].values  # 特征数据
y_train = data_train['y'].values  # 标签数据

from keras.models import Sequential
from keras.layers.core import Dense, Activation

model = Sequential()  # 建立模型
model.fit(x_train, y_train, nb_epoch=10000, batch_size=16)  # 训练模型，学习一万次
model.save_weights(modelfile)  # 保存模型参数

# 预测，并还原结果。
x = ((data[feature] - data_mean[feature]) / data_std[feature]).values
data[u'y_pred'] = model.predict(x) * data_std['y'] + data_mean['y']
data[u'y_pred'] = data[u'y_pred'].round(2)
data.to_excel(outputfile)

import matplotlib.pyplot as plt  # 画出预测结果图
p = data[['y', 'y_pred']].plot(subplots=True, style=['b-o', 'r-*'])
plt.show()

'''
:return:
'''
inputfile = 'data/data3.csv'  # 输入的数据文件

model.fit(data.iloc[:, 0:10], data['y'])
model.coef_  # 各个特征的系数

def huise3():
'''
营业税灰色预测
:return:
'''
inputfile = 'data/data3.csv'  # 输入的数据文件
outputfile = 'data/data3_GM11.xls'  # 灰色预测后保存的路径
data.index = range(1999, 2014)

data.loc[2014] = None
data.loc[2015] = None
l = ['x3', 'x4', 'x6', 'x8']
for i in l:
f = GM11(data[i][np.arange(1999, 2014)].values)[0]
data[i][2014] = f(len(data) - 1)  # 2014年预测结果
data[i][2015] = f(len(data))  # 2015年预测结果
data[i] = data[i].round()  # 取整

data[l + ['y']].to_excel(outputfile)  # 结果输出
print(data)

def yuce3():
'''
营业税神经网络预测模型
:return:
'''
inputfile = 'data/data3_GM11.xls'  # 灰色预测后保存的路径
outputfile = 'data/sales_tax.xls'  # 神经网络预测后保存的结果
modelfile = 'data/3-net.model'  # 模型保存路径
feature = ['x3', 'x4', 'x6', 'x8']  # 特征所在列

data_train = data.loc[range(1999, 2014)].copy()  # 取2014年前的数据建模
data_mean = data_train.mean()
data_std = data_train.std()
data_train = (data_train - data_mean) / data_std  # 数据标准化
x_train = data_train[feature].values  # 特征数据
y_train = data_train['y'].values  # 标签数据

from keras.models import Sequential
from keras.layers.core import Dense, Activation

model = Sequential()  # 建立模型
model.fit(x_train, y_train, nb_epoch=10000, batch_size=16)  # 训练模型，学习一万次
model.save_weights(modelfile)  # 保存模型参数

# 预测，并还原结果。
x = ((data[feature] - data_mean[feature]) / data_std[feature]).values
data[u'y_pred'] = model.predict(x) * data_std['y'] + data_mean['y']
data[u'y_pred'] = data[u'y_pred'].round(2)
data.to_excel(outputfile)

import matplotlib.pyplot as plt  # 画出预测结果图
p = data[['y', 'y_pred']].plot(subplots=True, style=['b-o', 'r-*'])
plt.show()

'''
:return:
'''
inputfile = 'data/data4.csv'  # 输入的数据文件

model.fit(data.iloc[:, 0:10], data['y'])
model.coef_  # 各个特征的系数

def huise4():
'''
企业所得税灰色预测
:return:
'''
inputfile = 'data/data4.csv'  # 输入的数据文件
outputfile = 'data/data4_GM11.xls'  # 灰色预测后保存的路径
data.index = range(2002, 2014)

data.loc[2014] = None
data.loc[2015] = None
l = ['x1', 'x2', 'x3', 'x4', 'x6', 'x7', 'x9', 'x10']
for i in l:
f = GM11(data[i][np.arange(2002, 2014)].values)[0]
data[i][2014] = f(len(data) - 1)  # 2014年预测结果
data[i][2015] = f(len(data))  # 2015年预测结果
data[i] = data[i].round(2)  # 保留两位小数
data[l + ['y']].to_excel(outputfile)  # 结果输出
print(data)

def yuce4():
'''
企业所得税神经网络预测模型
:return:
'''
inputfile = 'data/data4_GM11.xls'  # 灰色预测后保存的路径
outputfile = 'data/enterprise_income.xls'  # 神经网络预测后保存的结果
modelfile = 'data/4-net.model'  # 模型保存路径
feature = ['x1', 'x2', 'x3', 'x4', 'x6', 'x7', 'x9', 'x10']  # 特征所在列

data_train = data.loc[range(2002, 2014)].copy()  # 取2014年前的数据建模
data_mean = data_train.mean()
data_std = data_train.std()
data_train = (data_train - data_mean) / data_std  # 数据标准化
x_train = data_train[feature].values  # 特征数据
y_train = data_train['y'].values  # 标签数据

from keras.models import Sequential
from keras.layers.core import Dense, Activation

model = Sequential()  # 建立模型
model.fit(x_train, y_train, nb_epoch=5000, batch_size=16)  # 训练模型，学习五千次
model.save_weights(modelfile)  # 保存模型参数

# 预测，并还原结果。
x = ((data[feature] - data_mean[feature]) / data_std[feature]).values
data[u'y_pred'] = model.predict(x) * data_std['y'] + data_mean['y']
data[u'y_pred'] = data[u'y_pred'].round()
data.to_excel(outputfile)

import matplotlib.pyplot as plt  # 画出预测结果图
p = data[['y', 'y_pred']].plot(subplots=True, style=['b-o', 'r-*'])
plt.show()

'''
:return:
'''
inputfile = 'data/data5.csv'  # 输入的数据文件

model.fit(data.iloc[:, 0:7], data['y'])
model.coef_  # 各个特征的系数

def huise5():
'''
个人所得税灰色预测
:return:
'''
inputfile = 'data/data5.csv'  # 输入的数据文件
outputfile = 'data/data5_GM11.xls'  # 灰色预测后保存的路径
data.index = range(2000, 2014)

data.loc[2014] = None
data.loc[2015] = None
l = ['x1', 'x4', 'x5', 'x7']
for i in l:
f = GM11(data[i][np.arange(2000, 2014)].values)[0]
data[i][2014] = f(len(data) - 1)  # 2014年预测结果
data[i][2015] = f(len(data))  # 2015年预测结果
data[i] = data[i].round()  # 取整

data[l + ['y']].to_excel(outputfile)  # 结果输出
print(data)

def yuce5():
'''
个人所得税神经网络预测模型
:return:
'''
inputfile = 'data/data5_GM11.xls'  # 灰色预测后保存的路径
outputfile = 'data/personal_Income.xls'  # 神经网络预测后保存的结果
modelfile = 'data/5-net.model'  # 模型保存路径
feature = ['x1', 'x4', 'x5', 'x7']  # 特征所在列

data_train = data.loc[range(2000, 2014)].copy()  # 取2014年前的数据建模
data_mean = data_train.mean()
data_std = data_train.std()
data_train = (data_train - data_mean) / data_std  # 数据标准化
x_train = data_train[feature].values  # 特征数据
y_train = data_train['y'].values  # 标签数据

from keras.models import Sequential
from keras.layers.core import Dense, Activation

model = Sequential()  # 建立模型
model.fit(x_train, y_train, nb_epoch=15000, batch_size=16)  # 训练模型，学习一万五千次
model.save_weights(modelfile)  # 保存模型参数

# 预测，并还原结果。
x = ((data[feature] - data_mean[feature]) / data_std[feature]).values
data[u'y_pred'] = model.predict(x) * data_std['y'] + data_mean['y']
data[u'y_pred'] = data[u'y_pred'].round()
data.to_excel(outputfile)

import matplotlib.pyplot as plt  # 画出预测结果图
p = data[['y', 'y_pred']].plot(subplots=True, style=['b-o', 'r-*'])
plt.show()

def huise6():
'''
政府性基金收入灰色预测
:return:
'''
x0 = np.array([3152063, 2213050, 4050122, 5265142, 5556619, 4772843, 9463330])
f, a, b, x00, C, P = GM11(x0)
print(u'2014年、2015年的预测结果分别为：\n%0.2f万元和%0.2f万元' % (f(8), f(9)))
print(u'后验差比值为：%0.4f' % C)
p = pd.DataFrame(x0, columns=['y'], index=range(2007, 2014))
p.loc[2014] = None
p.loc[2015] = None
p['y_pred'] = [f(i) for i in range(1, 10)]
p['y_pred'] = p['y_pred'].round(2)
p.index = pd.to_datetime(p.index, format='%Y')

import matplotlib.pylab as plt
p.plot(style=['b-o', 'r-*'], xticks=p.index)
plt.show()

if __name__ == '__main__':
# huise()
# yuce()
# huise2()
# yuce2()
# huise3()
# yuce3()
# huise4()
# yuce4()
# huise5()
# yuce5()
huise6()


后续处理
应用模型进行推理。
补充说明
案例参考书《Python数据分析与挖掘实战》，与原书有借鉴，但是较大改动代码，修复了原书一些旧版本代码错误，具体数据集和代码可以查看我的Github，欢迎star或者fork。再次补充，相关数据集的获取直接clone整个仓库即可。
展开全文
• 基于VAR模型的CPI影响因素分析及预测基于VAR模型的CPI影响因素分析及预测基于VAR模型的CPI影响因素分析及预测
• 项目为《Python 数据分析与挖掘实战》第 13 章：财政收入影响因素分析及预测模型。项目实现了因变量的筛选，阐述了灰色预测原理计算过程，实现了灰色预测和神经网络的结合模型


财政收入影响因素分析及预测模型
1. 背景与挖掘目标2. 分析方法与过程2.1 数据探索2.2 模型构建2.3 数据预测

1. 背景与挖掘目标
项目为《Python 数据分析与挖掘实战》第 13 章：财政收入影响因素分析及预测模型，内容参考了书中源代码及 u012063773 的博客挖掘目标为分析地方财政收入的关键特征，筛选特征进行分析建模，然后对财政收入进行预测
2. 分析方法与过程
2.1 数据探索
主要变量描述性分析：可以看出 y 的波动很大
'''原始数据概括性度量'''
import numpy as np
import pandas as pd

inputfile = 'chapter13/demo/data/data1.csv'
r = [data.min(), data.max(), data.mean(), data.std()]
r = pd.DataFrame(r, index=['Min', 'Max', 'Mean', 'STD']).T
r = np.round(r, 2)    # 保留两位小数
r


MinMaxMeanSTDx13831732.007599295.005579519.951262194.72x2181.542110.78765.04595.70x3448.196882.852370.831919.17x47571.0042049.1419644.6910203.02x56212.7033156.8315870.958199.77x66370241.008323096.007350513.60621341.85x7525.714454.551712.241184.71x8985.3115420.145705.804478.40x960.62228.46129.4950.51x1065.66852.56340.22251.58x1197.50120.00103.315.51x121.031.911.420.25x135321.0041972.0017273.8011109.19y64.872088.14618.08609.25
原始数据相关性分析：可以看出 x11 与 y 相关性不大，且为负相关
'''原始数据求解 Pearson 相关系数'''
pear = np.round(data.corr(method = 'pearson'), 2)
pear


x1x2x3x4x5x6x7x8x9x10x11x12x13yx11.000.950.950.970.970.990.950.970.980.98-0.290.940.960.94x20.951.001.000.990.990.920.990.990.980.98-0.130.891.000.98x30.951.001.000.990.990.921.000.990.980.99-0.150.891.000.99x40.970.990.991.001.000.950.991.000.991.00-0.190.911.000.99x50.970.990.991.001.000.950.991.000.991.00-0.180.900.990.99x60.990.920.920.950.951.000.930.950.970.96-0.340.950.940.91x70.950.991.000.990.990.931.000.990.980.99-0.150.891.000.99x80.970.990.991.001.000.950.991.000.991.00-0.150.901.000.99x90.980.980.980.990.990.970.980.991.000.99-0.230.910.990.98x100.980.980.991.001.000.960.991.000.991.00-0.170.900.990.99x11-0.29-0.13-0.15-0.19-0.18-0.34-0.15-0.15-0.23-0.171.00-0.43-0.16-0.12x120.940.890.890.910.900.950.890.900.910.90-0.431.000.900.87x130.961.001.001.000.990.941.001.000.990.99-0.160.901.000.99y0.940.980.990.990.990.910.990.990.980.99-0.120.870.991.00
2.2 模型构建
1. Lasso 变量选择模型（备注：书中使用的是 Adaptive-Lasso 变量选择，这个函数多处查找都没找到，因此直接使用 Lasso，得到的结果和书中略有不同，后面保留的变量暂时以书中的为准）
'''Lasson 变量选择'''
from sklearn.linear_model import Lasso
model = Lasso(alpha=0.1, max_iter=100000)
model.fit(data.iloc[:, 0:13], data['y'])
print(model.coef_)

[-3.88351082e-04 -5.85234238e-01  4.38483025e-01 -1.25563758e-01
1.74517446e-01  8.19661325e-04  2.67660850e-01  2.89486267e-02
-7.55994563e+00 -8.62534215e-02  3.37878229e+00  0.00000000e+00
-7.70629587e-03]

2. 财政收入及各类别收入预测模型：各类别收入预测方法一样，因此以财政收入为例，描述灰色模型的计算过程，然后建立灰色预测与神经网络的组合预测模型，参数设置为误差精度10^-7，学习次数 10000 次，神经元个数为 6 个
灰色预测原理 灰色预测对原始数据进行生成处理如累加，生成有较强规律性的数据序列，然后建立相应的微分方程模型，从而预测事物未来发展趋势的状况。 设变量

X

(

0

)

=

{

X

(

0

)

(

i

)

,

i

=

1

,

2

…

n

}

X^{(0)} = \{X^{(0)}(i), i=1,2\dots n\}

为一非负单调原始数据数列，对

X

(

0

)

X^{(0)}

进行 1 次累加得到

X

(

1

)

=

{

X

(

1

)

(

k

)

,

k

=

1

,

2

…

n

}

X^{(1)} = \{X^{(1)}(k), k=1,2\dots n\}

，对

X

(

1

)

X^{(1)}

建立一阶线性微分方程，其中

a

,

u

a, u

为常数：

d

X

(

1

)

d

t

+

a

X

(

1

)

=

u

\frac{dX^{(1)}}{dt} + aX^{(1)} = u

求解微分方程，得到

X

(

1

)

(

t

)

=

[

∫

e

∫

a

⋅

d

x

⋅

u

⋅

d

x

+

C

]

⋅

∫

e

∫

−

a

⋅

d

x

…

…

…

…

…

…

（1）

X^{(1)}(t) = [\int e^{\int a\cdot dx} \cdot u \cdot dx+ C] \cdot \int e^{\int -a\cdot dx}\text {………………（1）}

⟹

X

(

1

)

(

t

)

=

(

u

a

⋅

e

a

t

+

C

)

⋅

e

−

a

t

…

…

…

…

…

…

（2）

\implies X^{(1)}(t) = (\frac {u}{a} \cdot e^{at} + C) \cdot e^{-at}\text {………………（2）}

将

X

(

1

)

(

t

0

)

X^{(1)}(t_0)

代入（2），求解

C

C

，得到：

C

=

(

X

(

1

)

(

t

0

)

−

u

a

)

⋅

e

−

a

t

0

…

…

…

…

…

…

（3）

C = (X^{(1)}(t_0) - \frac{u}{a}) \cdot e^{-at_0}\text {………………（3）}

将（3）代入（2），得到：

X

(

1

)

(

t

)

=

[

X

(

1

)

(

t

0

)

−

u

a

]

⋅

e

−

a

(

t

−

t

0

)

+

u

a

…

…

…

…

…

…

（4）

X^{(1)}(t) = [X^{(1)}(t_0) - \frac{u}{a}]\cdot e^{-a(t-t_0)} + \frac{u}{a}\text {………………（4）}

对于离散值：

X

(

1

)

(

k

+

1

)

=

[

X

(

1

)

(

1

)

−

u

a

]

⋅

e

−

a

k

+

u

a

…

…

…

…

…

…

（5）

X^{(1)}(k+1) = [X^{(1)}(1) - \frac{u}{a}]\cdot e^{-ak} + \frac{u}{a}\text {………………（5）}

灰色预测中对于

a

,

u

a, u

的求解使用的是最小二乘法。由于：

X

(

1

)

(

k

)

−

X

(

1

)

(

k

−

1

)

=

Δ

X

(

1

)

(

k

)

Δ

k

=

X

(

0

)

(

k

)

,

Δ

k

=

1

…

…

…

…

…

…

（6）

X^{(1)}(k) - X^{(1)}(k-1) = \frac{\Delta X^{(1)}(k)}{\Delta k} = X^{(0)}(k), \Delta k = 1\text {………………（6）}

将（6） 代入微分方程，得到：

X

(

0

)

(

k

)

=

−

a

X

(

1

)

(

k

)

+

u

…

…

…

…

…

…

（7）

X^{(0)}(k) = -aX^{(1)}(k)+u \text {………………（7）}

由于

Δ

X

(

1

)

(

k

)

Δ

k

\frac{\Delta X^{(1)}(k)}{\Delta k}

涉及

X

(

1

)

(

k

)

X^{(1)}(k)

两个时刻的值，因此将（7）中的

X

(

1

)

(

k

)

X^{(1)}(k)

换为两个时刻的均值更为合理，得到：

Y

=

B

U

Y = BU

即：

[

X

(

0

)

(

2

)

X

(

0

)

(

3

)

⋮

X

(

0

)

(

N

)

]

=

[

−

1

2

(

X

(

1

)

(

2

)

+

X

(

1

)

(

1

)

)

1

−

1

2

(

X

(

1

)

(

3

)

+

X

(

1

)

(

2

)

)

1

⋮

⋮

−

1

2

(

X

(

1

)

(

N

)

+

X

(

1

)

(

N

−

1

)

)

1

]

[

a

u

]

…

…

…

…

…

…

（8）

\begin{bmatrix} X^{(0)}(2)\\ X^{(0)}(3)\\ \vdots\\ X^{(0)}(N)\\ \end{bmatrix} = \begin{bmatrix} -\frac{1}{2}(X^{(1)}(2) + X^{(1)}(1)) & 1 \\ -\frac{1}{2}(X^{(1)}(3) + X^{(1)}(2)) & 1 \\ \vdots & \vdots \\ -\frac{1}{2}(X^{(1)}(N) + X^{(1)}(N-1)) & 1 \\ \end{bmatrix} \begin{bmatrix} a \\ u \\ \end{bmatrix}\text {………………（8）}

由最小二乘法，得到：

U

^

=

[

a

^

u

^

]

=

(

B

T

B

)

−

1

B

T

Y

…

…

…

…

…

…

（9）

\hat{U} = \begin{bmatrix} \hat{a} \\ \hat{u} \\ \end{bmatrix} = (B^TB)^{-1}B^TY\text {………………（9）}

将（9）代入（5），得到：

X

(

1

)

(

k

+

1

)

=

[

X

(

1

)

(

1

)

−

u

^

a

^

]

⋅

e

−

a

^

k

+

u

^

a

^

…

…

…

…

…

…

（10）

X^{(1)}(k+1) = [X^{(1)}(1) - \frac{\hat{u}}{\hat{a}}]\cdot e^{-\hat{a}k} + \frac{\hat u}{\hat a}\text {………………（10）}

将（10）代入（6）：

X

(

0

)

(

k

+

1

)

=

(

1

−

e

a

^

)

[

X

(

0

)

(

1

)

−

u

^

a

^

]

e

−

a

^

k

…

…

…

…

…

…

（11）

X^{(0)}(k+1) = (1-e^{\hat{a}})[X^{(0)}(1) - \frac{\hat{u}}{\hat{a}}]e^{-\hat{a}k}\text {………………（11）}

'''灰色预测函数'''
def GM11(x0): #自定义灰色预测函数
import numpy as np
x1 = x0.cumsum() # 生成累加序列
z1 = (x1[:len(x1)-1] + x1[1:])/2.0 # 生成紧邻均值（MEAN）序列，比直接使用累加序列好，共 n-1 个值
z1 = z1.reshape((len(z1),1))
B = np.append(-z1, np.ones_like(z1), axis = 1)    # 生成 B 矩阵
Y = x0[1:].reshape((len(x0)-1, 1))    # Y 矩阵
[[a],[u]] = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Y)    #计算参数
f = lambda k: (x0[0]-u/a)*np.exp(-a*(k-1))-(x0[0]-u/a)*np.exp(-a*(k-2))    #还原值
delta = np.abs(x0 - np.array([f(i) for i in range(1,len(x0)+1)]))    # 计算残差
C = delta.std()/x0.std()
P = 1.0*(np.abs(delta - delta.mean()) < 0.6745*x0.std()).sum()/len(x0)
return f, a, u, x0[0], C, P #返回灰色预测函数、a、b、首项、方差比、小残差概率

'''地方财政收入灰色预测'''
import numpy as np
import pandas as pd

inputfile = 'chapter13/demo/data/data1.csv'
outputfile = 'chapter13/demo/tmp2/data1_GM11.xls'
modelfile = 'chapter13/demo/tmp2/net.model'


x1x2x3x4x5x6x7x8x9x10x11x12x13y03831732181.54448.197571.006212.706370241525.71985.3160.6265.66120.01.029532164.8713913824214.63549.979038.167601.736467115618.251259.2073.4695.46113.51.051652999.7523928907239.56686.449905.318092.826560508638.941468.0681.1681.16108.21.064700888.1134282130261.58802.5910444.608767.986664862656.581678.1285.7291.70102.21.0927694106.0744453911283.14904.5711255.709422.336741400758.831893.5288.88114.6197.71.2008027137.32
data.index = range(1994, 2014)
data.loc[2014] = None
data.loc[2015] = None

# 模型精度评价
l = ['x1', 'x2', 'x3', 'x4', 'x5', 'x7']
for i in l:
GM = GM11(data[i][list(range(1994, 2014))].values)
f = GM[0]
c = GM[-2]
p = GM[-1]
data[i][2014] = f(len(data)-1)
data[i][2015] = f(len(data))
data[i] = data[i].round(2)
if (c < 0.35) & (p > 0.95):
print('对于模型{}，该模型精度为---好'.format(i))
elif (c < 0.5) & (p > 0.8):
print('对于模型{}，该模型精度为---合格'.format(i))
elif (c < 0.65) & (p > 0.7):
print('对于模型{}，该模型精度为---勉强合格'.format(i))
else:
print('对于模型{}，该模型精度为---不合格'.format(i))

data[l+['y']].to_excel(outputfile, )

对于模型x1，该模型精度为---好
对于模型x2，该模型精度为---好
对于模型x3，该模型精度为---好
对于模型x4，该模型精度为---好
对于模型x5，该模型精度为---好
对于模型x7，该模型精度为---好

'''神经网络'''
inputfile2 = outputfile
outputfile2 = 'chapter13/demo/tmp2/revenue.xls'
modelfile = 'chapter13/demo/tmp2/1-net.model'

# 提取数据
feature = list(data2.columns[:len(data2.columns)-1])
train = data2.loc[list(range(1994, 2014))].copy()
mean = train.mean()
std = train.std()
train = (train - mean) / std    # 数据标准化，这里使用标准差标准化
x_train = train[feature].values
y_train = train['y'].values

# 建立神经网络模型
from keras.models import Sequential
from keras.layers.core import Dense, Activation

model = Sequential()
model.fit(x_train, y_train, epochs=10000, batch_size=16)
model.save_weights(modelfile2)

2.3 数据预测
从结果可以看到，1994～2013 预测值和实际值几乎重合，因此数据预测可信度较高
# 预测，并还原结果
x = ((data2[feature] - mean[feature]) / std[feature]).values
data2['y_pred'] = model.predict(x) * std['y'] + mean['y']
data2.to_excel(outputfile2)

import matplotlib.pyplot as plt
%matplotlib notebook
p = data2[['y', 'y_pred']].plot(style=['b-o', 'r-*'])
p.set_ylim(0, 2500)
p.set_xlim(1993, 2016)
plt.show()


源代码及数据文件参考：https://github.com/Raymone23/Data-Mining
展开全文
• SPSS（二）SPSS实现多因素方差分析模型因素方差分析上一篇博客https://blog.csdn.net/LuYi_WeiLin/article/details/89917656已经介绍完毕 这篇博客我们主要来学习多因素方差分析 多因素方差分析，就是同时考虑...
SPSS（二）SPSS实现多因素方差分析模型
单因素方差分析上一篇博客https://blog.csdn.net/LuYi_WeiLin/article/details/89917656已经介绍完毕
这篇博客我们主要来学习多因素方差分析
多因素方差分析，就是同时考虑若干个控制因素的情况下，分别分析它们的改变是否造成观察变量的显著变动
（多个自变量，一个因变量）自变量类型以分类变量为主也可以是连续变量，不过连续变量一般是通过找出它与因变量的回归关系来控制其影响，因变量为连续变量
实例：同时考虑职业（以下三个职业）和性别对收入的影响

以上面这个实例，如何写模型表达式呢？
如果只研究职业的影响

如果只研究性别的影响

同时考虑职业和性别对收入的影响

只考虑主效应，交互项在现实中没有统计学意义（当然在后面模型检验中也会给出其相应的检验P值），可以简写成

方差分析模型常用术语
因素（Factor）简单来说就是自变量
因素是可能对因变量有影响的变量，一般来说，因素会有不止一个水平，而分析的目的就是考察或比较各个水平对因变量的影响是否相同。
水平（Level）简单来说就是自变量的所有取值类型
因素的不同取值等级称作水平，例如性别有男、女两个水平。
单元（Cell）比如下面就是6个单元
单元亦称试验单位（Experimental Unit），指各因素的水平之间的每种组合。指各因素各个水平的组合，例如在研究性别（二水平）、血型（四水平）对成年人身高的影响时，该设计最多可以有2*4＝8个单元。注意在一些特殊的试验设计中，可能有的单元在样本中并不会出现，如拉丁方设计。

元素（Element）
指用于测量因变量值的观察单位，比如研究职业与收入间的关系，月收入是从每一位受访者处得到，则每位受访者就是试验的元素
一个单元格内可以有多个元素，也可以只有一个，甚至于没有元素。
这主要在一些特殊的设计方案中出现，如正交设计
均衡（Balance）
如果在一个实验设计中任一因素各水平在所有单元格中出现的次数相同，且每个单元格内的元素数均相同，则该试验是均衡的，否则，就被称为不均衡。不均衡的实验设计在分析时较为复杂，需要对方差分析模型作特别设置才能得到正确的分析结果。
交互作用（Interaction）
如果一个因素的效应大小在另一个因素不同水平下明显不同，则称为两因素间存在交互作用。当存在交互作用时，单纯研究某个因素的作用是没有意义的，必须分另一个因素的不同水平研究该因素的作用大小。
因素的分类
简单来说因素根据类型不同分为固定因素（分类的自变量）、随机因素（分类的自变量）、协变量（连续的自变量）
固定因素（Fixed Factor）
指的是该因素在样本中所有可能的水平都出现了。从样本的分析结果中就可以得知所有水平的状况，无需进行外推。
绝大多数情况下，研究者所真正关心的因素都是固定因素。
性别：只有两种
疗法：只有三种
随机因素（Random Factor）
该因素所有可能的取值在样本中没有都出现，目前在样本中的这些水平是从总体中随机抽样而来，如果我们重复本研究，则可能得到的因素水平会和现在完全不同！
这时，研究者显然希望得到的是一个能够“泛化”，即对所有可能出现的水平均适用的结果。这不可避免的存在误差，需要估计误差的大小，因此被称为随机因素。
协变量（Covariates）
指对因变量可能有影响，需要在分析时对其作用加以控制的连续性变量
实际上，可以简单的把因素和协变量分别理解为分类自变量和连续性自变量
当模型中存在协变量时，一般是通过找出它与因变量的回归关系来控制其影响

方差分析模型的适用条件
从模型表达式出发得到的提示

各样本的独立性：只有各样本为相互独立的随机样本，才能保证变异的可加性（可分解性）
正态性：即个单元格内的所有观察值系从正态总体中抽样得出
方差齐：各个单元格中的数据离散程度均相同，即各单元格方差齐
在多因素方差分析中，由于个因素水平组合下来每个单元格内的样本量可能非常少，这样直接进行正态性、方差齐检验的话检验效能很低，实际上没什么用，因此真正常见的做法是进行建模后的残差分析

方差分析模型的检验层次
1.对总模型进行检验
2.对模型中各交互效应、主效应进行检验（要先分析交互项）
2.1交互项有统计学意义：分解为各种水平的组合情况进行检验
2.2交互项无统计学意义：进行主效应各水平的两两比较

案例一：固定因素--因变量
超市规模、货架位置与销量的关系
现希望现希望考察对超市中销售的某种商品而言，是否其销售额会受到货架上摆放位置的影响，除此以外，超市的规模是否也会有所作用？甚或两者间还会存在交互作用？
Berenson和Levine（1992）着手研究了此问题，他们按照超市的大小（三水平）、摆放位置（四水平）各随机选取了两个点，记录其同一周内该货物的销量。

数据集如下

1	A	45.0
1	A	50.0
1	B	56.0
1	B	63.0
1	C	65.0
1	C	71.0
1	D	48.0
1	D	53.0
2	A	57.0
2	A	65.0
2	B	69.0
2	B	78.0
2	C	73.0
2	C	80.0
2	D	60.0
2	D	57.0
3	A	70.0
3	A	78.0
3	B	75.0
3	B	82.0
3	C	82.0
3	C	89.0
3	D	71.0
3	D	75.0

第一步：检验一下实验是否为均衡实验
分析--统计描述--交叉表

各单元元素数量一致，所以为均衡实验

第二步：模型检验
分析--一般线性模型--单变量（单个因变量）

结果解读

首先校正模型的SIg.显著性检验小于显著性水平0.05，所以拒绝原假设，所以使用线性来拟合这个模型是有效的
下面的截距、size、position、size*position和下面表达式相对应

先观察主效应显著性为0.663大于显著性水平0.05，所以没有意义，可以剔除重新再做模型，假如不剔除会对后面有意义的产生影响，结果也会不准确
如何剔除（分析--一般线性模型--单变量--设定）

之后重建模型检验得到这样

之后我么就可以看主效应size、position两个固定因素各自的单因素方差分析，进行主效应各水平的两两比较
具体详细就不讲了，大家可以参考我的博客https://blog.csdn.net/LuYi_WeiLin/article/details/89917656

第三步：模型检验
变量的独立性通过，正态检验和方差齐性我们通过残差图来查看
分析--一般线性模型--单变量

一般我们只关心这幅图

如何放大，只显示这张图（双击这张图）
按照下面的选项操作

残差图所有点都在正负3以内，没什么大问题，所以也满足正态检验和方差齐性，所以该题用多因素方差分析模型是适用的

估计边界均值
所谓边际均值,就是在控制了其他因素之后,只是单纯在一个因素的作用下,因变量的变化,在普通的分析中,因变量的变化都是几个因素共同作用的结果.

画出轮廓图

交互项不影响，轮廓图几条应平行

案例二：随机因素--因变量
现希望研究四种广告的宣传效果有无差异，具体的广告类型为：店内展示、发放传单、推销员展示、广播广告。在本地区共有几百个销售网点可供选择，出于经费方面的考虑，在其中随机选择了18个网点进入研究，各网点均在规定长度的时间段内使用某种广告宣传方式，并记录该时间段内的具体销售额。为减小误差，每种广告方式在每个网点均重复测量两次。
数据集如下

1.0	1.0	41.0
2.0	1.0	61.0
2.0	1.0	44.0
3.0	1.0	61.0
3.0	1.0	86.0
4.0	1.0	76.0
4.0	1.0	75.0
5.0	1.0	57.0
5.0	1.0	75.0
6.0	1.0	52.0
6.0	1.0	63.0
7.0	1.0	33.0
7.0	1.0	52.0
8.0	1.0	69.0
8.0	1.0	61.0
9.0	1.0	60.0
9.0	1.0	43.0
10.0	1.0	61.0
10.0	1.0	69.0
11.0	1.0	41.0
11.0	1.0	43.0
12.0	1.0	66.0
12.0	1.0	51.0
13.0	1.0	65.0
13.0	1.0	60.0
14.0	1.0	58.0
14.0	1.0	52.0
15.0	1.0	50.0
15.0	1.0	55.0
16.0	1.0	44.0
16.0	1.0	52.0
17.0	1.0	45.0
17.0	1.0	45.0
18.0	1.0	58.0
18.0	1.0	60.0
1.0	2.0	75.0
1.0	2.0	68.0
2.0	2.0	57.0
2.0	2.0	75.0
3.0	2.0	76.0
3.0	2.0	83.0
4.0	2.0	77.0
4.0	2.0	66.0
5.0	2.0	75.0
5.0	2.0	66.0
6.0	2.0	72.0
6.0	2.0	76.0
7.0	2.0	76.0
7.0	2.0	70.0
8.0	2.0	81.0
8.0	2.0	86.0
9.0	2.0	63.0
9.0	2.0	62.0
10.0	2.0	94.0
10.0	2.0	88.0
11.0	2.0	54.0
11.0	2.0	56.0
12.0	2.0	70.0
12.0	2.0	86.0
13.0	2.0	87.0
13.0	2.0	84.0
14.0	2.0	65.0
14.0	2.0	77.0
15.0	2.0	65.0
15.0	2.0	78.0
16.0	2.0	79.0
16.0	2.0	80.0
17.0	2.0	62.0
17.0	2.0	62.0
18.0	2.0	75.0
18.0	2.0	70.0
1.0	3.0	63.0
1.0	3.0	58.0
2.0	3.0	67.0
2.0	3.0	82.0
3.0	3.0	85.0
3.0	3.0	78.0
4.0	3.0	80.0
4.0	3.0	87.0
5.0	3.0	87.0
5.0	3.0	70.0
6.0	3.0	62.0
6.0	3.0	77.0
7.0	3.0	70.0
7.0	3.0	68.0
8.0	3.0	75.0
8.0	3.0	61.0
9.0	3.0	40.0
9.0	3.0	55.0
10.0	3.0	64.0
10.0	3.0	76.0
11.0	3.0	40.0
11.0	3.0	70.0
12.0	3.0	67.0
12.0	3.0	77.0
13.0	3.0	51.0
13.0	3.0	42.0
14.0	3.0	61.0
14.0	3.0	71.0
15.0	3.0	75.0
15.0	3.0	65.0
16.0	3.0	64.0
16.0	3.0	78.0
17.0	3.0	50.0
17.0	3.0	37.0
18.0	3.0	62.0
18.0	3.0	83.0
1.0	4.0	69.0
1.0	4.0	54.0
2.0	4.0	51.0
2.0	4.0	78.0
3.0	4.0	100.0
3.0	4.0	79.0
4.0	4.0	90.0
4.0	4.0	83.0
5.0	4.0	77.0
5.0	4.0	74.0
6.0	4.0	60.0
6.0	4.0	69.0
7.0	4.0	33.0
7.0	4.0	68.0
8.0	4.0	79.0
8.0	4.0	75.0
9.0	4.0	73.0
9.0	4.0	65.0
10.0	4.0	100.0
10.0	4.0	70.0
11.0	4.0	61.0
11.0	4.0	53.0
12.0	4.0	68.0
12.0	4.0	73.0
13.0	4.0	68.0
13.0	4.0	79.0
14.0	4.0	63.0
14.0	4.0	66.0
15.0	4.0	83.0
15.0	4.0	65.0
16.0	4.0	76.0
16.0	4.0	81.0
17.0	4.0	73.0
17.0	4.0	57.0
18.0	4.0	74.0
18.0	4.0	65.0
首先还是看实验是否均衡

所以为均衡实验，因为网点是随机抽取的，所以不能用固定因素，要用随机因素

有随机因素就没有总的模型检验了，该因素所有可能的取值在样本中没有都出现，总的表达式无法表达出来，所以就没有总的模型检验

模型检验
残差分析

总体在正负3以内，没超过正负4，还行

看其轮廓图


展开全文
• 就复杂技术系统中可能出现的人因失误在宏观层次上做了...从个体层、班组层、组织层3个层次分析人因失误的原因因素，建立了人因失误原因因素控制模型。基于此模型对研究的系统进行屏障分析，建立了屏障分析层次模型
• 4 10 财政收入影响因素分析及预测模型 10.1背景与挖掘目标  本案例通过研究发现影响目前以及未来地方财源建设的因素，并对其进行深入分析，提出对该市地方财源优化的具体建议，供政府决策参考，同时为其他发展较...
• 第单因素模型因素模 013-7-19 教学目的及要求 掌握因素模型是根据收益生成过程通过回 归分析建立的收益和风险关系的资产定价 模型 2认识因素模型与资本资产定价模型的关系 了解因素模型是实践中具有操作性的替代 ...
• Cox比例风险回归模型因素因素生存分析 欢迎使用Markdown编辑器 Cox比例风险回归模型临床应用非常广泛，Cox分析得到的结果是可以直接运用到临床应用的，所以这个分析对癌症临床诊断有非常关键的作用，检测高低...
• 论文研究-DENISON经济增长因素分析模型化与经济增长方式.pdf, 丹尼森的经济增长因素分析是对经济增长理论的重要贡献, 但他没有提供模型化方法。本文提出了对丹尼森的...
• 财政收入影响因素分析及预测模型 电力窃电漏电用户 自动识别 ■电商产品评论数据情感分析 电子商务网站用户行为分析及 服务推荐 ■航空公司客户价值分析 航空公司客
• 描述：采用数据挖掘算法中人工神经网络算法，首先用Adaptive—Lasso方法找出相关性最大的因素，根据现有的数据建立神经网络模型，然后对未知属性做出预测。代码：import pandas as pd def Data_pro(feature,data): ...
• 基于VAR模型的辽宁省能源消耗影响因素分析，董琨，谭飞，本文构建了辽宁省能源消耗影响因素的VAR模型，并应用辽宁省1978-2010年间的时间序列数据进行了实证检验。结果表明，辽宁省能源消耗与
• 通过复合分析方法建立煤矿底板突水模型，对突水模型的不确定性进行分析，衡量复合分析中各因素对底板突水危险性分区结果的影响，并通过灵敏度分析对引起分区面积变化的因素进行排序，实验得出等效厚度的计算是影响...
• 基于ISM模型的中小企业融资能力影响因素分析，王永勤，李国栋，中小企业融资受多方面因素的影响，运用系统工程中的解释结构模型（ISM）对中小企业融资能力影响因素系统进行分析，建立了7级多层�
• 基于多元回归模型的我国GDP增长的影响因素分析
• 基于ARDL模型的我国房地产市场需求影响因素分析，李春燕，熊剑，本文基于ARDL模型，利用1998~2011年的月度数据，对我国房地产市场有效需求的影响因素进行了分析，结果表明：房屋销售价格对房地产需�
• 7.1.3 单因素方差分析模型 7.2 双因素方差分析 7.2.2 双因素方差分析的数据结构 7.2.3 因素方差分析模型 1. 无交互作用的双因素方差分析模型 2. 有交互作用的双因素方差分析模型 7.3 一元线性回归分析 相关关系的...
• 基于模型选择和灰色理论的税收影响因素分析和预测研究，杨虎，杨娟，税收收入的影响因素分析和预测结果是国家相关部门对其进行科学决策和管理的重要依据。实际中税收收入的影响因素繁芜众多,造成管�
• 基于调查数据，采用累积Logit模型对影响驾驶人路径改换行为的影响因素进行综合分析，通过理论与实证分析分析影响路径改换行为的主要因素.首先采用SP调查的方式，用离散选择分析法对影响路径改换的因素进行多变量...
• 注：本文是在利用sas软件做X-11过程分析的学习笔记 代码及原始文档见上传的资源 具体过程如下：
• 模型分析预紧力的产生机理及其影响因素，王晓卿，陶春燕，本文分别建立了预紧力产生的微观模型和宏观模型,模型分析后得出了相同的预紧力影响因素，即安装锚杆时的扭矩、螺纹副摩擦系数、�
• 2月3日召开的中央政治局常委会会议强调，... 大数据分析模型应该强化对疫情数据的归集和数据分析，不断优化疫情防控大数据分析模型，对风险人群的流动做到最大限度的监控，辅助卫生健康部门做好对疫情的防控工作。

...